Как почтовый запрос работает с инструментами тестирования Django - PullRequest
0 голосов
/ 24 сентября 2019

Я совершенно новичок в инструментах тестирования Django и Django Rest Framework и немного запутался в том, как отправка почтового запроса работает при загрузке файла.

Вот APITestCase, который я должен загрузить в файл: (Файл представляет собой XML-файл отчета ZAP)

class UploadTest(APITestCase):

    c = APIClient()

    def test_file_upload_ZAP(self):
        self.c.force_authenticate(UserFactory.create())
        with open(path.join('VMA', 'test', 'Test.xml'), "rb") as fp:
            self.c.post('/upload/TestZAPXML.xml', {'filename': 'name', 'attachment': fp})

Проблема заключается в том, что код продолжает ломаться из-за ошибки синтаксического анализа XML.У меня нет проблем при отправке POST-запроса через Postman или httpie - анализатор XML работает так, как задумано.[Единственное различие, которое я заметил между запросом Django Post к Почтальону, заключается в следующем: я изменяю Тело в Почтальоне для отправки в двоичном виде]

Чтобы выяснить, почему это происходит: я решил запустить file.read () вмой метод fileHandler (файл).Файл распечатывает: b'--BoUnDaRyStRiNg\r\nContent-Disposition: form-data; name="filename"\r\n\r\nname\r\n--BoUnDaRyStRiNg\r\nContent-Disposition: form-data; name="format"; filename="Test.xml"\r\nContent-Type: application/xml\r\n\r\n XML-парсеру это не нравится и поэтому выдает исключение.

file.read () должен распечатываться так: <?xml version="1.0" encoding="UTF-8"?><OWASPZAPReport generated="Fri, 29 Mar 2019 21:02:52" version="2.3.1"> Что выводит, когда яиспользуя Почтальон.Это также фактический файл XML.

Что я делаю не так в классе UploadTest, из-за которого появляется Boundary String?

Вот мой views.py на всякий случай, если он действительно влияетЭто.

class FileUploadView(APIView):

    permName = 'fileUpload'

    parser_classes = (FileUploadParser,)

    def post(self, request, filename, format=None):
        file_obj = request.FILES['file']
        return fileHandler(file_obj, request)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...