0

test我有一个使用Django 库的测试用例。在我的测试中,我有以下内容:

class TestLoadCurve(TestCase):

    def setUp(self):
        self.client = Client()
        self.test_user = User.objects.create_user('test_user', 'a@b.com', 'test_user')
        self.client.login(username="test_user", password="test_user")

    def test_post_loadcurve_as_xlsx(self):
    response = self.client.post(
        reverse('loadcurves-list'),
        {'file': open("app/tests/loadcurve_files/loadcurve.xlsx", "rb"), "name": "testuploadloadcurve"},
    )
    self.assertEqual(response.status_code, status.HTTP_201_CREATED)

(简化的)端点如下所示:

class LoadCurveViewSet(
    mixins.CreateModelMixin,
    mixins.RetrieveModelMixin,
    mixins.ListModelMixin,
    viewsets.GenericViewSet
):
    ...

    def create(self, request, *args, **kwargs):
        up_file = request.FILES['file']
        ...
        return Response(status.HTTP_201_CREATED)

这个测试有效。但我想重新创建POSTcurl用于某些文档的请求。到目前为止,我只做到了:

curl --user <myuser>:<mypass> -X POST -H --data-urlencode "payload={\"file\": $(cat app/tests/loadcurve_files/loadcurve.xlsx), \"name\": \"curlloadcurve\"}" http://localhost:5100/loadcurves/

使用调试器,我可以在 line 处停止处理up_file = request.FILES['file'],此时我意识到两者request.FILES都是request.data空的。我没有正确发出 POST 请求吗?我正在关注这个答案

Python 版本是 3.6.9 Django 版本是 3.1.3

4

0 回答 0