4

teardownFactoryBoy + Django の仕組みがわかりません。

次のようなテストケースがあります。

class TestOptOutCountTestCase(TestCase):
    multi_db = True

    def setUp(self):
        TestCase.setUp(self)
        self.date = datetime.datetime.strptime('05Nov2014', '%d%b%Y')
        OptoutFactory.create(p_id=1, cdate=self.date, email='inv1@test.de', optin=1)

    def test_optouts2(self):
        report = ReportOptOutsView()
        result = report.get_optouts()
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0][5], -1)

setUpすべてのテストに対して1回実行するのは正しいですか? 2 番目のテストがあり、それを実行する前にクリーンな状態が必要な場合、どうすればこれを達成できますか? ありがとう

4

1 に答える 1

5

各テストtearDown間のデータベースのリセットは.TestCase

見る:

各テスト ケースの開始時、setUp() が実行される前に、Django はデータベースをフラッシュし、migrate が呼び出された直後の状態にデータベースを戻します。

...

このフラッシュ/ロード手順は、テスト ケース内の各テストに対して繰り返されるため、テストの結果が別のテストやテストの実行順序に影響されないことを確認できます。

OutputFactoryそれとも、特定のテストを介してインスタンスの作成を制限するつもりですか?

次に、インスタンスの作成を に入れるべきではありませんsetUp

または、TestCase の 2 つのバリアントを作成します。1 つはファクトリに依存するすべてのテスト用で、もう 1 つはファクトリに依存しないテスト用です。


の使用については、tearDownこの回答を確認してください: Djangoいつティアダウンメソッドを使用するか

于 2014-11-14T19:55:38.253 に答える