Кто-нибудь знает, как nosetest -m, -i и -e работают?
Я пытаюсь получить nosetests для определения моих тестов, но он не выполняет никаких моих тестов.
У меня есть следующая файловая структура
Project
+----Foo/
+----__init__.py
+----bar.py
+----test/
+----__init__.py
+----unit/
+----__init__.py
+----bar_test.py
+----functional/
+----__init__.py
+----foo_test.py
Внутри bar_test.py
class BarTest(unittest.TestCase):
def bar_1_test():
...
Внутри foo_test.py
class FooFTest.py
def foo_1_test():
...
Использование -m, -i, -e опций nosetests
- Какое регулярное выражение мне нужно для запуска только модульных тестов (в разделе unit/, тесты в классе BarTest)
- Что такое регулярное выражение, мне нужно запустить только функциональные тесты (по функциям /, тесты в классе FooFTest)
Я пробовал различные комбинации и, похоже, не мог заставить носететы делать то, что хочу последовательно
Ответы
Ответ 1
Самый простой способ запускать только тесты под Project/test/unit
- это использовать --where
. Например:
nosetests --where=Project/test/unit
Затем используйте --match
(-m
) или --exclude
(-e
), чтобы уточнить список, если это необходимо.
Если вы все еще хотите использовать селектора регулярных выражений, вы, вероятно, можете сделать это так (не тестировалось):
nosetests --match='^Foo[\b_\./-])[Tt]est'
Выполнение этого script из каталога Project
будет запускать все тесты, начинающиеся с "Foo" и заканчивающиеся на "[Tt] est".
Как правило, вы, вероятно, захотите использовать либо --match
, либо --exclude
, но не оба. Эти параметры определяют шаблон совпадающих имен функций. Вы можете уточнить один из них, используя --ignore-files
, который, естественно, позволяет игнорировать целые файлы.
Ответ 2
Учитывая вашу структуру каталогов, вы можете легко выполнять сегменты тестов с помощью опции -exclude.
Запустить все тесты:
nosetests Project
Пробные модульные тесты:
nosetests Project -e functional
Запустить функциональные тесты:
nosetests Project -e unit
Если у вас более сложные требования к исполнению теста, я бы рекомендовал маркировать тесты и использовать пакет атрибутов.