【发布时间】:2015-06-07 08:24:35
【问题描述】:
问题来了: 我有 2 个单独的测试,一个基于 Django 的 TestCase,另一个继承自 APITestCase (Django Rest Framework)。单独运行时不会出现错误,但是当我在 TestCase self.assertEqual(response.status_code, status.HTTP_201_CREATED) 之后运行 APITestCase 时不再起作用。
下面是部分代码:
class CalendarTests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(
email='test@test.com', password='secret', username='tester')
self.calendar = Calendar(owner=self.user, caltype='p', name='Test Calendar')
self.calendar.save();
def test_api_create_bla(self):
self.client.login(username='test@test.com', password='secret')
url = reverse('calendar-api')
data_initial = {'text': 'testing hurray', 'cal_date':'2015-03-15', 'calendar':1}
data_expected = {'cal_date': '2015-03-15',
'text': u'testing hurray',
'otype': 'd',
'owner': u'tester',
'calendar': 1,
'id': 1}
response = self.client.post(url, data_initial, format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(response.data, data_expected)
self.client.logout()
任何帮助表示赞赏。
【问题讨论】:
-
您收到 400 响应(错误请求)。您应该打印出
request.data以进行进一步诊断。 -
贴出相应的观点。
-
@KlausD。没有请求对象(或者存在吗?),但打印响应显示日历 ID 无效。最后,问题出在 MySQL IntegrityError 和 ForeignKeys 中,因为我正在使用 InnoDB。我找到的解决方案是在运行测试时使用 MyISAM。
-
谢谢@KlausD,你是对的,响应对象包含请求。请仔细阅读文档)
标签: python django django-rest-framework