を使用する:ジャンゴ場合ドキュメントによれば、ティアダウン法
Aテストケースは、一方で、テーブルを切り捨てず、試験の開始時 初期データをリロード。代わりに、それは テストの終了時にロールバックされ、データベースのトランザクションでテスト コードを囲みます。それはまた、テストの 終了時のロールバックがその初期状態にデータベースを復元することを保証するために、任意の発行からテスト対象のコードがデータベースにロールバック操作をコミットまたは 防止します。 すべてのTestCaseコードがクリーン データベースで始まることを保証するには、 の前に、 データベースを変更する可能性のある他のテスト(doctests)の前にDjangoテストランナーがすべてのTestCaseテストを実行します。
私はこのようになりますテストがあればそう:
class GeneralUserCreateTest(TestCase):
def setUp(self):
create_roletypes()
create_permissiontypes()
self.client = Client()
self.event = create_event()
def test_create(self):
create_url = reverse('event_user_signup', args=[self.event.slug])
post_data = {
'signup-account-email': '[email protected]',
'signup-account-password': 'foobar',
'signup-account-password2': 'foobar',
'signup-account-first_name': 'Foo',
'signup-account-last_name': 'Bar',
}
response = self.client.post(create_url, data=post_data)
self.assertEqual(response.status_code, 302)
# check creation of user object
self.assertEqual(User.objects.filter(email=post_data['signup-account-email']).count(), 1)
user = User.objects.get(username=post_data['signup-account-email'])
# user and profile objects created
self.assertEqual(User.objects.all().count(), 1)
self.assertEqual(Profile.objects.all().count(), 1)
# get the first user and profile object to test against submitted field
user = User.objects.all()[0]
profile = Profile.objects.all()[0]
role = Role.objects.filter(event=self.event, profiles=profile)[0]
self.assertEqual(role.roletype.name, 'General')
self.assertEqual(user.username, post_data['signup-account-email'])
self.assertEqual(user.email, post_data['signup-account-email'])
self.assertEqual(profile.first_name, post_data['signup-account-first_name'])
self.assertEqual(profile.last_name, post_data['signup-account-last_name'])
をteardown
メソッドを実行することが依然として必要であるかTestCase
クラスはそれの世話をするのでしょうか?もしそうなら、いつteardown
メソッドを使うべきですか?TestCase
クラスが利用できるのですか?各テストがトランザクション内で実行されるため、データベースの目的のために