无法让 Nose 遵守我在测试中设置的属性
Can't get Nose to honor the attributes I set on my tests
我将 Django 1.7 与 django-nose 1.4 和 nose 1.3.6 一起使用。
根据 documentation,我应该能够 select 通过使用属性测试为 运行。我有这样的测试集:
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'
最后一个应该 select 我几乎所有的测试套件,因为 isolation
属性只用在一个 class 上,但它没有 select 任何东西!我开始觉得我只是不明白整个属性系统是如何工作的。
我不清楚导致问题的原因。这可能与 Django 如何将命令行参数传递给 django-nose,然后将它们传递给 nose 有关。无论如何,使用命令行参数的长格式可以解决问题:
$ ./manage.py test --attr=isolation
类似地:
--attr=isolation=menu
--attr='!isolation'
(使用单引号防止 shell 形式解释 !
)
--eval-attr=isolation
--eval-attr='isolation=="menu"'
(单引号防止 shell 删除双引号)
- 等...
我将 Django 1.7 与 django-nose 1.4 和 nose 1.3.6 一起使用。
根据 documentation,我应该能够 select 通过使用属性测试为 运行。我有这样的测试集:
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'
最后一个应该 select 我几乎所有的测试套件,因为 isolation
属性只用在一个 class 上,但它没有 select 任何东西!我开始觉得我只是不明白整个属性系统是如何工作的。
我不清楚导致问题的原因。这可能与 Django 如何将命令行参数传递给 django-nose,然后将它们传递给 nose 有关。无论如何,使用命令行参数的长格式可以解决问题:
$ ./manage.py test --attr=isolation
类似地:
--attr=isolation=menu
--attr='!isolation'
(使用单引号防止 shell 形式解释!
)--eval-attr=isolation
--eval-attr='isolation=="menu"'
(单引号防止 shell 删除双引号)- 等...