python 如何使用XML对Django Rest Framework端点进行单元测试?

rqmkfv5c  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(91)

我有一个用Django Rest Framework构建的端点。当我用Postman之类的东西测试它时,它工作得很好,但我的单元测试失败了。
当我测试我的JSON端点时,我总是发布Python dicts而不是JSON字符串,就像这样:

response = self.client.post('/json-endpoint/', {'a': 1}, format='json')

当我测试XML端点时,我试图发布一个原始的XML字符串,如下所示:

response = self.client.post('/xml-endpoint/', '<?xml version="1.0" encoding="UTF-8" ?><myDataStructure></myDataStructure>', format='xml')

但这不管用。在我的Viewset中,我覆盖了create()方法,在那里,我的XML似乎被“打包”到另一个XML中。如果我在create()方法中打印出request.body,我会看到这个:

b'<?xml version="1.0" encoding="utf-8"?>\n<root>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;\n&lt;myDataStructure&gt;\n etc..

正如您所看到的,我的XML以某种方式进行了编码,然后打包成另一个<?xml version="1.0" encoding="utf-8"?>\n<root>
当我为XML端点编写单元测试时,如何正确地提供XML?

agxfikkp

agxfikkp1#

在单元测试中,我使用以下命令:

result = self.client.post(
    path='/xml-endpoint/', 
    data='<?xml version="1.0" encoding="UTF-8" ?><myDataStructure></myDataStructure>', 
    content_type='text/xml',
)

相关问题