Как пропустить тесты носа класса, украшенные в оболочке 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
Другие вопросы по тегам