pytest [email protected] ()

[Explicación oficial]

@_with_exception(XFailed)
def xfail(reason: str = "") -> "NoReturn":
	__tracebackhide__ = True
	    raise XFailed(reason)

Imperativamente xfail una función de prueba o configuración en ejecución con el motivo dado.
Esta función debe llamarse solo durante la prueba (configuración, llamada o desmontaje).
… Nota:
Es mejor usar el pytest.mark.xfail refmarcador : ref: cuando
sea ​​posible para declarar una prueba a ser xfailed bajo ciertas condiciones,
como errores conocidos o características faltantes.
"" "
[Traducción]
Forzar el uso de una razón dada para xfail una prueba en ejecución o una función de configuración.
Esta función solo se puede llamar durante la prueba (configuración, llamada o desmantelamiento) .
Nota:
mejor usar: pytest.mark.xfail referencias de archivo `marcador cuando
se puede declarar la prueba falla bajo ciertas condiciones
tales como un error conocido o característica que falta.

Una explicación de un grandullón: no he encontrado el código fuente que dijo el grandullón.
Otra forma de usar xfai es la etiqueta @ pytest.mark.xfail, lo que significa: se espera que el caso de prueba falle, pero no afectará la ejecución del caso de prueba; si la ejecución del caso de prueba falla, el resultado es xfailed (no hay información de error de visualización adicional), si el caso de uso se ejecuta con éxito, el resultado es la
condición xpassed : si se cumple la condición, se marca la falla de ejecución del caso de uso, el valor predeterminado es Verdadero
motivo: el caso de uso se marca como el motivo del error esperado, el valor predeterminado es None
aumenta: Especifique una clase de excepción o una clase de excepción La tupla indica que se espera que el caso de uso arroje estas excepciones; si el caso de uso falla no debido a estas excepciones, el caso de uso se marcará como
ejecución FAILED : si se ejecuta, si es Verdadero, se ejecutará, si es Falso, el caso de uso no se ejecutará directamente marcado como XFAIL, el valor predeterminado es Verdadero
estricto: Falso si el caso de uso se ejecuta correctamente, xpassed, si la ejecución falla, es xfailed; si el caso verdadero se ejecuta con éxito, se marca como fallido, entonces es xfailed, el valor predeterminado es None

En el proceso de depuración de casos de prueba, debe usar esta función para marcar los casos de prueba de las funciones que no se han implementado y los errores que no se han corregido. Una vez completada la ejecución, se mostrará xpass en el resultado, como se muestra en los resultados de ejecución de test_case_1, 12 de la siguiente manera:

# coding=utf-8
import pytest

@pytest.fixture()
def test_case_3():
    print('---3号用例完成---')

@pytest.fixture()
def test_case_4():
    print('---4号用例完成---')

@pytest.fixture()
def test_case_5():
    print('---5号用例完成---')

@pytest.fixture()
def test_case_6():
    print('---6号用例完成---')

@pytest.fixture()
def test_case_7():
    print('---7号用例完成---')

@pytest.fixture()
def test_case_8():
    print('---8号用例完成---')

# (1)这里按照【从下到上的顺序】,执行优先级是3、4、5
@pytest.mark.usefixtures('test_case_5')
@pytest.mark.usefixtures('test_case_4')
@pytest.mark.usefixtures('test_case_3')
class Testlogin001:

    # 被pytest.fixture()装饰的函数,函数名可以作为变量传递给测试用例,最终在执行测试用例之前执行这个装饰过的函数
    def test_case_1(self, test_case_8):
        print('---1号用例完成---')

    # # (2)这里按照调用了前面的函数test_case_6,局部的调用,执行优先级是最高的。
    # @pytest.mark.usefixtures('test_case_7')
    # @pytest.mark.usefixtures('test_case_6')
    # def test_case_2(self):
    #     print('---2号用例完成---')
    #
    # # 单参数单值
    # @pytest.mark.parametrize('arg', [1])
    # def test_case_9(self, arg):
    #     print("传入的值为:{}".format(arg))
    #     assert arg == 1
    #
    # # 单参数多值
    # @pytest.mark.parametrize('arg',['abc',1,{'a':1,'b':3},(4,5)])
    # def test_case_10(self, arg):
    #     print(f"传入的值为:{arg}")
    #
    # # 多参数多值
    # @pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("5-2", 3), ("5*2", 10)])
    # def test_case_11(self, test_input, expected):
    #     print(f"原值:{test_input} 期望值{expected}")
    #     assert eval(test_input) == expected

    @pytest.mark.xfail()
    def test_case_12(self):
        print('---12号用例完成---')

if __name__ == "__main__":
    pytest.main(['-vs', 'test_1.py'])


collecting ... collected 2 items
test_1.py::Testlogin001::test_case_1 
启动浏览器
---进入要执行模块的的界面---
---3号用例完成---
---4号用例完成---
---5号用例完成---
---8号用例完成---
---1号用例完成---
PASSED
退出浏览器

test_1.py::Testlogin001::test_case_12 
启动浏览器
---进入要执行模块的的界面---
---3号用例完成---
---4号用例完成---
---5号用例完成---
---12号用例完成---
XPASS
退出浏览器


--------- generated html file: file://D:\se_frame\Reports\report.html ---------
======================== 1 passed, 1 xpassed in 0.13s =========================

Process finished with exit code 0

Supongo que te gusta

Origin blog.csdn.net/weixin_45451320/article/details/113855339
Recomendado
Clasificación