0

我将 Django 1.7 与 django-nose 1.4 和鼻子 1.3.6 一起使用。

根据文档,我应该能够使用属性选择要运行的测试。我有一个这样的测试集:

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属性仅用于一个类,但它没有选择任何东西!我开始认为我只是不明白整个属性系统是如何工作的。

4

1 回答 1

2

我不清楚是什么导致了这个问题。它可能与 Django 如何将命令行参数传递给 django-nose,然后将它们传递给鼻子有关。无论如何,使用长形式的命令行参数可以解决问题:

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

同样:

  • --attr=isolation=menu
  • --attr='!isolation'(用单引号防止 shell 形式解释!
  • --eval-attr=isolation
  • --eval-attr='isolation=="menu"'(单引号防止外壳删除双引号)
  • ETC...
于 2015-05-15T15:16:08.577 回答