1

Django には、「ユニット」、「機能」、「遅い」、「パフォーマンス」など、さまざまな「タイプ」に分類される一連のテストがあります。

現在、特定のタイプのテストのみを実行するために使用されるデコレーター (@skipIf(...) に似ています) で注釈を付けていますが、これは最適なアプローチではないようです。

テストをタイプに分離するためのより良い方法があるかどうか疑問に思っていますか? 私は、さまざまなテスト ランナーを使用したり、既存の django テスト フレームワークを拡張したり、スイートを構築したり、他の利点が犠牲にならない場合は別のテスト フレームワークを使用したりすることにオープンです。

これを行う根本的な理由は、効率的なビルド パイプラインを実行することです。したがって、私の優先事項は次のとおりです。

  • 継続的インテグレーションの実行が最初に単体テストを確認することを確認します。
  • おそらくいくつかのテスト実行を並列化する
  • テストの一部のクラスを完全にスキップする
4

2 に答える 2

1

私の会社がテストを編成する方法は、テストを 2 つの大きなカテゴリに分割することです。ユニットと機能。単体テストは、Django テスト ディスカバリ内に存在します。manage.py test はそれらを実行します。機能テストは、そのディレクトリの外にあります。これらは、手動または CI によって実行されます。この場合はビルドボット。それらはまだ unittest textrunner で実行されます。また、ストレス テストと呼ばれる機能テストのサブカテゴリもあります。これらは、サーバーに対して大まかな処理を行っているため、並行して実行できないテストです。データベースをオフにして何が起こるかを確認するようなものです。

その後、CI は各テスト タイプを異なるステップとして実行できます。テストは skipif で装飾できます。

これは完璧な解決策ではありませんが、非常に明確で理解しやすいものです。

于 2012-08-16T08:01:21.913 に答える
1

これに対する私の方法は次のようになります。

  1. testsアプリフォルダーにフォルダーを作成する
  2. テスト ケース (unit_test.py、functional_test.py など) を含む py ファイルを作成します。
  3. __init__.py次を使用してテストディレクトリに作成します。

    from unit_tests import *
    
    from functional_tests import *
    

そして、次のように manage.py からテストを実行できます。

manage.py test # run all tests (include django tests)
manage.py test my_app # run all my tests
manage.py test my_app.UnitTestCase # run specific test case
于 2012-08-16T14:53:11.417 に答える