pytest framework_introduction, pytest.main ()

Propósito:
(1) Tener un concepto de pytest, y qué está haciendo
(2) Dominar el conocimiento básico de pytest [afilar cuchillos y no cortar madera por error]
(3) La práctica es el único criterio para probar la verdad, simplemente presione el código, usted Diga lo que diga, está mal, ¡solo guárdelo!

¿Qué hace el marco de pruebas unitarias?
(1) Encuentre archivos de casos de prueba de varios archivos
(2) Ejecute de acuerdo con ciertas reglas y genere resultados
(3) Determine los resultados esperados a través de afirmaciones
(4) Progreso de la prueba estadística, que requiere mucho tiempo, tasa de aprobación y genera informes de prueba

Introducción a pytest:
(1) Un marco de prueba unitario muy maduro que se puede combinar con selenio, solicitudes y appium para realizar automatización web, automatización de interfaces y automatización de aplicaciones.
(2) pytest es compatible con el marco unittest (rough house), y el marco unittest no necesita reescribir el código para migrar el marco pytest.
(3) Se pueden omitir los casos de prueba, reintentar los casos fallidos
(4) y atraer a generar hermosos informes de prueba, como: capturas de pantalla incorrectas
(5) integración continua con jenkins
(6) pytest (sala de tapa dura, implementación de más de 300 complementos ) Operación práctica)
pytest-html genera un informe de prueba html
pytest-xdist caso de prueba ejecución distribuida
orden de
pytest orden de ejecución de caso de prueba pytest-rerunfailures vuelve a ejecutar
allure-pytest después de que el caso de prueba falla allure-pytest Hermoso informe de prueba se
instala y se coloca de una vez en requisitos En .txt, a través de la columna Terminal pip install -r requirements.txt, el contenido del archivo:

pytest-html
pytest-xdist
orden de
pytest pytest-rerunfailures
allure-pytest
pytest

Pytest reglas de escritura?
La capa del caso de prueba comienza con la prueba, no preguntes, comienza con la prueba. Los archivos, las clases y los métodos comienzan con test, y la primera letra de la clase está en mayúscula de forma predeterminada. ¿Por qué me estás preguntando? ? ? Esta es la lógica del código Pytest. Si no comienza con esto, ¿dónde puede encontrar el código sus casos de prueba? Hay otro, que no puede tener un método init.
Inserte la descripción de la imagen aquí
modo de ejecución pytest

suit.py

# coding=utf-8
import pytest

    """
    pytest参数详解:
    -s 表示输出陶氏信息,包括print打印的信息
    -v 表示更相信的信息
    -vs 一般一起用
    -n 支持分布式运行测试用例
    -k 根据用例的部分字符串指定测试用例
    --html 路径 生成测试报告
    """

# 测试用例执行方式1:Terminal栏目输入:pytest -vs test_2.py

# 测试用例执行方式2:这里的执行跟你在哪个文件执行这个代码没有毛关系
if __name__ == '__main__':

    # # 执行测试用例目录(TestCase)下,所有test开头的.py文件
    pytest.main(['-vs'])
    pytest.main()

    # 执行测试用例目录(TestCase)下test_1.py的文件,这个文件跟test_2在一层
    pytest.main(['-vs','test_2.py'])

    # 执行interface_testcase目录下面的test开头的用例
    pytest.main(['-vs', 'D:\\se_frame\\interface_testcase'])

    # 失败的用例再跑2次,运用插件:pytest_rerunfailures
    pytest.main(['-vs', 'test_2.py', '--reruns=2'])

    # 执行下test_2.py下的testlogin类下的test_case1方法
    pytest.main(['-vs', 'test_2.py::Testlogin::test_004'])

    # 分布式运行,执行2个用例。运用插件:pytest-xdist
    pytest.main(['-vs', 'test_2.py', '-n=2'])

    # 根据用例的部分字符串指定测试用例,ao是用例的方法名内容
    pytest.main(['-vs', 'test_2.py', '-k=ao'])
    pytest -vs test_2.py -k "ao"

    """
    分布式结果是这样的:
    test_2.py::Testlogin::test_case1 
    test_2.py::Testlogin::test_case2 
    [gw1] PASSED test_2.py::Testlogin::test_case2 
    [gw0] PASSED test_2.py::Testlogin::test_case1 
    test_2.py::Testlogin::test_case4 
    test_2.py::Testlogin::test_case3 
    [gw0] PASSED test_2.py::Testlogin::test_case3 
    [gw1] FAILED test_2.py::Testlogin::test_case4 
    """

# 测试用例执行方式3:通过pytest.ini运行,核心配置文件,
    # 位置:项目根目录,
    # 编码格式:ANSI编码(notepad++转格式)
    # 运行规则:主函数、命令行执行用例都会读取配置文件
    # 文件内容:干掉标注,转成ANSI格式
    """
    [pytest]
    # pytest执行用例的参数,空格分开,这里加了-vs,你用pytest执行用例,就不用加了
    addopts = -vs --html ./report/report.html
    # 测试用例文件夹,可以自己配置
    testpaths = D:\se_frame\TestCases
    # 配置测试搜索的测试类名
    python_classes = Test*
    # 配置测试搜索的测试函数名
    python_functions = test
    # 分模块执行用例
    markers = 
        smoke:冒烟用例
        usermange:用户管理模块
        product:产品模块
    """

# 执行用例的顺序是:
    # 按照@pytest.mark.run(order=2)这个order的值来排序

# 如何执行冒烟用例?分模块执行?分接口?分web?>>>配置文件
    # (1)用例上加标记 @pytest.mark.xxx  例如冒烟用例:@pytest.mark.smoke
    # (2)配置文件进行配置
    # # 执行了冒烟用例、product模块
    # pytest.main(['-vs', 'test_2.py', '-m= smoke or product'])

# 生成测试报告?
    第一种报告:pytest.ini加--html 路径。运行用例即可生成测试报告,举例如下:
    pytest配置文件详解:https://blog.csdn.net/weixin_45451320/article/details/113916427
    pytest.ini
    """
    [pytest]
    addopts = -vs --html D:\\se_frame\\Reports\\report.html
    testpaths = D:\se_frame\TestCases
    python_classes = Test*
    python_functions = test
    markers =
        smoke:冒烟用例
        usermange:用户管理模块
        product:产品模块
    """
    # 第二种报告:
    allure-pytest【项目基本用这个,自动截图失败用例,自动记录失败异常,美观好看各种好】
    https://blog.csdn.net/weixin_45451320/article/details/113916870

Ejercicios simples para pytest:

# coding=utf-8
import pytest
import time


class Testlogin:

    # 装饰器:标记用例执行的顺序,用的插件:pytest-ordering
    @pytest.mark.run(order=2)
    @pytest.mark.smoke
    def test_case_03(self):
        time.sleep(3)
        print('一只小黄狗')

    @pytest.mark.product
    @pytest.mark.run(order=1)
    def test_case_02(self):
        time.sleep(3)
        print('一只小红狗')

    @pytest.mark.run(order=3)
    def test_case_04(self):
        time.sleep(3)
        print('一只小绿狗')

    @pytest.mark.run(order=4)
    def test_case4_01_ao(self):
        time.sleep(3)
        print('一只小花狗')
        assert 1==2

# def test_004():
#     print('函数')


Supongo que te gusta

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