Qué es conftest.py
Puede entenderse como un archivo de configuración dedicado a almacenar accesorios
escenario de desarrollo real
Todos los casos de uso de múltiples archivos de casos de prueba (test_*.py) necesitan usar la función de inicio de sesión como una operación previa , por lo que la función de inicio de sesión no se puede escribir en un determinado archivo de caso de uso.
¿Cómo resolver el problema del escenario anterior?
El surgimiento de conftest.py es para resolver los problemas anteriores y administrar algunos accesorios globales por separado.
Consideraciones sobre el dispositivo de configuración de conftest.py
- pytest leerá todos los accesorios en conftest.py por defecto
- El nombre del archivo conftest.py es fijo y no se puede cambiar
- conftest.py solo tiene efecto para todos los casos de prueba bajo el mismo paquete
- Diferentes directorios pueden tener su propio conftest.py, y un proyecto puede tener múltiples conftest.py
- No es necesario importar manualmente conftest.py en el archivo de caso de prueba, pytest encontrará automáticamente
Un pequeño caso en un proyecto real
en el directorio raíz
código conftest.py
El concurso de nivel superior generalmente escribe accesorios globales y puede inicializar el controlador en la Web y la aplicación [en la automatización de la interfaz de usuario]
import pytest
@pytest.fixture(scope="session")
def login():
print("====登录功能,返回账号,token===")
name = "testyy"
token = "npoi213bn4"
yield name, token
print("====退出登录!!!====")
@pytest.fixture(autouse=True)
def get_info(login):
name, token = login
print(f"== 每个用例都调用的外层fixture:打印用户token: {token} ==")
código test_1.py
def test_get_info(login):
name, token = login
print("***基础用例:获取用户个人信息***")
print(f"用户名:{name}, token:{token}")
código 06_run.py
import pytest
if __name__ == '__main__':
pytest.main(["-s", "../06conftest/"])
En el directorio test_51job
código conftest.py
import pytest
@pytest.fixture(scope="module")
def open_51(login):
name, token = login
print(f"###用户 {name} 打开51job网站###")
código test_case1.py
def test_case2_01(open_51):
print("51job,列出所有职位用例")
def test_case2_02(open_51):
print("51job,找出所有python岗位")
En el directorio test_toutiao
El paquete no tiene el archivo __init__.py ni el archivo conftest.py
def test_no_fixture(login):
print("==没有__init__测试用例,我进入头条了==", login)
En el directorio test_weibo
código conftest.py
import pytest
@pytest.fixture(scope="function")
def open_weibo(login):
name, token = login
print(f"&&& 用户 {name} 返回微博首页 &&&")
código test_case1.py
class TestWeibo:
def test_case1_01(self, open_weibo):
print("查看微博热搜")
def test_case1_02(self, open_weibo):
print("查看微博范冰冰")
resultado de la operación