Explicación detallada de pytest framework _conftest.py

Además:
Inserte la descripción de la imagen aquí
como se muestra en la figura, cuando ejecuta el archivo de caso de prueba test_1.py, la secuencia de ejecución del marco de pytest:
(1) Primero identifique el archivo de prueba en el traje y ejecútelo
(2) Luego identifique el archivo de prueba en test_1 y
ejecútelo (3) Ejecute el archivo test_1.py

Introducción a conftest.py:
(1) Se utiliza comúnmente para tratar las condiciones previas de los casos de prueba. Y marque algunas funciones con accesorios, que pueden ser llamados por el archivo test_1.py del caso de prueba.
(2) El nombre del archivo está codificado por el framework pytest. El contenido de test_1 y 2 en el archivo conf en el traje se ejecutará, y el archivo conf en test_1 solo se ejecutará cuando se ejecute test_1.
(3) No es necesario importar este archivo en el archivo test_1.py, pytest lo ejecuta automáticamente.
(4) El contenido del archivo

archivo conftest.py en traje

# coding=utf-8
import pytest
from selenium import webdriver


@pytest.fixture(autouse=True)
def project_session_start():
    print('\n启动浏览器')
    yield
    print('\n退出浏览器')

conf archivo en test_1:

# coding=utf-8
import pytest
from selenium import webdriver
import logging

logger = logging.getLogger()

@pytest.fixture(autouse=True)
def start_module():
    print('---进入要执行模块的的界面---')

Test_1, código py y la situación después de la ejecución:

# coding=utf-8
import pytest

@pytest.fixture()
def test_case_3():
    print('---3号用例完成---')

@pytest.fixture()
def test_case_4():
    print('---4号用例完成---')

@pytest.fixture()
def test_case_5():
    print('---5号用例完成---')

@pytest.fixture()
def test_case_6():
    print('---6号用例完成---')

@pytest.fixture()
def test_case_7():
    print('---7号用例完成---')

# (1)这里按照【从下到上的顺序】,执行优先级是3、4、5
@pytest.mark.usefixtures('test_case_5')
@pytest.mark.usefixtures('test_case_4')
@pytest.mark.usefixtures('test_case_3')
class Testlogin001:

    def test_case_1(self):
        print('---1号用例完成---')

    # (2)这里按照调用了前面的函数test_case_6,局部的调用,执行优先级是最高的。
    @pytest.mark.usefixtures('test_case_7')
    @pytest.mark.usefixtures('test_case_6')
    def test_case_2(self):
        print('---2号用例完成---')


if __name__ == "__main__":
    pytest.main(['-vs', 'test_1.py'])

C:\Python39\python.exe D:/se_frame/Cases/MapAaaCases/test_1.py
collecting ... collected 2 items

test_1.py::Testlogin001::test_case_1 
启动浏览器
---进入要执行模块的的界面---
---3号用例完成---
---4号用例完成---
---5号用例完成---
---1号用例完成---
PASSED
退出浏览器

test_1.py::Testlogin001::test_case_2 
启动浏览器
---进入要执行模块的的界面---
---6号用例完成---
---7号用例完成---
---3号用例完成---
---4号用例完成---
---5号用例完成---
---2号用例完成---
PASSED
退出浏览器

Supongo que te gusta

Origin blog.csdn.net/weixin_45451320/article/details/113836073
Recomendado
Clasificación