0
class Dummy(TestCase):
    def setUp(self):
        thing = Thing.objects.create(name="Thing")

    def test_a(self):
       self.assertTrue(Thing.objects.get(pk=1))

    def test_b(self):
       self.assertTrue(Thing.objects.get(pk=1))

この例では、すべてのテスト ケースの前に setUp が実行されることを期待していますが、最初のテスト ケースの前にのみ実行され、変更がロールバックされます。これにより、test_a はパスしますが、同等の test_b は失敗します。これは予想される動作ですか?すべてのテスト ケースの前に、データベースが同じ状態であることを確認するにはどうすればよいですか?

4

1 に答える 1

0

理解した。setUp毎回実行されていますが、データベース内の秘密鍵をインクリメントしているだけです。したがって、pk=1 の Thing は存在しません。これはうまくいきます:

class Dummy_YepThatsMe(TestCase):
    def setUp(self):
        thing = Thing.objects.create(name="Thing")

    def test_a(self):
       self.assertTrue(Thing.objects.get(name="Thing"))

    def test_b(self):
       self.assertTrue(Thing.objects.get(name="Thing"))
于 2013-01-25T03:18:09.003 に答える