web-dev-qa-db-ja.com

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

私は両方とも新しいですPythonとDjango=私はダイエット管理サイトを作成することで学んでいますが、ユニットテストを取得することで完全に敗北しました私が見つけたすべてのドキュメントとブログは、tests.pyから発見できる限り、tests.pyはmodels.pyと同じフォルダーにあり、テストクラスはTestCaseをサブクラス化するので、すべて自動的に取得されると述べています。 manage.py test <myapp>を実行しても、テストが見つかりません。

すべてのテストを独自のパッケージで開始しましたが、tests.pyファイルにあるすべてのテストに簡略化しました。現在のtests.pyは次のようになります。

import unittest
from pyDietTracker.models import Weight
from pyDietTracker.weight.DisplayDataAdapters import DisplayWeight

class TestDisplayWeight(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def testGetWeightInStone_KG_Correctly_Converted(self):
        weight = Weight()
        weight.weight = 99.8

        testAdapter = DisplayWeight(weight)
        self.assertEquals(testAdapter.GetWeightInStone(), '15 st 10 lb')   

Django TestCaseクラスもサブクラス化して試してみましたが、これも機能しませんでした。Django 1.1.1、Python 2.6とSnow Leopardを実行しています。

非常に基本的で明白な何かを見逃していると思いますが、どうしたらいいかわかりません。何か案は?

編集:コメント後の簡単な更新

INSTALLED_APPS = (
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.sites',
'Django.contrib.admin',
'pyDietTracker',
 )

テストを実行するには、manage.py test pyDietTrackerを実行しています

58
user1333

うまくいきました。

私がやったことが分かったDjango-admin.py startproject pyDietTracker だがしかし python manage.py startapp myApp。戻ってこれを行った後、文書どおりに動作しました。 Djangoでの読書とサイトとアプリの違いについて多くを学ぶ必要があるようです。

S.LottとEmilStenströmにご協力いただきありがとうございます。両方ともたくさん助けられているので、両方の答えを受け入れられるといいのですが。

最も重要なレッスンテストはサイトレベルではなくアプリレベルでのみ動作します

11
user1333

私は同じ問題を抱えていましたが、私の問題は異なっていました。

Ran 0 tests、OPとして。

ただし、テストクラス内のテストメソッドは、キーワードtestで開始して実行する必要がありますです。

例:

from Django.test import TestCase


class FooTest(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def this_wont_run(self):
        print 'Fail'

    def test_this_will(self):
        print 'Win'

テストのファイルはtestキーワードで始まる必要があります

138
Eduardo

ユニットテストにyourapp/testsパッケージ/スタイルを使用している場合は、そこに__init__.pyがあることを確認してください(Pythonモジュール!).

59
David Lam

特定のアプリのテストを実行できます。

python project/manage.py test app_name

しかし、私が走るとき

python project/manage.py test

0件のテストが見つかりました

Manage.pyと同じディレクトリでこれを実行する必要があることがわかります

解決策は、プロジェクトディレクトリに移動して実行することです

python manage.py test
20
codingrhythm

これは、tests.pyに構文エラーがある場合にも発生します。

11
Daniel Gasull

私の場合、defの代わりにclassと入力しました。の代わりに

class TestDisplayWeight(TestCase):

持っていた

def TestDisplayWeight(TestCase):
10
Flimm

これは、tests.pyの代わりにtestsモジュールを使用している場合にも発生する可能性があります。この場合、すべてのテストクラスをテストモジュールの__init__.pyにインポートする必要があります。

tests/
    __init__.py
    somemodule.py

__init__.pyで、次のようにsomemoduleをインポートする必要があります。

from .somemodule import *
8
devsnd

私の場合、アプリフォルダー自体に__init__.pyがありませんでした。これにより、テストはpython manage.py test project.app_nameで実行されますが、python manage.py testでは実行されません。

project/
  app_name/
    __init__.py   # this was missing
6
Thijs

ここにもう1つあります。テストファイルが実行可能でないことを確認してください。私のvirtualboxはそれらを実行可能ファイルとして自動マウントしたので、テスト発見はそれらを完全に逃しました。誰かが問題の回避策を教えてくれる前に、それらを関連する__init__.pyファイルに追加しなければなりませんでしたが、今では削除され、実行不能ですべてが_just_worksになりました。

4
David Boshton

同じDjango appディレクトリにtest.pyファイルとtest /サブディレクトリがある場合、これが発生しました。python =または、テストモジュール(test.py)またはテストパッケージ(test/subdir)のどちらを探しているかを問わず、テストランナー。

3
Nils

私の場合、test _で関数名を開始できず、テストを次のように実行すると失敗します。

python manage.py test myapp

結果は:

Creating test database for alias 'default'...
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK
Destroying test database for alias 'default'...

Djangoはテストを認識できません!

次に、myproject/myapp/test.pyファイルを次のように変更します。

from Django.test import TestCase
# Create your tests here.
class apitest(TestCase):

    def test_email(self):
        pass
    def test_secend(self):
        pass

結果は次のとおりです。

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..
----------------------------------------------------------------------
Ran 2 tests in 2.048s

OK
Destroying test database for alias 'default'...
2
Benyamin

この構文を使用する

python manage.py test

の代わりに ./manage.py testはこの問題を解決してくれました。

1

メインアプリ(my_app/my_app /など)でテストを実行しようとしている場合は、以下を確認してください。

  1. アプリ名はsettings.py内のINSTALLED_APPSにリストされています
  2. DATABASES['default']内のsettings.pyが適切に設定されていることを確認してください
  3. アプリにはmodels.pyがあります(使用していない場合でも、少なくとも1つ空いている必要があります)
1
Dean Quiñanola

https://docs.djangoproject.com/en/1.11/topics/testing/overview/ を参照してください

テストが実行されない最も一般的な理由は、設定が正しくなく、モジュールがINSTALLED_APPSにないことです。

を使用しております Django.test.TestCase の代わりに unittest.TestCaseClientがバンドルされています。

https://docs.djangoproject.com/en/1.11/topics/testing/tools/#Django.test.TestCase

1
S.Lott

--helpを実行し、詳細を探します。クランクを最大にします。

manage.py test --verboseを実行すると、このデバッグ出力が一番上にありました。

>nosetests --with-spec --spec-color --verbose --verbosity=2

ほら! nosetestsをインストールして忘れていました。そして、--verbosity=2と表示されます。私は3が最大であり、3でそれを実行することがわかりました、私はこれらの多くを見つけました:

nose.selector: INFO: /media/sf_C_DRIVE/Users/me/git/Django/app/tests/test_processors.py is executable; skipped

それは私に正しいヒントを与えました。実際、xビットが設定されているファイルには問題があります。しかし、いくつかのテストを実行したため、テストをスキップすることを明示的に言っていたにもかかわらず、私はコースから外れました。 VMでテストを実行し、Windows NTFSディスクを共有しているため、ビットを変更することはできません。したがって、--exeを追加すると修正されました。

0
Chris

同じファイルにSAME NAMEの2つのテストクラスがありましたが、もちろんすべてのテストを実行できませんでした。

0
Rick Graves

テストクラスにrunというメソッドを作成しましたが、これは非常に悪い考えでした。 Pythonテストを実行したかったが、実行できなかったことがわかりました。この問題は少し異なりますが、結果は同じです-テストが見つからなかったように見えました。

次のメッセージが表示されたことに注意してください。You want to run the existing test: <unittest.runner.TextTestResult run=0 errors=0 failures=0>

0
Qarj