对帖子请求的Flask测试响应错误地返回400

时间:2014-11-18 21:54:37

标签: python post testing flask python-requests

我正在为我的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'))

0 个答案:

没有答案