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:
- función: el valor predeterminado , bajo el alcance de la prueba, cada método de prueba se ejecutará una vez antes de ejecutarse
- clase: en el ámbito de la prueba, cada clase de prueba se ejecutará una vez antes de ejecutarse
- módulo: en el ámbito de la prueba, cada módulo de prueba se ejecutará una vez antes de ejecutarse
- 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