2

次の構造を持つかなり複雑なdjangoアプリがあります。

/myapp
/myapp/obj1/..
/myapp/obj1/views.py
/myapp/obj1/forms.py
/myapp/obj2/..
/myapp/obj2/views.py
/myapp/obj2/forms.py
/myapp/tests/..
/myapp/tests/__init__.py
/myapp/tests/test_obj1.py
/myapp/tests/test_obj2.py

私はより多くのオブジェクトを持っています。からインスタンスを/myapp/tests/__init__.pyインポートし、利用可能なすべてのテストを実行するだけで十分です。TestCasetest_obj1.pytest_obj2.py

私がやろうとしているのは、カスタム テスト スイートを作成することです。ドキュメントによると:

モジュールのテスト スイートを定義する 2 つ目の方法があります。models.py または tests.py で suite() という関数を定義すると、Django テスト ランナーはその関数を使用して、そのモジュールのテスト スイートを構築します。これは、単体テストの推奨構成に従います。複雑なテスト スイートを作成する方法の詳細については、Python のドキュメントを参照してください。

だから、私はこの関数を次のように作成しました:

def suite():
    suite = unittest.TestSuite()
    suite.addTest(TestObj1Form())
    suite.addTest(TestObj2Form())
    return suite

ただし、テストを実行すると、次のエラーが発生しますValueError: no such test method in <class 'myproject.myapp.tests.test_obj1.TestObj1Form'>: runTest。もちろん、このメソッドを定義することはできますが、test を実行すると、このメソッドのみが呼び出され、すべてのtest*メソッドが無視されます。

django アプリのカスタム テスト スイートを適切に作成する方法について何か提案はありますか? 私はグーグルで検索しましたが、それについて何も見つかりませんでした。

4

1 に答える 1

2

特別な関数を使用してすべてのテストを追加する必要があります。

suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestObj1Form))
于 2012-02-13T14:40:13.170 に答える