[automatización de Python] serie pytest (Parte 1)
Habrá un total de cuatro artículos en esta serie, el primero, el intermedio, el segundo y el final.
Puntos de conocimiento en este capítulo.
Directorio de artículos
Dirección del sitio web oficial: https://docs.pytest.org/en/latest/contents.html
Introducción oficial de Pytest:
El
pytest
marco facilita la escritura de pruebas pequeñas y legibles y puede escalarse para admitir pruebas funcionales complejas para aplicaciones y bibliotecas.
Requisitos de instalación de Pytest: Python 3.7+
1. Instalación de prueba
pip install pytest
Verificar la instalación
pytest --version #会显示当前已安装的版本
2. Precauciones de Pytest
1. Todos los nombres de archivos de prueba unitaria deben cumplir con
test_*.py
el formato o*_test.py
formato.2. En el archivo de prueba único, la clase de prueba comienza
Test
con y no puede tener un método init (nota: al definir una clase, debe comenzarT
con; de lo contrario, pytest no ejecutará la clase)3. En la clase de prueba unitaria
test_
se pueden incluir una o más funciones al principio.4. Al ejecutar el comando pytest, buscará automáticamente funciones de prueba que cumplan con las restricciones anteriores en el directorio y subdirectorios actuales para su ejecución.
Cuando se ejecuta en pycharm, el valor predeterminado es usar el modo Autodetect para realizar pruebas. Aquí podemos cambiarlo a pytest.
configuración --> Herramientas --> Herramientas integradas de Python --> Pruebas --> Ejecución de prueba predeterminada
Lista de significados del código de salida de Pytest
Exit code 0 所有用例执行完毕,全部通过
Exit code 1 所有用例执行完毕,存在Failed的测试用例
Exit code 2 用户中断了测试的执行
Exit code 3 测试执行过程发生了内部错误
Exit code 4 pytest 命令行使用错误
Exit code 5 未采集到可用测试用例文件
Uso común
- Ejecutar pruebas: ejecute el comando "pytest" en el directorio raíz del proyecto para ejecutar todos los casos de prueba.
- Seleccione pruebas: use el parámetro "-k" para filtrar según el nombre del caso de prueba. Por ejemplo, "pytest -k test_login" solo ejecutará casos de prueba cuyos nombres contengan "test_login".
- Generar informes: utilice el parámetro "-r" para seleccionar el nivel del informe de salida. Por ejemplo, "-rA" generará los resultados de todos los casos de prueba y "-rP" generará el progreso de los casos de prueba.
- Verificación de cobertura: utilice el parámetro "-cov" para generar un informe de cobertura para casos de prueba. Por ejemplo, "pytest --cov=myapp" generará un informe de cobertura para la base del código myapp.
3. Inicio rápido con Pytest
(1) Prueba de ejecución del método
Crea un nuevo test_a.py
archivo y escribe el siguiente código:
def test_001():
print("pytest执行的第一个测试用例")
Haga clic derecho para ejecutar y el elemento de inicio mostrará Pytest.
Los resultados de ejecución son los siguientes:
(2) Prueba de ejecución de clase
Cree un nuevo archivo test_b.py y escriba el siguiente código:
class TestB():
def test_b_001(self):
print("我是TestB下的test_b_001")
def test_b_002(self):
print("我是TestB下的test_b_002")
Los resultados de la ejecución son los siguientes:
Testing started at 11:19 ...
Launching pytest with arguments D:/L_Learning/MyLearningCode/ApiTestProject/test_b.py --no-header --no-summary -q in D:\L_Learning\MyLearningCode\ApiTestProject
============================= test session starts =============================
collecting ... collected 2 items
test_b.py::TestB::test_b_001 PASSED [ 50%]我是TestB下的test_b_001
test_b.py::TestB::test_b_002 PASSED [100%]我是TestB下的test_b_002
============================== 2 passed in 0.01s ==============================
Process finished with exit code 0
De lo anterior se puede ver que siempre que la clase coincida con Test
el comienzo, pytest la recopilará y ejecutará.
(3) Prueba de ejecución de archivos
Cree un nuevo archivo main.py y escriba el código de la siguiente manera:
import pytest
pytest.main()
El directorio del proyecto actual es el siguiente:
Haga clic derecho y ejecute en el archivo main.py. Los resultados de la ejecución son los siguientes:
============================= test session starts =============================
platform win32 -- Python 3.8.8, pytest-7.2.1, pluggy-1.0.0
rootdir: D:\L_Learning\MyLearningCode\ApiTestProject
collected 3 items
test_a.py . [ 33%]
test_b.py .. [100%]
============================== 3 passed in 0.01s ==============================
Process finished with exit code 0
Como se puede ver en lo anterior, siempre que el archivo coincida con Test
el comienzo, pytest lo recopilará y ejecutará.
En este punto, tiene una simple introducción al uso de pytest.
(4) Orden de ejecución de casos de uso
- Los archivos se ejecutan en orden alfabético de forma predeterminada, ordenados según el código ASCLL (inglés en minúsculas -> inglés en mayúsculas -> números del 0 al 9).
- Los casos de uso dentro del archivo se ejecutan de arriba a abajo.
- setup_module->setup_claas->setup_function->testcase->teardown_function->teardown_claas->teardown_module
- El orden de ejecución de casos de uso personalizado se puede realizar a través del complemento de terceros pytest-ordering
4. Vista previa del contenido de la siguiente sección
- afirmar afirmar
- Ejecutar desde la línea de comando
- informe de atractivo pytest
- Complementos relacionados
La serie de tutoriales de pytest grabó un video antes, pero mi mandarín no es muy bueno, así que no lo publicaré.
Preste atención a la actualización de la cuenta oficial y sepa de antemano: el camino de Meng Wuji hacia el desarrollo de pruebas