7-conftest.py y accesorio

Directorio de artículos

一, conftest.py

conftest.py es un archivo de configuración dedicado a almacenar dispositivos. Puede poner algunas operaciones previas generales en él, como iniciar sesión, obtener algunos parámetros, etc.

Nota:
1. El nombre debe ser conftest.py
2. Alcance: solo funciona para el paquete actual
3. Cuando hay varios conftest.py en el proyecto
, tendrá efecto de afuera hacia adentro y de arriba hacia abajo . Pytest ejecutará conftest por defecto Fixture en .py
5. Al ejecutar casos de prueba, conftest.py se puede utilizar directamente sin importación manual

二 、 accesorio

Los accesorios se pueden ejecutar antes de que se ejecuten ciertos casos de uso específicos, que es más flexible que la configuración / desmontaje en unittest.
1. Explicación detallada del código fuente del dispositivo

accesorio (alcance = 'función', parámetros = Ninguno, uso automático = Falso, ids = Ninguno, nombre = Ninguno)

① Alcance: hay cuatro niveles de parámetros, a saber:

  1. función: el valor predeterminado , bajo el alcance de la prueba, cada método de prueba se ejecutará una vez antes de ejecutarse
  2. clase: en el ámbito de la prueba, cada clase de prueba se ejecutará una vez antes de ejecutarse
  3. módulo: en el ámbito de la prueba, cada módulo de prueba se ejecutará una vez antes de ejecutarse
  4. sesión: bajo el alcance de la prueba, cada paquete se ejecutará una vez antes de ejecutarse

El alcance del parámetro de alcance controla el alcance del accesorio: sesión> módulo> clase> función

② params: lista de parámetros opcionales, hará que múltiples parámetros llamen a la función del dispositivo y todas las pruebas la utilicen

③ autouse: el valor predeterminado es False , y el accesorio debe ser invocado manualmente por el caso de uso; si es Verdadero, todos los casos de prueba en el alcance invocarán automáticamente el accesorio

④ ids: parte del ID de prueba de parámetros. De lo contrario, se generará automáticamente a partir de parámetros.

⑤ nombre: Predeterminado: el nombre del decorador Se recomienda escribir un nombre diferente para que las luminarias del mismo módulo se llamen entre sí.


2. Usar habilidades:

① Use el nombre de la función para llamar directamente, pero no hay valor de retorno

#conftest.py文件
import pytest
@pytest.fixture()
def login():
    print('登录')

#test.py文件
import pytest
@pytest.mark.usefixtures('login')
def test1():
    print("test1里的用例")
 
if __name__ == '__main__':
    pytest.main(["-s", "test.py"])

Resultados del:

test.py 登录
test1里的用例
.

② La función tiene un valor de retorno y el nombre de la función debe pasarse como parámetro

#conftest.py文件
import pytest
@pytest.fixture()
def login():
    a = 1
    b = 2
    return a,b

#test.py文件
import pytest
def test1(login):
    print(login[0])  #返回login函数第一个值
    print("test1里的用例")
 
if __name__ == '__main__':
    pytest.main(["-s", "test.py"])

Resultados del:

test.py 1
test1里的用例
.

③ Cuando varios dispositivos se llaman entre sí, solo necesita pasar el nombre de la función, similar a ②

#conftest.py文件
@pytest.fixture(scope='class')
def a_init():       
    a = 1
    return a

@pytest.fixture(scope='class')
def n_init(a_init):    
    b = a_init+1
    return b

Supongo que te gusta

Origin blog.csdn.net/weixin_45128456/article/details/113181809
Recomendado
Clasificación