2

次のように、django テスト ランナーがアプリのテストを見つけられないという問題がありました。

Djangoテストランナーがテストを見つけられない

そのスレッドへのコメントの 1 つは、django-admin.py を使用して新しいアプリを作成し、そこでテストが実行されるかどうかを確認することを提案しました。例えば

django-admin.py startapp delme

それから

adding "delme" to my INSTALLED_APPS

それから

copying my tests.py from the app where it wasn't getting found into delme/

そしてヴィオラ!テストは実行されました。それで、OK、回避策がありますが、わかりません。私は、django ドキュメントの関連部分であるべきだと思うものを読み直しましたが、ペニーはドロップすることを拒否しました。

ところで、アプリは runserver と wsgi を介して動作するため、全体的な構成の問題はないようです。そして、私のテストはすべて彼らの新しい家から合格したので、明らかにもっと多くのテストが必要です:)

具体的には、virtualenv で django を実行しているので、テストを実行したい (アクティブ化された) virtualenv で "django-admin.py startapp" を実行しました。これにより、他の virtualenv でテストが実行されるわけではありません。まだ古い症状が残っています (0 個のテストを実行しました)。自明ではないペーバースクリプトによって管理される多数のvirtualenvがあります。1 つは「path.copytree」を使用してプロジェクトを展開し、Apache 構成ファイルを書き換え、Apache を再起動し、適切な virtualenv を使用して wsgi ファイルを書き込みます。もう 1 つは、さまざまな環境のブートストラップ/分解、パッケージの更新に PIP/GCC/aptitude/etc を使用します。したがって、django-startapp と単にファイルをコピーすることの違いを理解したいので、これらの paver スクリプトを修正して、必要な環境でテストを実行できるようにします。

4

2 に答える 2

0

解決しました(まだ少し魔法の匂いがあります)。

diff私の古いアプリにはmodels.pyがありませんでしたが、新しいアプリ(「delme」、動作中)にはありました。古いアプリにはそれが必要だとは思いませんでした。他の場所からすべてのドメイン クラスをインポートしていたからです。

古いアプリで空models.pyに触れると修正され、テストランナーが を見つけ、tests.pyすべてが期待どおりに機能するようになりました。結論 - アプリに models.py がない場合、django テスト ランナーはアプリの tests.py を見つけられません。

異なる virtualenv で動作しないことについて私が言ったことは偽物 (赤いニシン) でした。デプロイ スクリプトが何をしているのかについて少し混乱していました。

于 2012-04-11T23:57:29.887 に答える
0

あなたの説明を読んだ後、私にとって意味のある唯一のことは、既存のアプリのパスの場所です。以下のことをご確認いただけますでしょうか。

  1. アプリは delme アプリと同じフォルダー レベルにあります
  2. アプリ フォルダーに__init__.pyファイルが含まれています
  3. あなたのアプリはINSTALLED_APPS設定にリストされています

__init__.py一部の人々がつまずくので、それは行方不明のファイルであると推測します。特定の質問に答えるために、 django-admin startapp は魔法のようなことはしません。正しいフォルダとファイルを正しい場所に作成するだけです。

あなたのフォルダ構造は...

my_project/
    __init__.py
    manage.py
    settings.py
    my_app/
        __init__.py
        tests.py
        models.py
    delme/
        __init__.py
        tests.py
        models.py

こちらのコメントも参考に

TestCase クラスに直接名前を付けるのは簡単ではありません。アプリに名前を付けると、Django ランナーは models.py と tests.py を調べてそれを発見します

于 2012-04-11T07:42:26.507 に答える