Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django REST框架的PUT方法的单元测试_Django_Unit Testing_Django Rest Framework - Fatal编程技术网

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/类似于浏览器中的详细视图,但它不起作用。