django - DRF:使用 Client() 测试 POST 方法
问题描述
我有一个接受字典列表的类 - data = [{}, {}]
。如果我通过 Postman 发送数据,一切都会正常,但测试 POST 类方法会出现问题。
错误是
FAIL: test_vendor_from_csv_create (vendors.tests.VendorCsvCreateTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/y700/projects/solution/apps/vendors/tests.py", line 128, in test_vendor_from_csv_create
self.assertEqual(response.status_code, status.HTTP_200_OK)
AssertionError: 404 != 200
视图.py
class CsvToDatabase(APIView):
def post(self, request, format=None):
r_data = request.data
for data in r_data:
if data['nda'] == '':
data['nda'] = None
...
#some logic
serializer = VendorsCsvSerializer(data=data)
try:
serializer.is_valid(raise_exception=True)
serializer.save()
except ValidationError:
return Response({"errors": (serializer.errors,)},
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(request.data, status=status.HTTP_200_OK)
测试.py
class VendorCsvCreateTest(APITestCase):
#API
def test_vendor_from_csv_create(self):
url = reverse('csv_vendor_create')
response = self.client.post(url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
我认为问题是format='json'
. 如果是这种情况,如何以正确的格式传输数据?如果原因不同,请您给我一个解决方案!而且我完全不明白为什么status = 404
,400
如果是数据问题,我也不明白。如果我这样做print(url)
,它会返回一个真实的页面 url。如果设置为data = []
空列表 -status=200
返回。
网址.py
urlpatterns = [
path('csv_upload/', FileUploadView.as_view(), name='csv_upload'),
path('from_csv_create/', CsvToDatabase.as_view(), name='csv_vendor_create'),
path('create/', VendorsCreateView.as_view(), name='vendor_create'),]
解决方案
推荐阅读
- tensorflow - tf.keras ResourceExhaustedError: failed to allocate memory training CNN in a loop
- reactjs - WebWorkers - 调用 new Worker() 时未定义 Worker
- apache - RewriteRule 的问题 - 缺少参数
- reactjs - 我如何以及在哪里使用来自 Apollo 客户端的数据?
- python - django.core.exceptions.FieldError:无法将关键字“productcategory_id”解析为字段。选项有:国家、国家/地区 ID、ID、名称、供应商?
- amazon-s3 - 尝试创建 S3 存储桶时来自 pylance 的错误
- c# - WPF XAML 绑定中的自动字段更新 - 简单示例不起作用
- blockchain - 挖完所有比特币后如何记录新交易
- node.js - Jest SpyOn __mocks__ 模块
- css - 如何在 CSS3 中响应式地将项目与 Flexbox 对齐?