2011-04-29 14 views
5

Pregunta breve
¿Cuál es la mejor forma de obtener datos en un caso de prueba de Python?¿Cuál es la mejor forma de pasar datos a Python Unittest Redirected STDIN or Pickle?

Antecedentes
Mi proyecto está utilizando el módulo unittest de Python como una forma automatizada ejecutar una serie de pruebas que tendrán que funcionar con muchos del mismo tipo de tablas. Hasta ahora, esto encaja perfectamente con el diseño del módulo unittest; el giro es que cada caso de prueba necesita saber ejecutar información específica para almacenar en una base de datos de Django.

Los datos que deben pasarse incluyen un número de serie, que probó la placa, la fecha y otras cosas de esta naturaleza. Vale la pena señalar que el orden en que se probarán los tableros es elegido por un humano que extrae el tablero X de una caja, por lo que no es posible predecir el número de serie.

Pensamientos
Actualmente, estoy pasando los datos requeridos desde y hacia los casos de prueba a través de la salmuera. Este método funciona bien en pruebas pequeñas, pero mi preocupación es leer y escribir en el mismo archivo 100k + veces que da mucho espacio para la corrupción de datos (+ no es tan rápido). Escribí una respuesta a un SO Question que redirige el código fuente de una manera que creo que también podría funcionar para esta aplicación.

El siguiente paso será ajustar una GUI a estas pruebas. Un objetivo personal sería tener la capacidad de ejecutar las pruebas a través de la línea de comando y hacer que la GUI llame a las mismas funciones de línea de comando. Por esta razón, me inclino por moverme al stdin redirigido.

Sistema/Información sobre la implementación
Obligatorio SO compatibles: Windows XP y Windows 7
Ideal Soporta Sistema Operativo:
versión Python Mac OS X y Linux: 2.7

Cualquier pensamiento o comentarios sería muy apreciada .

+0

con respecto a la lectura del mismo archivo 100 veces + veces: creo que el sistema operativo leerá el archivo una vez y luego intentará mantenerlo en la memoria, eliminando así el tiempo de lectura y el desgaste del disco. –

+0

@bgbg: No lo veo de esta manera, pero estoy de acuerdo con su evaluación. –

Respuesta

2

He creado pruebas de unidad que prueban contra un servicio externo (Zoho CRM). Para probar la API de servicio, necesita almacenar las claves de usuario y contraseña.

Dado que este es un servicio premium y está creando software de código abierto, naturalmente no puede codificar sus credenciales de inicio de sesión con el código fuente.

así que terminé usando variables de entorno - el trabajo bastante bien:

Aquí está el ejemplo:

https://github.com/miohtama/mfabrik.zoho/blob/master/mfabrik/zoho/tests.py

Como un problema mayor Creo que tratar de hacer cumplir módulo de pruebas unitarias para hacer algo que se suponía que no debía hacer, en primer lugar, no es una buena idea. Tal vez deberías tratar de escribir tu propio corredor de pruebas unitarias que haría los preparativos necesarios (extraer información, almacenar resultados) en alguna parte.

+0

Usar variables de entorno es una gran idea.De hecho abordan la preocupación de escribir en el sistema de archivos y elimina la dependencia de la versión de Python. –

+0

Ugh, Presionado enter to soon: Con respecto a la reescritura del corredor de la prueba unitaria, no estoy seguro de estar completamente de acuerdo con la afirmación. No lo veo como un problema, sino como una reutilización de un módulo ampliamente probado. Además, la capacidad de usar nose y otros plugins también se ha vuelto muy útil. ¡Gracias de nuevo por la información sobre las variables de entorno! –

Cuestiones relacionadas