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

なぜこれが発生するのでしょうか。また、テストを「foo」ではなく「shop.foo」として実行できるように変更するにはどうすればよいですか。

4

2 に答える 2

6

これは、Djangoがtestコマンドの引数が次の形式であることを期待しているためです。

app_label[.TestCase[.test_method]]

ストックテストランナーでこれを行う方法はありません(Carl Meyersのコメントを参照)。すべてがうまくいけば、これはDjango 1.5で修正されるはずですが、それまでの間、完全なモジュールパスを受け入れる代替ランナーdjango-discovery-runnerを使用できます。

于 2012-06-08T09:20:02.607 に答える
3

django-discover-runnerはDjango1.6の一部になりました。:)

バージョン<1.6の場合、サードパーティのアプリとして使用できます。

于 2013-09-10T10:21:41.983 に答える