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

Но я получаю следующую ошибку при попытке проверить этот метод: введите описание изображения здесь

1 ответ

Я думаю, что вы публикуете буквальный словарь для своего маршрута, вместо того, чтобы сначала конвертировать его в json. Так что постарайтесь:

import json
res = self.client().post('/api/v1/user/', data= json.dumps(self.newRecord))
Другие вопросы по тегам