Как пропустить тесты носа класса, украшенные в оболочке nose.plugins.attrib.attr
Класс декоратора для пропуска тестов носа можно записать так:
из носа.plugins.attrib импортировать атрибут @attr(скорость ='медленно') Класс MyTestCase: def test_long_integration(self): проходить def test_end_to_end_something(self): проходить
Согласно документации, "в Python 2.6 и выше, @attr может использоваться в классе для одновременной установки атрибутов для всех его методов тестирования"
Я не мог найти способ проверить код. Бег
nosetests -a speed=slow
не помогло Любая помощь будет оценена. Заранее спасибо:)
1 ответ
Решение
Вам не хватает родительского класса unittest.TestCase для вашего теста, а именно:
from unittest import TestCase
from nose.plugins.attrib import attr
@attr(speed='slow')
class MyTestCase(TestCase):
def test_long_integration(self):
pass
def test_end_to_end_something(self):
pass
class MyOtherTestCase(TestCase):
def test_super_long_integration(self):
pass
Ваша команда должна выбирать тесты на основе атрибутов, а не пропускать их:
$ nosetests ss_test.py -a speed=slow -v
test_end_to_end_something (ss_test.MyTestCase) ... ok
test_long_integration (ss_test.MyTestCase) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.004s
OK
Если вы хотите сделать необычный тестовый выбор, вы можете использовать атрибут "-A" и использовать полный синтаксис Python:
$ nosetests ss_test.py -A "speed=='slow'" -v
test_end_to_end_something (ss_test.MyTestCase) ... ok
test_long_integration (ss_test.MyTestCase) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.003s
OK
вот как пропустить медленные тесты:
$ nosetests ss_test.py -A "speed!='slow'" -v
test_super_long_integration (ss_test.MyOtherTestCase) ... ok
----------------------------------------------------------------------
Ran 1 test in 0.003s
OK