La serie pytest puede hacer que tus compañeros te miren [setup, teardown, conftest.py]

I. Introducción

En el marco de pytest, existen dos métodos de escritura previa y posterior, que se utilizan para las operaciones antes y después de la ejecución del caso de uso, es decir, la posición previa se ejecutará antes de que se ejecute el caso de uso. , y la posición posterior se ejecutará después de la ejecución del caso de uso.

¿Por qué tener posicionamiento previo y posterior? Por ejemplo, debe iniciar sesión antes de ejecutar este caso de uso o necesita algunos otros parámetros, que se pueden lograr mediante el posicionamiento previo y posterior

Primer vistazo a la primera forma de escribir

instalación 和 desmontaje

Recuerde que estos dos configuran todos los casos de uso, lo que significa que cada caso de uso se ejecutará después de configurarlo.

def setup() ejecutará el código en este método antes de cada ejecución del caso de uso

def teardown() ejecutará el código en este método después de cada ejecución del caso de uso

def setup_class() trabajo de inicialización antes de que se ejecute cada clase

def teardown_class() El trabajo final después de ejecutar cada clase 

Ejemplo de código:

import pytest 


class TestLogin: 
    def setup(self): 
        print("Este es el pre") 

    def teardown(self): 
        print("Este es el post") 

    def test_08(self): 
        print("Hola 08") 

    def test_01 (self): 
        print("Hola 01") 

    def test_05(self): 
        print("Hola 05") 

    def test_03(self): 
        print("Hola 03")

resultado de la operación:

Se puede ver que el pre y post se imprimen cuando se ejecuta cada caso de uso.Veamos el pre y post de la clase.

Ejemplo de código:

import pytest 


class TestLogin: 
    def setup_class(self): 
        print("Esta es una pre") 

    def teardowm_class(self): 
        print("Esta es una publicación") 

    def test_08(self): 
        print("Hola 08") 

    def test_01 (self): 
        print("Hola 01") 

    def test_05(self): 
        print("Hola 05") 

    def test_03(self): 
        print("Hola 03")

resultado de la operación:

 Se puede ver que el pre y el post de la clase aquí solo se ejecutarán una vez antes y después de que se ejecute la clase, y los casos de uso intermedios no se ejecutarán uno por uno.

En los ensayos anteriores, básicamente he entendido el uso de los comandos pytest, la colección de casos de uso, el uso de finxture y su ámbito de acción.Hoy, presentaré brevemente la función del archivo conftest.py y cómo usar este archivo en proyectos reales!

escena de ejemplo

En primer lugar, pensemos en esta pregunta: si estamos escribiendo pruebas, los casos de uso en cada archivo de prueba deben iniciar sesión antes de que se puedan completar las operaciones posteriores, entonces, ¿cómo implementarlo? Esto requiere que dominemos el uso del archivo conftest.py.

código de ejemplo

Crea el siguiente directorio

ConftestFile 
    |contest.py 
    |test_file_01.py 
    |test_file_02.py 
    |__init__.py
# conftest.py 
import pytest 
@pytest.fixture() 
def login():  
  print('\n---------------el método de inicio de sesión del archivo conftest comienza a ejecutarse------- ---------------------') 
  print('iniciar sesión en conftest.py') 
  print('------------- - -finaliza la ejecución del método de inicio de sesión del archivo conftest.py-------------------------')
# test_file_01.py 
def test_01(login): 
  print('\n------------------case file 1 test case 1 comienza a ejecutarse--------- ---------') 
  print('login after : in test_file_01->case test_01') 
  print('-------------------case file 1 La ejecución del caso de prueba 1 finaliza ------------------------')
# test_file_02.py 
def test_02(login): 
  print('\n------------------case file 2 test case 2 comienza a ejecutarse--------- ---------') 
  print('login after : in test_file_01->case test_01') 
  print('-------------------case file 2 La ejecución del caso de prueba 2 finaliza-------------------------')

Primero ejecutemos este código de ejemplo para ver el resultado.

1. Puede hacer clic derecho en el directorio para ejecutar en pycharm

2. Puede ingresar pytest -vs en el directorio cmd para ejecutar

test_file_01.py 
---------------el método de inicio de sesión del archivo conftest comienza a ejecutarse -------------------------- -- -- 
iniciar sesión en conftest.py 
----------------finaliza la ejecución del método de inicio de sesión del archivo conftest.py ----------------- -- -------- 
. 
------------------ archivo de caso 1 caso de prueba 1 inicia ejecución ------------- -- --- 
iniciar sesión después de : in test_file_01->case test_01 
------------------- caso archivo 1 caso de prueba 1 finaliza la ejecución --------- -- ------------- 
                                                        [ 50%] 
test_file_02.py 
---------------El método de inicio de sesión del archivo de prueba comienza a ejecutarse ------- -- ------------------ 
inicio de sesión en conftest.py 
----------------conftest.py archivo fin de ejecución del método de inicio de sesión -- ------------------------- 
. 
------------------ expediente 2 prueba caso 2 Comenzar ejecución------------------
iniciar sesión después de: en test_file_01->case test_01 
------------------- case file 2 test caso 2 extremos de ejecución-------------- - ---------- 
                                                        [100%] 

=========================== 2 pasaron en 0.04 segundos === == =======================

Se puede ver que el método de inicio de sesión en el archivo conftest.py se ejecuta antes de que se ejecute el caso de prueba de cada archivo de prueba. ¡A través de este modo, podemos realizar la preparación de las condiciones previas del caso de prueba!

El archivo de conftest debe usarse en combinación con el dispositivo en la aplicación real, por lo que el alcance del parámetro en el dispositivo también se aplica a las características del dispositivo en conftest, y lo explicaré aquí.

1. El parámetro de alcance del accesorio en conftest es la sesión, luego todos los archivos de prueba se ejecutan una vez antes de la ejecución

2. El parámetro de alcance del dispositivo en conftest es module, luego el dispositivo en el archivo conftest se ejecutará una vez antes de que se ejecute cada archivo de prueba.

3. El parámetro de alcance del accesorio en conftest es class, luego el accesorio en el archivo conftest se ejecutará una vez antes de que se ejecute la clase de prueba en cada archivo de prueba.

4. El parámetro de alcance del accesorio en conftest es función, luego el accesorio en el archivo conftest se ejecutará una vez antes de que se ejecuten los casos de prueba de todos los archivos.

Resumir

Las teorías a menudo requieren verificación práctica, por lo que si desea dominar el uso específico de conftest, ¡debe usar más verificación de código! El código anterior solo verifica que la función de prueba en el archivo de prueba usa conftest.py En el trabajo real, no solo se usa la función, sino que a menudo no solo hay un archivo conftest.py. Las siguientes son las características que resumo, ¡espero ayudarte!

1. El nombre del archivo conftest.py es fijo y no se puede modificar

2. El archivo y el archivo de caso de uso están en el mismo directorio, luego conftest.py actúa en todo el directorio

3. El archivo __init__.py debe existir en el directorio donde se encuentra el archivo conftest.py

4. El archivo conftest.py no puede ser importado por otros archivos

5. El archivo conftest.py se ejecutará antes de que se ejecuten todos los archivos de prueba en el mismo directorio.

 


Gracias a todos los que leyeron mi artículo detenidamente, observando el aumento y la atención de los fanáticos en el camino, siempre existe la necesidad de intercambiar regalos, aunque no es algo muy valioso, si puede usarlo, puede tomarlo directamente:

① Más de 2000 libros electrónicos de Python (los libros convencionales y clásicos deberían estar disponibles)

② Información de la biblioteca estándar de Python (la versión china más completa)

③ Código fuente del proyecto (cuarenta o cincuenta proyectos de capacitación y código fuente interesantes y clásicos)

④ Vídeos sobre introducción básica a Python, rastreador, desarrollo web y análisis de big data (adecuado para el aprendizaje de principiantes)


 ⑤ Hoja de ruta de aprendizaje de Python (di adiós al aprendizaje inexperto)

En mi grupo de intercambio técnico QQ (intercambio técnico y uso compartido de recursos, los anuncios entran para interrumpirlo)

Te lo puedes llevar tú mismo.La información gratuita en el número de grupo 913569736 (nota "csdn000") es la esencia de los más de diez años de carrera testadora del autor. También hay dioses compañeros para intercambiar tecnología juntos.

Los materiales de aprendizaje pueden ser encontrados por nuestra señorita Beibei [mashan-qq] comentarios [csdn000] de forma gratuita

【Debe tener en cuenta】 De lo contrario, no pasará
 

Supongo que te gusta

Origin blog.csdn.net/csdnchengxi/article/details/122579857
Recomendado
Clasificación