Serie Pytest (accesorio) - explicación detallada de conftest.py

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 

Supongo que te gusta

Origin blog.csdn.net/qq_41663420/article/details/129804152
Recomendado
Clasificación