0

すべての AJAX 検証コードを Django Forms に移動しました。テストの更新に助けが必要です。私は基本的に、すべてのスイートで使用される、定数として宣言されたいくつかのテスト データを持っています。次に、テスト全体でこのデータを繰り返します。

セットアップの一環として、いくつかのユーザーを作成し、必要なユーザーにログインします。

def setUp(self):
    self.client = Client()
    create_user(username='staff', email='staff@staff.com',
                password='staff', staff=True)
    create_user(username='agent', email='agent@agent.com',
                password='agent', staff=False)
    ShiftType.objects.create(type_id='SI', description='Sales Inbox')
    self.client.login(username='staff', password='staff')

破棄すると、次のデータが削除されます (または以前は削除されていました)。

def tearDown(self):
    # Clean up the DB
    self.client.logout()
    ShiftType.objects.all().delete()
    User.objects.all().delete()
    Event.objects.all().delete()
    RecurrentEvent.objects.all().delete()

これは正常に機能していましたが、ユーザーが指定したフォーム値 ID が毎回インクリメントされるため、フォームは検証されません。例えば:

 ERROR: <ul class="errorlist"><li>employee_id<ul class="errorlist"><li>Select a valid choice. That choice is not one of the available choices.</li></ul></li></ul>

フォームを印刷すると、ID が毎回インクリメントされていることがわかります。

すべての従業員を削除しているのに、なぜこれが起こるのですか?

4

1 に答える 1

1

毎回データを作成して削除するのではなく、テキストフィクスチャを使用することを検討します。これは、Django で行うのは非常に簡単です。あなたの tests.py では、次のようになります

class BlogTest(TestCase):
    fixtures = ['core/fixtures/test.json']

これを行うと、django はテスト データベースを構築し、それにフィクスチャをロードし、テストを実行し、テストが完了したらデータベースを吹き飛ばします。別のデータベース エンジンを使用したい場合 (テストで高速な sqlite を使用するためにこれを行います)、settings.py に次のようなものを投げることができます。

これにより、IDが毎回同じになり、問題が解決します。

于 2013-03-17T16:33:29.057 に答える