¡Acostúmbrate a escribir juntos! Este es el décimo día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .
1. Introducción a pytest
Pytest es un marco de unidad de Python muy maduro, que es más flexible y fácil de usar que unittest
Pytest se puede combinar con Selenium, Requests y Appium para realizar la automatización web, la automatización de la interfaz y la automatización de aplicaciones.
pytest puede omitir casos de prueba y volver a intentar casos fallidos
pytest y allure pueden generar informes de prueba muy bonitos
pytest se puede integrar continuamente con Jenkins
pytest tiene muchos complementos muy potentes, y estos complementos pueden lograr muchas operaciones prácticas
Los complementos comúnmente utilizados son los siguientes:
pytest-html: genera pruebas automatizadas en formato HTML
pytest-xdist: ejecución distribuida de casos de prueba, concurrencia multi-CPU
pytest-ordering: se utiliza para cambiar el orden de ejecución de los casos de prueba
pytest-rerunfailures: volver a ejecutar después de fallar la prueba
allure-pytest: para generar hermosos informes de prueba
2. Reglas de escritura de casos de uso
2.1 Reglas de nomenclatura de módulos
El nombre del módulo debe comenzar con prueba y un guión bajo o terminar con un guión bajo y prueba
2.2 Reglas de nomenclatura de clases de prueba
El nombre de la clase de prueba debe comenzar con Test y no puede tener un método init
2.3 Reglas de denominación de métodos de prueba
Los métodos de prueba deben comenzar con el guión bajo de prueba
3. Cómo funciona el caso de uso
3.1 La función principal se ejecuta
3.1.1 Ejecutar todos los casos de uso
pytest.main()
复制代码
3.1.2 Casos de uso para ejecutar módulos específicos
pytest.main(['-vs', 'test_login.py'])
复制代码
3.1.3 Ejecute el caso de uso en el directorio especificado:
pytest.main(['-vs', './interface_testcase'])
复制代码
3.1.4 Especificar el caso de uso para ejecutar a través de modeid
nodeid consiste en nombre de módulo, separador, nombre de clase, nombre de método, nombre de función
3.1.4.1 Ejecutar el caso de uso especificado bajo el módulo especificado
pytest.main(['-vs', './interface_testcase/test_interface.py::test_04_func'])
复制代码
3.1.4.2 Ejecutar el caso de uso especificado bajo la clase de prueba especificada bajo el módulo especificado
pytest.main(['-vs', './interface_testcase/test_interface.py::TestInterface::test_03_zhiliao'])
复制代码
3.2 Modo de línea de comandos
3.2.1 Ejecutar todo
Ejecutar pytest directamente
3.2.2 Casos de uso para ejecutar módulos específicos
pytest -vs test_login.py`
复制代码
3.2.3 Ejecutar el caso de uso en el directorio especificado
pytest -vs ./interface_testcase
复制代码
3.2.4 Especificar el caso de uso para ejecutar a través de modeid
5.2.4.1 Ejecutar el caso de uso especificado bajo el módulo especificado
pytest -vs ./interface_testcase/test_interface.py::test_04_func
复制代码
3.2.4.2 Ejecutar el caso de uso especificado bajo la clase de prueba especificada bajo el módulo especificado
pytest -vs ./interface_testcase/test_interface.py::TestInterface::test_03_zhiliao
复制代码
3.3 Ejecutar leyendo el archivo de configuración pytest.ini (la forma más común)
El archivo pytest.ini es el archivo de configuración central para el marco de pruebas unitarias de pytest
3.3.1 Ubicación
Por lo general, en el directorio raíz del proyecto.
3.3.2 Codificación
Debe ser ANSI, puede usar notepad ++ para modificar el formato de codificación
3.3.3 Función
Cambiar el comportamiento predeterminado de pytest
Ejemplos de contenido son los siguientes:
[pytest]
addopts = -vs # 命令行的参数,用空格分隔
testpaths = '../pytest_project' # 测试用例的路径
python_files = test*.py # 模块名的规则
python_classes = Test* # 类名的规则
python_functions = test # 方法名的规则
复制代码
Reglas de ejecución: tanto si se está ejecutando la función principal como si se está ejecutando el modo de línea de comandos, obtenga y lea este archivo de configuración