3

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

4

2 回答 2

6

这是因为 Django 期望testcommand 的参数具有以下格式:

app_label[.TestCase[.test_method]]

使用股票测试运行程序无法做到这一点(请参阅Carl Meyers 评论)。如果一切顺利,这应该在 Django 1.5 中修复,但与此同时,您可以使用接受完整模块路径的备用运行器:django-discovery-runner

于 2012-06-08T09:20:02.607 回答
3

django-discover-runner已成为 Django 1.6 的一部分 .. :)

对于版本 <1.6 ,它可以用作第三方应用程序。

于 2013-09-10T10:21:41.983 回答