我刚把所有的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。
即使我要删除所有员工,为什么会发生这种情况?
答案 0 :(得分:1)
我会研究使用文本夹具而不是每次都创建和删除数据。这在Django中很容易做到。在您的tests.py中,它看起来像这样
class BlogTest(TestCase):
fixtures = ['core/fixtures/test.json']
当你这样做时,django将为你构建一个测试数据库,将夹具加载到其中,运行测试,然后在测试完成后吹掉数据库。如果你想使用不同的数据库引擎(我们这样做是为了让我们的测试使用sqlite,因为它很快)你可以把这样的东西扔进你的settings.py
这样就可以确保ID每次都能解决问题。