我正在为我的Flask应用程序进行单元测试。我有一个只能由授权(登录)用户访问的URL。作为设置,我创建了一个测试应用程序,一个临时数据库和一个测试用户。然后我授权测试用户。
我为此网址测试了GET请求,并正确返回200响应。但是,如果我发送任何测试POST或DELETE请求,而不是200,它们分别返回400和401。 我拼写检查了所有参数,我非常确定我会将正确的测试参数与请求一起发送,但我仍然无法弄清楚问题是什么。
测试POST和DELETE请求有什么不同于我不理解的GET请求吗?
以下是我的示例GET和POST请求测试以及相应的实现:
试验:
def test_successful_get(self):
self.login('valid_user', 'valid_password')
response = self.app.get('/home', data=dict(parameter='parameter'))
assert_that(response.status_code, equal_to(200))
def test_successful_post(self):
self.login('valid_user', 'valid_password')
response = self.app.post('/home', data=dict(parameter='parameter'))
assert_that(response.status_code, equal_to(200))
实现:
@app.route('/home', methods=['GET', 'POST', 'DELETE'])
@login_required
def home():
if request.method == 'POST':
insert_param_in_db(request.form['parameter'])
return redirect(url_for('index'))
elif request.method == 'DELETE':
remove_param_from_db(request.form['parameter'])
return redirect(url_for('index'))
return redirect(url_for('index'))