2012-04-11 1 views
2

djangoテストランナーが私のアプリのテストを見つけられなかったという問題がありました:"django-admin startapp"とはどのようなマジックで、テストランナーは自分のtests.pyを見つける必要があります

そのスレッドのコメントの

Django test runner not finding tests

一つは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、私は仕事をしていますが、分かりません。私は、ジャンゴ文書の関連部分であるべきだと思っているものを再読しましたが、ペニーは落ちることを拒否しました。

ところで、このアプリはrunserverとwsgiで動作しますので、全体的な設定上の問題はありません。そして、私のテストでは、すべての彼らの新しい家から渡すので、私は明らかに多くのテストが必要:)

を具体的に、私はvirtualenvのでジャンゴを実行しているので、私は(活性化)に「django-admin.py startappのを」実行していました私はテストを実行したいvirtualenv。これは私の他のvirtualenvsでテストを実行させることはありません、私はまだそこに古い症状(蘭0テスト)があります。私は、自明ではない舗装業者のスクリプトによって管理される多数のvirtualenvを持っています。 1つはプロジェクトを展開するために "path.copytree"を使用し、apache設定ファイルを書き換え、Apacheを再起動したり、適切なvirtualenvを使ってwsgiファイルを書き出したりします。他のものは、異なる環境をブートストラップ/破棄してパッケージを更新するためにPIP/GCC/aptitude /ですから、django-startappと単にファイルをコピーすることの違いを理解したいので、これらのpaverスクリプトを修正して、私が望む任意の環境でテストを実行できるようにします。

答えて

0

あなたの説明を読んだ後で私が理解できるのは、既存のアプリのパスの場所です。あなたは次のことを確認することができます:

  1. アプリは
  2. アプリのフォルダが__init__.pyファイル
  3. はアプリが
を設定 INSTALLED_APPSに記載されて含まれていdelmeアプリとして同じフォルダレベルであります

私はそのファイルが不足していると推測しています。あなたの特定の質問に答えるために、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クラスに名前を付けることができない this comment

に注意してください。あなたはアプリに名前をつけて、Djangoのランナーはmodels.pyとtests.pyを見て発見のことをします

+0

すべての3つのカウントにはい。私のテストしていないアプリは新しい "delme"アプリに隣接していて、(空の) '__init __。py'を持ち、INSTALLED_APPSにリストされています。 delme /から実行すると、私のテストは非テスト用のアプリケーションを打つ(そしてパスする)。 –

+0

また、 'manage.py test --settings = mysettings'を使ってプロジェクト全体のテストを実行したり、単に' manage.py test delme --settings = mysettings'を使ってテストを実行しても差はありません(動作します)、 'manage.pyテスト非テスト--settings = mysettings'(動作しません)。 –

+0

あなたが言うことが真実で、django-adminが魔法をしない(ファイル/ディレクトリの作成のみ)なら、私は自分のパスやそのような奇妙なものをmanglingする必要があります。明日、その日が始まるときにそれを確認します。 –

0

解決済み(少しでも魔法のほんの一部)。

diffは私の古いアプリはmodels.pyを持っていなかったことが示されたが、新しいアプリ(「delme」、作業は)でした。私は古いアプリが必要だとは思わなかった、それは他の場所からすべてのドメインクラスをインポートしていた。

私の古いアプリで空に触れるとmodels.pyが修正されました。今度はテストランナーがtests.pyで、すべて正常に動作します。 Condlusion - アプリにmodels.pyがない場合、djangoテストランナーはアプリのtests.pyを見つけられません。私は別のvirtualenvsで働いていないと述べについて何

は(赤ニシン)偽だった、私は私の配備スクリプトが何をしていたかについて、少し混乱していました。

関連する問題