У меня есть веб-приложение Flask, написанное и пишущее тестовые сценарии для одного и того же с использованием unittest. Ниже описано, как он обрабатывает маршрут signup
.
server.py
@app.route('/signup', methods=['GET', 'POST'])
def signup():
if current_user.__dict__.get('id', None):
return render_template('login.html')
if request.method == 'GET':
return render_template('signup.html')
else:
data = request.get_json()
username = data.get('username', '').lower()
password = data.get('password', '')
client = data.get('client', '')['name']
confirm_password = data.get('confirm_password', '')
Внутри тестового файла есть вспомогательные методы для регистрации
test_unittesting.py
def signup(self, username, password, confirm, client):
return self.app.post(
'/signup',
data=json.dumps(dict(username=username, password=password, confirm=confirm, client=client)),
follow_redirects=True
)
Но, похоже, это не работает. request.get_json()
возвращается пустым. Параметры присутствуют в request.get_data()
, а не в request.get_json()
. Я не могу изменить вспомогательный метод для поддержки метода, определенного для маршрута. Что я должен изменить в тестовом файле, чтобы он работал как request.get_json()
?