pytest [email protected] ()

Introducción a varias funciones principales de
pytest : @ pytest.yield_fixture ()
@ pytest.mark.xfail ()
@ pytest.mark.skipif

(1) @ pytest.fixture () 【Utiliza principalmente dos parámetros: scope \ autouse】

Definición de función @ pytest.fixture: El
decorador de accesorios se usa para marcar funciones fijas de fábrica, que se activarán y ejecutarán primero cuando otras funciones, módulos, clases o todo el proyecto lo llamen, y generalmente se usan para completar el procesamiento preestablecido y las operaciones repetidas

Accesorio (alcance = 'función', parámetros = Ninguno, uso automático = Falso, ids = Ninguno, nombre = Ninguno), interpretación del código fuente: función
predeterminada del alcance, hay 4 niveles: función, clase, módulo, paquete / sesión.
El uso automático está desactivado de forma predeterminada, accesorio (uso automático = Verdadero): de forma predeterminada, la función decorada se ejecuta en cada caso de prueba.
params es un parámetro formal, puede pasar varios
nombres de parámetros , que se usa menos y no se interpretará temporalmente.

@ pytest.fixture function 3 funciones principales:
Función 1 : Función de decoración _ mira directamente la llamada de test_case_8 en el código, la función marcada por el accesorio, el nombre de la función se puede poner en la función que se ejecutará como un parámetro de entrada. La función actual ejecutará primero la función marcada. Similar a la herencia de clases.

# 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号用例完成---')

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

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

    # 被pytest.fixture()装饰的函数,函数名可以作为变量传递给测试用例,最终在执行测试用例之前执行这个装饰过的函数
    def test_case_1(self, test_case_8):
        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'])
    
test_1.py::Testlogin001::test_case_1 
启动浏览器
---进入要执行模块的的界面---
---3号用例完成---
---4号用例完成---
---5号用例完成---
---8号用例完成---
---1号用例完成---
PASSED
退出浏览器

Función 2: Ejecuta automáticamente la función marcada. [Las funciones marcadas por dispositivos no se ejecutan automáticamente de forma predeterminada ]
Aquí generalmente se colocan en el archivo conftest.py. Antes de que se ejecute el caso de prueba, cada caso de prueba iniciará automáticamente el navegador y entrará automáticamente en la interfaz del módulo actual.

import pytest
 @pytest.fixture(autouse=True) # 设置为默认运行
 def before():
     print("------->before")
     
 class Test_ABC:
     def setup(self):
         print("------->setup")
     def test_a(self):
         print("------->test_a")
         assert 1
         
 if __name__ == '__main__':
     pytest.main("-s  test_abc.py")

archivo conftest.py

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

logger = logging.getLogger()

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

Función 3: establecer el alcance

La función fixture se usa junto con el archivo conftest.py Use escenarios:
@ pytest.fixture () La función decorada se ejecuta una vez antes de cada caso de prueba [Si desea reiniciar el navegador para cada caso de prueba, ingrese el Para el interfaz de prueba, use esto]
@ pytest.fixture (alcance = 'clase') La función decorada se ejecuta una vez antes que la clase del caso de prueba.
@ pytest.fixture (scope = 'modlue') La función decorada se ejecuta una vez antes del archivo py.
@ pytest.fixture (alcance = 'paquete') La función decorada se ejecuta una vez en el directorio actual.

Supongo que te gusta

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