Django REST框架的PUT方法的单元测试
我正在尝试为Django REST框架的PUT方法的单元测试,django,unit-testing,django-rest-framework,Django,Unit Testing,Django Rest Framework,我正在尝试为APIviewSet编写测试。GET和POST工作都很好,但我不能将测试与PUT方法结合起来。我认为问题与我传递给函数的路径有关,但我不知道如何修复它。我在文件里什么也没找到 class ResponseTracebackTestCase(TestCase): """class for traceback""" class JustTest(ResponseTracebackTestCase): maxDiff = None def setUp(self):
APIviewSet
编写测试。GET和POST工作都很好,但我不能将测试与PUT方法结合起来。我认为问题与我传递给函数的路径有关,但我不知道如何修复它。我在文件里什么也没找到
class ResponseTracebackTestCase(TestCase):
"""class for traceback"""
class JustTest(ResponseTracebackTestCase):
maxDiff = None
def setUp(self):
# Every test needs access to the request factory.
self.factory = APIRequestFactory()
self.time = datetime.datetime(2010, 1, 1)
self.user = User.objects.create_user(
username='admin', email='admin@admin.com', password='top_secret1', born_date=self.time, date_joined=self.time)
self.view = ClientViewSet.as_view({'get': 'list', 'post': 'create', 'put': 'update'})
#...some_code
def test_admin_update(self):
request = self.factory.put('/api/service/client/', {...some_data})
force_authenticate(request, user=self.user)
response = self.view(request, pk=1)
self.assertResponseCodeEquals(response, 200)
response.render()
self.assertEqual(json.loads(response.content), {...some_data})
回溯:
File "/code/service/tests.py", line 138, in test_admin_update
self.assertResponseCodeEquals(response, 200)
File "/code/service/tests.py", line 32, in assertResponseCodeEquals
) + '\n' + ''.join(format_list(response._init_stack))
AssertionError: 404 != 200 : Response code was '404', expected '200'
答复.详情:
{'detail': ErrorDetail(string='Not found.', code='not_found')}
Put应用于“详细”视图集,而不是您似乎正在使用的“列表”视图集(无法从url中识别关联的资源)。我尝试将地址更改为./client/4/类似于浏览器中的详细视图,但它不起作用。