Pregunta ¿Cómo especifico una prueba única en un archivo con pruebas nasales?


Tengo un archivo llamado test_web.py que contiene una clase TestWeb y muchos métodos llamados como test_something ().

Puedo ejecutar todas las pruebas en la clase de esta manera:

$ nosetests test_web.py 
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...

Pero parece que no puedo realizar pruebas individuales. Estos me dan errores de "No hay tal prueba" cuando se ejecutan en la misma PWD:

$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout

¿Qué podría estar mal aquí?


76
2017-07-02 00:26


origen


Respuestas:


Debe especificarlo así: nosetests <file>:<Test_Case>.<test_method>, o

nosetests test_web.py:TestWeb.test_checkout

Ver los documentos


110
2017-07-02 00:58



También puedes especificar un módulo:

nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users

15
2017-08-20 10:19



Especificar nombres en la línea de comando como las otras respuestas sugieren que funciona y es útil. Sin embargo, cuando estoy escribiendo pruebas, a menudo me parece que quiero ejecutar solo la prueba en la que estoy trabajando, y los nombres que tendría que escribir en la línea de comandos son bastante largos y engorrosos para escribir. . En tal caso, prefiero usar un decorador y bandera personalizados.

Yo defino wipd ("decorador de trabajo en progreso") como este:

from nose.plugins.attrib import attr
def wipd(f):
    return attr('wip')(f)

Esto define a un decorador @wipd que establecerá el wip atributo sobre los objetos que decora. Por ejemplo:

import unittest
class Test(unittest.TestCase):

    @wipd
    def test_something(self):
        pass

Entonces -a wip se puede utilizar en la línea de comando para limitar la ejecución de la prueba a los marcados con @wipd.

Nota sobre los nombres ...

Estoy usando el nombre @wipd para el decorador en lugar de @wip para evitar este tipo de problema:

import unittest
class Test(unittest.TestCase):

    from mymodule import wip    
    @wip
    def test_something(self):
        pass

    def test_something_else(self):
        pass

los import hará que el wip decorador un miembro de la clasey todas las pruebas en la clase serán seleccionadas. los attrib el plugin comprueba la clase padre de un método de prueba para ver si el atributo seleccionado también existe allí, y los atributos que se crean y prueban por attrib no existen en un espacio segregado Entonces si prueba con -a foo y tu clase contiene foo = "platypus", entonces todas las pruebas en la clase serán seleccionadas por el complemento.


8
2017-07-08 15:09



Para ejecutar múltiples pruebas específicas, puede agregarlas a la línea de comando, separadas por espacio.

nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout

3
2018-05-22 09:21



En mis pruebas, especificar pruebas con nombres de módulos no funciona

Debe especificar la ruta real a la .py:

nosetests /path/to/test/file.py:test_function

Esto con nose==1.3.7


0
2018-06-14 14:06