pytest advanced conftest.py

Prólogo

Los ensayos anteriores han entendido básicamente el uso del comando pytest, la recopilación de casos de uso, el uso de accesorios y el alcance de la acción. Hoy, presentaré brevemente el papel del archivo conftest.py y cómo se usa en proyectos reales.

Escenario de ejemplo

En primer lugar, pensemos en ese problema: si estamos escribiendo pruebas, cada caso de prueba en el archivo de prueba debe iniciar sesión para completar las siguientes operaciones, entonces, ¿cómo deberíamos lograrlo? Esto requiere que dominemos el uso del archivo conftest.py.

Código de ejemplo

Cree un directorio de la siguiente manera

ConftestFile 
    | conftest.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 inicia la ejecución ------- --------------------- ')
  print (' iniciar sesión en conftest.py ')
  print (' -------------- --conftest.py finaliza la ejecución del método de inicio de sesión del archivo --------------------------- ')
# test_file_01.py 
def test_01 (inicio de sesión):
  print ('\ n ------------------ Use el archivo de caso 1, el caso de prueba 1 comienza la ejecución --------- --------- ')
  print (' iniciar sesión después de: en test_file_01-> case test_01 ')
  print (' ------------------- use el archivo de caso 1 Fin de la ejecución del caso de prueba 1 ------------------------ ')
# test_file_02.py 
def test_02 (inicio de sesión): 
  print ('\ n ------------------ Use el archivo de caso 2, el caso de prueba 2 comienza la ejecución --------- --------- ') 
  print (' iniciar sesión después de: en test_file_01-> case test_01 ')
  print (' ------------------- use el archivo de caso 2 Fin de la ejecución del caso de prueba 2 ------------------------ ')

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

1. En pycharm, puede hacer clic derecho en el directorio para ejecutar

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 de concurso inicia la ejecución -------------------------- - 
inicio de sesión en conftest.py 
método de archivo de inicio de sesión ----------------conftest.py ha terminado de ejecutarse ------------------- -------- 
. 
------------------ Use el archivo de caso 1 El caso de prueba 1 comienza la ejecución --------------- --- 
inicie sesión después de: en test_file_01-> case test_01 
------------------- Use el archivo de caso 1 finalice la ejecución del caso de prueba 1 ----------- ------------- 
                                                        [50%] 
test_file_02.py 
--------------- El método de inicio de sesión del archivo de conflicto comienza a ejecutarse --------- ------------------- 
iniciar sesión en conftest.py 
---------------- se completa la ejecución del método de inicio de sesión del archivo conftest.py- ------------------------- 
. 
------------------ Use el archivo de caso 2 Caso de prueba 2 Iniciar ejecución ------------------
inicie sesión después de: en test_file_01-> case test_01
------------------- Use el archivo de caso 2 Prueba de caso 2 Fin de ejecución ----------------------- - 
                                                        [100%] 

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

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

La aplicación real del archivo del concurso debe usarse junto con el dispositivo, luego el alcance del parámetro en el dispositivo también se aplica a las características del dispositivo en el conflicto, aquí explicaré

Hay cuatro parámetros de alcance, a saber, 'función', 'módulo', 'clase', 'sesión', y el valor predeterminado es función.

== función: cada prueba se ejecuta, el valor predeterminado es el alcance de la función (cada método (función) se ejecutará una vez).

== clase: todas las pruebas para cada clase se ejecutan solo una vez (cada clase se ejecutará una vez. Hay varias llamadas a métodos en la clase, solo se ejecutan cuando se llama al primer método).

== módulo: todas las pruebas para cada módulo se ejecutan solo una vez (un archivo .py se ejecuta una vez. Un archivo .py puede contener múltiples clases y métodos).

== paquete / sesión: cada sesión solo se ejecuta una vez (se llaman varios archivos una vez y pueden cruzar archivos .py).

Resumen

La teoría a menudo requiere una verificación práctica, por lo que para dominar el uso específico de la disputa, ¡debes usar más verificación de código! Mi código anterior acaba de verificar que la función de prueba en el archivo de prueba usa conftest.py. En la práctica, 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 resumí, ¡espero ayudarte!

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

2. El archivo y el archivo del 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. Todos los archivos de prueba en el mismo directorio ejecutarán el archivo conftest.py antes de ejecutar

Supongo que te gusta

Origin www.cnblogs.com/victory-0315/p/12718795.html
Recomendado
Clasificación