我最近将一个应用程序拆分为子目录。例如,我有一个“商店”应用程序,我把它分成shop / foo,商店/酒吧,商店/ baz子目录,将每一个视为一个单独的应用程序,所以我的INSTALLED_APPS现在看起来像:
"shop",
"shop.foo",
"shop.bar",
"shop.baz",
...
我希望能够通过执行以下操作在shop / foo / tests.py中运行测试:
python manage.py test shop.foo
但是,如果我这样做,我会收到错误:
ValueError: Test label 'shop.foo' does not refer to a test
另一方面,我可以通过这样做来运行测试:
python manage.py test foo
为什么会发生这种情况,我可以更改哪些内容以便我可以将测试作为“shop.foo”而不是“foo”运行?
答案 0 :(得分:6)
这是因为Django期望test
命令的参数格式为:
app_label[.TestCase[.test_method]]
使用股票测试运行器无法做到这一点(参见Carl Meyers comment)。如果一切顺利,这应该在Django 1.5中修复,但在此期间你可以使用一个接受完整模块路径的替代跑步者:django-discovery-runner。
答案 1 :(得分:3)
django-discover-runner已成为Django 1.6的一部分.. :))
对于版本< 1.6,它可以用作第三方应用程序。