Marco de prueba de Pytest (5) --- Use xfail para marcar casos de uso como fallidos

1. Introducción

Cuando sabemos que este caso de uso fallará por una razón exacta, como que la función cubierta por el caso de uso no se ha implementado, o hay un error de bloqueo conocido en esta función, podemos usar xfail para marcarlo.

 

2. Cómo usar xfail

1. @ pytest.mark.xfail decorador

Puede usar @ pytest.mark.xfail para marcar un caso de uso para indicar que se espera que falle la ejecución de este caso de uso. El caso de uso marcado se ejecutará normalmente, pero la información de la pila no se mostrará cuando falle. El resultado final tiene dos: cuando falla la ejecución del caso de uso (XFAIL: falla que cumple con las expectativas), cuando la ejecución del caso de uso es exitosa ( XPASS: éxito que no cumple con las expectativas)

pytest.mark.xfail (condición = Ninguno, *, motivo = Ninguno, aumenta = Ninguno, ejecutar = Verdadero, estricto = Falso)

  • El parámetro de posición de condición, el valor predeterminado es Ninguno, lo que significa que el caso de uso se marca solo cuando se cumple la condición;

  • El parámetro de palabra clave de motivo, el valor predeterminado es Ninguno, lo que significa que se puede especificar una cadena de motivo para explicar el motivo para marcar el caso de uso;

  • parámetro de palabra clave estricta, el valor predeterminado es Falso

Cuando estricto = Falso, si la ejecución del caso de uso falla, el resultado se marca como XFAIL, lo que indica que el error esperado; si la ejecución del caso de uso es exitosa, el resultado se marca como XPASS, lo que indica que no cumple el éxito esperado;

Cuando es estricto = Verdadero, si el caso de uso se ejecuta con éxito, el resultado se marcará como FALLIDO;

  • aumenta el parámetro de palabra clave, el valor predeterminado es Ninguno

Se puede especificar como una clase de excepción o una tupla de múltiples clases de excepción, lo que indica que esperamos que el caso de uso informe la excepción especificada;

Si la falla del caso de uso no es causada por la excepción esperada, pytest marcará el resultado de la prueba como FALLIDO;

  • Ejecute el parámetro de palabra clave, el valor predeterminado es True:

Cuando run = False, pytest ya no ejecutará el caso de prueba y marcará directamente el resultado como XFAIL;

 

2. método pytest.xfail

También podemos usar el método pytest.xfail para marcar directamente el resultado del caso de uso como XFAIL durante la ejecución del caso de uso y omitir el resto:

def test_aaa():

    if not meet():

        pytest.xfail("failing configuration (but should work)")

 

3. Úselo con el decorador @ pytest.mark.parametrize

​import pytest

import sys

@pytest.mark.parametrize(('n', 'expected'),

                         [(2, 1),

                         pytest.param(2, 1, marks=pytest.mark.xfail(), id='XPASS'),

                         pytest.param(0, 1, marks=pytest.mark.xfail(raises=ZeroDivisionError), id='XFAIL'),

                         pytest.param(1, 2, marks=pytest.mark.skip(reason='无效的参数,跳过执行')),

                         pytest.param(1, 2, marks=pytest.mark.skipif(sys.version_info <= (3, 8), reason='请使用3.8及以上版本的python。'))])

def test_bbb(n, expected):

    assert 2 * n == expected

​

 

Tres, método de ejecución

Pytest no muestra la información detallada del caso de uso de xfail por defecto, podemos hacer que se muestre a través de la opción -r;

Por lo general, una letra representa un tipo, las reglas específicas son las siguientes:

o (Todo

Por lo tanto, utilizando el método pytest -rxX para ejecutar, el resultado se puede mostrar como información detallada de los casos de uso de XFAIL y XPASS.

 

 

Supongo que te gusta

Origin blog.csdn.net/wxt_hillwill/article/details/114734729
Recomendado
Clasificación