在子目录中调用django测试

时间:2012-06-07 20:48:59

标签: django

我最近将一个应用程序拆分为子目录。例如,我有一个“商店”应用程序,我把它分成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”运行?

2 个答案:

答案 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,它可以用作第三方应用程序。