2015-05-15 3 views
0

Я использую Django 1.7 с django-носом 1.4 и носом 1.3.6.Невозможно получить нос, чтобы соблюдать атрибуты, установленные мною в тестах

Согласно documentation, я должен иметь возможность выбирать тесты для запуска с использованием атрибутов. У меня есть тестовый набор, как это:

from nose.plugins.attrib import attr 
from django_webtest import TransactionWebTest 

@attr(isolation="menu") 
class MenuTestCase(TransactionWebTest): 

    def test_home(self): 
     pass 

Когда я пытаюсь запустить свои тесты с:

./manage.py test -a isolation 

носа устраняет все тесты из пробега. Другими словами, он не запускает любой тест. Обратите внимание, что когда я не использую -a, все тесты выполняются нормально. Я также попытался:

  • -a=isolation
  • -a isolation=menu
  • -a=isolation=menu
  • -a '!isolation'

Последнее следует выбрать почти все из моего тестового набора, так как атрибут isolation используется только на один класс, но ничего не выбирает! Я начинаю думать, что просто не понимаю, как работает вся система атрибутов.

ответ

1

Непонятно мне, что вызывает проблему. Вероятно, это связано с тем, как Django передает аргументы командной строки django-носу, который затем передает их носу. Во всяком случае, используя длинную форму аргументов командной строки решает эту проблему:

$ ./manage.py test --attr=isolation 

и точно так же:

  • --attr=isolation=menu
  • --attr='!isolation' (с одинарные кавычки, чтобы предотвратить форму оболочки интерпретируя !)
  • --eval-attr=isolation
  • --eval-attr='isolation=="menu"' (одинарные кавычки предотвращают оболочка от удаления двойных котировок)
  • и т.д.