python unit-testing setuptools

python - ¿Unittest permite realizar pruebas de caso único/suite a través de "setup.py test"?



unit-testing setuptools (4)

Soy un novato en lo que se refiere a pruebas de unidad de pitón, ¡pero estoy ansioso por aprender! Acabo de leer que python setup.py test puede ejecutar todas las suites derivadas de clases unittest. Me pregunto si también puedo usar setup.py para ejecutar un solo paquete y / o un solo caso de prueba, tal vez agregando un modificador al comando anterior como python setup.py tests suitename . Si es así, ¿puede indicarme algún documento o ejemplo?


prueba de setup.py

La prueba de setup.py no es tan flexible, pero aquí hay una alternativa:

El módulo unittest puede ejecutar métodos de prueba específicos.

De la Documentación en unittest.

El módulo unittest se puede usar desde la línea de comandos para ejecutar pruebas desde módulos, clases o incluso métodos de prueba individuales:

python -m unittest test_module1 test_module2 python -m unittest test_module.TestClass python -m unittest test_module.TestClass.test_method

Puede pasar a una lista con cualquier combinación de nombres de módulo y nombres de clase o método completamente calificados.

Puede ejecutar pruebas con más detalle (mayor verbosidad) al pasar el indicador -v:

python -m unittest -v test_module

Para obtener una lista de todas las opciones de línea de comandos:

python -m unittest -h


El setup.py test es bastante limitado; solo admite permitirle especificar un módulo específico. La documentación de los modificadores de la línea de comandos se proporciona cuando usa el modificador --help :

python setup.py test --help Common commands: (see ''--help-commands'' for more) [ ... cut ... ] Options for ''test'' command: --test-module (-m) Run ''test_suite'' in specified module --test-suite (-s) Test suite to run (e.g. ''some_module.test_suite'') [ ... more cut ... ]

por lo tanto, python setup.py test -m your.package.tests.test_module limitaría la ejecución de las pruebas solo desde el archivo test_module.py .

Lo que realmente hace el comando de test es asegurarse de que su óvulo ya se haya creado, extraiga el valor test_suite los test_suite de setup() , configure un cargador de prueba que entienda sobre los huevos comprimidos, luego ejecute la función unittest.main() .

Si necesita ejecutar solo una prueba, ya ha creado su huevo, no lo está ejecutando con un huevo comprimido, entonces también puede usar la interfaz de línea de comandos de la unittest prueba, que hace casi todo lo demás:

python -m unittest yourpackage.tests.TestClass.test_method

daría instrucciones a unittest para ejecutar solo un método de prueba muy específico.


En caso de que use pytest para pruebas de unidad, puede ejecutar un archivo directamente evitando el archivo setup.py .

Ejecutar todas las pruebas para mí es:

python setup.py test

Ejecutando una prueba específica:

pytest --pyargs path/to/test.py

Espero eso ayude.

(Sé que esta publicación ya es un poco antigua, pero vine aquí en busca de una forma de ejecutar las pruebas Pytest solo, pensé que podría ser de utilidad para alguien)


Todos ustedes están equivocados, la setup.py test se puede usar con la opción -s la misma manera que python -m unittest hace:

cd root_of_your_package python setup.py test -s tests.TestClass.test_method