python - Flask API 在尝试从单元测试发布时返回 BAD REQUEST
问题描述
我正在尝试编写一个 API 单元测试来检查数据是否成功插入到数据库中。下面是我的单元测试:
def test_api_can_create_request(self):
"""Test api can create a request"""
res = self.client().post('/api/v1/user/', data= self.newRecord)
self.assertEqual(res.status_code, 201)
这是 setUp 方法,它还定义了在测试方法中使用的 newRecord 对象
def setUp(self):
"""Declare test variables and initialize app."""
self.app = create_app(config_filename=app_config['testing'])
self.client = self.app.test_client
self.newRecord = {'id': 11, 'requestor':'Alicia Keys', 'type': 'maintenance',
'status':'Approved', 'desc': 'Description goes here'}
这是处理用于在数据库中创建新记录的 post 方法的类:
class RequestResource(Resource):
"""Get all request"""
def get(self):
return dtrequest, 200
"""create new request"""
def post(self):
json_data = request.get_json(force=True)
if not json_data:
return {'message': 'No input data provided'}, 400
dtrequest.append(json_data)
return {"status":"success", "data": json_data }, 201
解决方案
我认为您正在将文字字典发布到您的路线,而不是先将其转换为 json。所以试试:
import json
res = self.client().post('/api/v1/user/', data= json.dumps(self.newRecord))