¿Existen convenciones para los nombres de funciones cuando se utiliza Perl Test::More?

StackOverflow https://stackoverflow.com/questions/45485

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Existen convenciones para los nombres de funciones cuando se utilizan los módulos Perl Test::More o Test::Simple?

Estoy preguntando específicamente sobre los nombres de las funciones que se utilizan para configurar un entorno de prueba antes de la prueba y para derribar el entorno después de completar con éxito las pruebas.

salud,

Robar

¿Fue útil?

Solución

No creo que existan tales convenciones por ahí.

La única forma de hacerlo es quizás utilizar bloques BEGIN/END, si los recursos se van a utilizar en todo el archivo.

El enfoque general que tomo es colocar pruebas relacionadas en un bloque de código y luego inicializar las variables/recursos, etc. allí.Quizás puedas llevar un recuento sencillo de cuántas pruebas tienes para cada función.

Algo como ...

BEGIN {
   # If you want to set some global db setting/file setting/INC changes etc
}

# Tests functionality 1...
{
     # have fun .... 
}

# Tests functionality 2...
{
     # have more fun .... 
}

END {
   # Clean up the BEGIN changes
}

Por otra parte, es posible que desees leer esto para realizar pruebas en Perl... http://perlandmac.blogspot.com/2007/08/using-perl-testsimple-and-testmore.html

Otros consejos

Si está buscando más pruebas estilo XUnit, consulte Prueba::Clase.Proporciona el Test(setup) y Test(teardown) atributos para métodos que, bueno, configuran y derriban su entorno.También le brinda una forma mucho más agradable de manejar los planes (puede proporcionar uno para cada método de prueba individualmente, por lo que el recuento es mucho menos complicado) y le permite heredar pruebas a través de jerarquías de clases de prueba.

No creo que exista un conjunto oficial de convenciones, por lo que recomendaría mirar los ejemplos en http://perldoc.perl.org/Test/More.html y ver cómo escriben sus pruebas.

Usamos Test::Más ampliamente para nuestras pruebas unitarias ya que muchos (la mayoría) de nuestros scripts de procesamiento de datos están escritos en Perl.No tenemos una convención específica para los nombres de las funciones, sino que hacemos algo como sugiere Jagmal, es decir, dividir las pruebas en partes más pequeñas e inicializarlas localmente.

En nuestro caso, cada subprueba está encapsulada en una función separada dentro del script de prueba.Además de esto, tenemos un marco que nos permite ejecutar todas las subpruebas (la prueba unitaria completa) o llamar a subpruebas individuales o conjuntos de subpruebas para permitir ejecutar solo aquellas en las que estamos trabajando en este momento.

Gracias Espo.

He echado un vistazo a los perldocs relevantes, pero no existe una convención real con respecto a los aspectos de configuración y desmontaje.

No como la serie de pruebas XUnit.

Gracias por la respuesta, Jagmal, pero no estoy seguro de utilizar los bloques BEGIN y END para la configuración y el desmontaje, ya que no dejas claro lo que estás haciendo con los nombres.También existe el problema obvio de tener solo una ejecución de configuración y una ejecución de desmontaje por prueba, es decir,por cada archivo .t.

Eché un vistazo rápido a Test::Most y parece realmente interesante, especialmente la función de explicación.Gracias mate.

Mmm.Pensando más en el uso de los bloques BEGIN y END, creo que si reduzco la granularidad de las pruebas para que solo se necesite una configuración y un desmontaje, entonces esta sería una buena solución.

salud,

Robar

La primera convención que sugeriría es deshacerse de Test::More por Test::Most

Los scripts de prueba de Perl no son especiales ni mágicos de ninguna manera.Como tales, pueden contener exactamente lo mismo que cualquier otro script Perl.

Puede nombrar las rutinas como desee y llamarlas antes, después y entrelazadas con las pruebas.

Puede tener cualquier cantidad de código de inicialización antes de cualquier prueba, cualquier cantidad de código de limpieza después de las pruebas y cualquier cantidad de cualquier otro código mezclado con las pruebas.

Todo esto supone que estás hablando de scripts de prueba t/*.t estilo CPAN.Creo que sí, pero puedo leer su pregunta como sobre cómo extender los arneses de prueba, si entrecierro los ojos correctamente.

Si también está dispuesto a participar en pruebas de aceptación, como Ruby's Cucumber, eche un vistazo a este pequeño ejemplo. http://github.com/kesor/p5-cucumber eso es usar Test::More y un estilo pepino de prueba de aceptación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top