Ответ 1
Вы должны указать его так: nosetests <file>:<Test_Case>.<test_method>
или
nosetests test_web.py:TestWeb.test_checkout
Смотрите документы
У меня есть файл test_web.py, содержащий класс TestWeb, и многие методы называются test_something().
Я могу запускать каждый тест в классе следующим образом:
$ 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
...
Но я, похоже, не выполняю индивидуальные тесты. Они дают мне ошибки "Нет таких тестов" при запуске в том же PWD:
$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout
Что здесь может быть неправильным?
Вы должны указать его так: nosetests <file>:<Test_Case>.<test_method>
или
nosetests test_web.py:TestWeb.test_checkout
Смотрите документы
Вы также можете указать модуль:
nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users
Указание имен в командной строке, как и другие ответы, говорит, что это полезно и полезно. Однако, когда я нахожусь в процессе написания тестов, я часто обнаруживаю, что хочу запустить только те тесты, над которыми я работаю, и имена, которые мне придется писать в командной строке, становятся довольно длинными и громоздкими для записи, В этом случае я предпочитаю использовать пользовательский декоратор и флаг.
Я определяю wipd
( "work in progress decorator" ) следующим образом:
from nose.plugins.attrib import attr
def wipd(f):
return attr('wip')(f)
Это определяет декоратор @wipd
, который будет устанавливать атрибут wip
на объекты, которые он украшает. Например:
import unittest
class Test(unittest.TestCase):
@wipd
def test_something(self):
pass
Затем -a wip
можно использовать в командной строке, чтобы сузить выполнение теста до тех, что помечены @wipd
.
Я использую имя @wipd
для декоратора, а не @wip
, чтобы избежать такой проблемы:
import unittest
class Test(unittest.TestCase):
from mymodule import wip
@wip
def test_something(self):
pass
def test_something_else(self):
pass
import
сделает декоратор wip
членом класса, и будут выбраны теги all в классе. Плагин attrib
проверяет родительский класс тестового метода, чтобы увидеть, существует ли там также выбранный атрибут, а атрибуты, созданные и протестированные с помощью attrib
, не существуют в изолированном пространстве. Поэтому, если вы протестируете с помощью -a foo
и ваш класс содержит foo = "platypus"
, тогда все тесты в классе будут выбраны плагином.
Чтобы запустить несколько конкретных тестов, вы можете просто добавить их в командную строку, разделенные пробелом.
nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout