在子目录中调用django测试

Lor*_*ein 3 django

我最近将一个应用程序拆分为子目录.例如,我有一个"商店"应用程序,我把它分成shop/foo,商店/酒吧,商店/ baz子目录,将每一个视为一个单独的应用程序,所以我的INSTALLED_APPS现在看起来像:

"shop",
"shop.foo",
"shop.bar",
"shop.baz",
...
Run Code Online (Sandbox Code Playgroud)

我希望能够通过执行以下操作在shop/foo/tests.py中运行测试:

python manage.py test shop.foo
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我会收到错误:

ValueError: Test label 'shop.foo' does not refer to a test
Run Code Online (Sandbox Code Playgroud)

另一方面,我可以通过执行以下操作来运行测试:

python manage.py test foo
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,我可以改变什么,以便我可以将测试作为"shop.foo"而不是"foo"运行?

lqc*_*lqc 6

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

app_label[.TestCase[.test_method]]
Run Code Online (Sandbox Code Playgroud)

没有办法与股票测试运行员这样做(参见Carl Meyers评论).如果一切顺利的话,这应该是固定在Django 1.5,但在此期间,您可以使用它接受完整的模块路径备用亚军:Django的发现亚军.