无法让Nose尊重我在测试中设置的属性

时间:2015-05-15 15:16:09

标签: python django testing nose django-nose

我正在使用带有django-nose 1.4和鼻子1.3.6的Django 1.7。

根据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

Nose消除了跑步中的所有测试。换句话说,它不会运行任何测试。请注意,当我不使用-a时,所有测试都运行正常。我也试过了:

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

最后一个应该选择我的几乎所有测试套件,因为isolation属性仅用于一个类,但它没有选择任何东西!我开始认为我只是不明白整个属性系统是如何工作的。

1 个答案:

答案 0 :(得分:2)

我不清楚导致问题的原因。它可能与Django如何将命令行参数传递给django-nose,然后将它们传递给nose。无论如何,使用长形式的命令行参数可以解决问题:

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

同样地:

  • --attr=isolation=menu
  • --attr='!isolation'(使用单引号来阻止shell格式解释!
  • --eval-attr=isolation
  • --eval-attr='isolation=="menu"'(单引号阻止shell删除双引号)
  • 等...