Кто-нибудь знает, как работают тесты -m, -i и -e? - PullRequest
10 голосов
/ 08 ноября 2011

Я пытаюсь провести тестирование носа, чтобы определить мои тесты, но ни один из моих тестов не выполняется должным образом.

У меня следующая структура файла

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 тестов носа

  • Какое регулярное выражение мне нужно для запуска только модульных тестов (в модуле /, тесты в классе BarTest)
  • Какое регулярное выражение мне нужно, чтобы запускать только функциональные тесты (в функциональном /, тесты в классе FooFTest)

Я пробовал различные комбинации и, похоже, не могу заставить носовые тесты делать то, что я хочу последовательно

Ответы [ 2 ]

6 голосов
/ 08 ноября 2011

Самый простой способ запустить только тесты под Project/test/unit - это использовать --where.Например:

nosetests --where=Project/test/unit

Затем используйте --match (-m) или --exclude (-e), чтобы уточнить список, если это необходимо.

Если вы все еще хотитеиспользуйте селекторы регулярных выражений, вы, вероятно, можете сделать это следующим образом (не проверено):

nosetests --match='^Foo[\b_\./-])[Tt]est'

Выполнение этого скрипта из каталога Project будет запускать все тесты, которые начинаются с "Foo" и заканчиваются на "[Tt] есть».

Как правило, вы, вероятно, хотите использовать либо --match, либо --exclude, но не оба.Оба эти параметра задают шаблон имен функций для сопоставления.Вы можете уточнить любой из них, используя --ignore-files, что, естественно, позволяет игнорировать целые файлы.

3 голосов
/ 20 августа 2013

Учитывая вашу структуру каталогов, вы можете легко запускать сегменты тестов, используя опцию --exclude.

Запустить все тесты:

nosetests Project

Выполнить юнит-тесты:

nosetests Project -e functional

Выполнить функциональные испытания:

nosetests Project -e unit

Если у вас есть более сложные требования к выполнению теста, я бы рекомендовал пометить тесты и использовать пакет attrib .

...