1. ホーム
  2. python

[解決済み] Django のテストランナーでテストが検出されない

2023-02-27 16:25:07

質問

私は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

どのように解決するのですか?

解決しました。

私が行ったのは django-admin.py startproject pyDietTracker ではなく python manage.py startapp myApp . 戻ってやってみると、ドキュメント通りに動きました。 Djangoでの読み方やサイトとアプリの違いについて、私は学ぶべきことがたくさんあるように思われます。

S.Lottさん、Emil Stenströmさん、ありがとうございました。 どちらもとても助かりましたので、両方の回答を受け入れることができればと思います。

最も重要な教訓 テストはサイトレベルではなく、アプリレベルでしか機能しない。