[automatización de Python] serie pytest (Parte 1)

[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.

inserte la descripción de la imagen aquí

Puntos de conocimiento en este capítulo.


Dirección del sitio web oficial: https://docs.pytest.org/en/latest/contents.html

Introducción oficial de Pytest:

El pytestmarco 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_*.pyel formato o *_test.pyformato.

2. En el archivo de prueba único, la clase de prueba comienza Testcon y no puede tener un método init (nota: al definir una clase, debe comenzar Tcon; 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

(La transferencia de la imagen del enlace externo falló. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-cWmXaTdQ-1692690799922) (images/image-20230214105153316.png)]

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.pyarchivo y escribe el siguiente código:

def test_001():
    print("pytest执行的第一个测试用例")

Haga clic derecho para ejecutar y el elemento de inicio mostrará Pytest.

(La transferencia de la imagen del enlace externo falló. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-WqrBaqWk-1692690799923) (images/image-20230214111146415.png)]

Los resultados de ejecución son los siguientes:

(La transferencia de la imagen del enlace externo falló. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-5JZLSVFe-1692690799923)(images/image-20230214110924007.png)]

(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 Testel 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:

(La transferencia de la imagen del enlace externo falló. El sitio de origen puede tener un mecanismo anti-leeching. Se recomienda guardar la imagen y cargarla directamente (img-rc5bjHa4-1692690799923) (images/image-20230214112111602.png)]

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 Testel 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

Supongo que te gusta

Origin blog.csdn.net/qq_46158060/article/details/132429696
Recomendado
Clasificación