【发布时间】:2014-08-02 20:31:35
【问题描述】:
我的models.py 中的模型很少。其中两个如下:
class Event():
eventName = models.CharField( unique = True )
class Job():
event = models.ForeignKey(Event)
jobName = models.CharField
class Meta:
unique_together(('event','jobName'))
我正在使用来自django.test 的Client module 测试此类的模型形式。我失败的测试是在测试unique_together 属性时
以下是我的test.py
class TestJobView(TestCase):
def test_duplicate_job_in_same_event(self):
Event.objects.create(eventName='test_event', noOfVolunteersRequired=10,
startDate='2014-05-05 05:05:05', endDate='2014-05-05 05:05:05')
Job.objects.create(event=Event.objects.get(eventName='test_event'),
jobName='test_jobName',jobDescription='test_jobDescription_1',
noOfVolunteersRequired=10, startDate='2014-05-05 05:05:05',
endDate='2014-05-05 05:05:05')
self.assertEqual(1, Job.objects.filter(event__eventName='test_event',
jobName='test_jobName').count())
c = Client()
response = c.post('/AdminUnit/job/',{'event' : 'test_event',
'jobName' : 'test_jobName','jobDescription' : 'test_jobDescription_2',
'startDate' : '2014-05-05 05:05:05', 'endDate' : '2014-05-05 05:05:05',
'noOfVolunteersRequired' : 5})
self.assertEqual(200, response.status_code)
print response.context['jobsForm']['event'].errors
上面的测试结果打印Select a valid choice. That choice is not one of the available choices.
现在,我有两个问题。首先,不应引发此异常,因为已创建事件并且在上述方法中也是asserted True。其次,如果我从我的角度尝试同样的事情,它会引发 non_field_error 并说 Job with this Event and JobName already exists. 。如何使用 response 在我的 tests.py 中捕获这一点?
【问题讨论】:
标签: python django functional-testing