Tres, accesorio (accesorio de prueba)

1, pytest fixturestiene como objetivo proporcionar una base estacionaria, de modo que la prueba puede ser de forma fiable, realizado repetidamente sobre esta base; Comparativo xUnitclásico setup/teardownforma, es una notable mejora en los siguientes aspectos:

  • fixtureTenemos un nombre claro , declarando que puede en función, clase, módulo, o incluso ser activado durante toda la prueba utilizada en la sesión;
  • fixtureEn una manera modular . Debido a que cada fixturenombre puede desencadenar una función de fijación , y esta función puede a su vez otra llamada fixture;
  • fixtureGestión expande desde simples a complejos prueba de la unidad de pruebas funcionales , y el conjunto de opciones de configuración permite paramétricos fixturecasos de prueba, o en todas las funciones, clases, módulos, o incluso la totalidad de reutilización sesión de pruebas fixture;

 

2, utilizando

(1) el uso como un parámetro

 

 

 proceso de implementación

  • pytestcaso de prueba reunidos test_ehlo, que tiene un parámetro smtp_connection, pytestencontrar un nombre ya registrado fixture;
  • Realizado smtp_connection()para crear una smtp_connectioninstancia <smtplib.SMTP object at 0x00000244923A5F60>como test_ehloargumento;
  • 执行 test_ehlo (<objeto smtplib.SMTP en 0x00000244923A5F60>).

También puede utilizar la invocación de línea de comandos: --fixtures PYtest [testpath]

 

2, accesorio: la inyección real es un típico

fixturePermitir que la prueba puede recibir y procesar una necesidades objeto de aplicación particulares para pre-inicialización operación, sin preocuparse demasiado fácilmente / Configuración / limpieza de importación detalle, es una práctica típica de la inyección de dependencia, en donde la fixtureinyección del actor ( injector) de el papel desempeñado por los consumidores y de prueba ( clientpapel);

 

3, conftest.py: Distribución de ejemplos de aparatos 

Si desea compartir con uno de una pluralidad de módulos de prueba fixtureejemplo, puede usar esa fixturepara pasar al conftest.pyarchivo. Introducción no requiere módulo de prueba manual en ella, pytestencontrará automáticamente fixturela búsqueda secuencial es: categoría de prueba, el módulo de prueba, conftest.pyy finalmente el tercero plug-ins y está construido ;

También puede utilizar conftest.pyel archivo de esta característica para cada directorio de lograr un enchufe localizada ;

 

4, el intercambio de datos de prueba

Si desea probar múltiples cuota de prueba el mismo archivo de datos, hay dos buena manera de lograr esto:

  • Para cargar los datos en fixturela prueba de ellos para su reutilización fixture;
  • Estos archivos de datos en testscarpetas, algunos plug-ins de terceros para gestionar prueba de 5 en esta zona, el ámbito de aplicación: los casos de uso en todas las clases, módulos y toda sesión de pruebas, compartió ejemplos de aparatos 

En @pytest.fixtureadición decorador scope='module'parámetro, cada módulo de prueba se llama sólo una vez smtp_connection(el valor predeterminado se llama una vez para cada caso de uso), todos los casos de prueba de tales módulos comparten la misma fixtureinstancia, en el que scopeson posibles los valores de los parámetros: function(Predeterminado classvalor), module,, packageysession;

ejemplo

 

 

 

 

Nota: pytestCada vez que un caché única fixtureinstancia cuando se utiliza con parámetros fixturede tiempo, pytestse puede llamar varias veces en el alcance de esta declaración fixture;

5, el orden accesorio instanciado

Múltiples fixtureinstancias de la secuencia, los siguientes principios:

  • De alto nivel alcance (ejemplo: session) antes de alcance de bajo nivel (ejemplo: classo function) instanciar;
  • ámbito de nivel Same, ejemplos de los cuales sigue el orden en el que la secuencia se declara en la prueba (es decir, del parámetro de orden) , o fixturellamar a la relación entre;
  • Permitiendo autouseun fixtureprimer nivel con su otro fixtureinstancias;

Otro Nota:

  • Además de autousela fixturedeclaración requerida muestra de ensayo (parámetros), que no se crea una instancia no declarado;

  • Una pluralidad del mismo alcance autouse fixture, ejemplos de los cuales sigue el orden fixturedel nombre de función de clasificación;

 

 

6, operaciones accesorio de limpieza

retorno proxy (1) Rendimiento

La fixturefunción de returnsustitución de palabras clave para yield, el yieldsiguiente código es hacer la operación de limpieza;

 

 

 

 

(2) el uso con

 

 

(3) Método utilizando addfinalizer

fixtureUna función capaz de recibir un requestparámetro que representa un contexto de la petición de prueba ; se puede utilizar request.addfinalizerun método de fixtureadición de función de limpieza;

 

 

Nota: yieldAntes o addfinalizerla generación de código de salida de error antes de la inscripción, ya no se llevará a cabo las operaciones de limpieza posteriores.

 

Supongo que te gusta

Origin www.cnblogs.com/Tester-Chenmo/p/12533336.html
Recomendado
Clasificación