Flask API单元测试返回一个空的200响应



我正试图为我的flask项目编写单元测试,但没有成功。例如,我在烧瓶上有以下API终点:

@app.route('/1.0/account/login', methods=['POST'])
def login():
return jsonify({'success':0, 
'response_detail': "Could not log in", 
'method':'login', 
'error_code':1,
'error_tag':"invalid_json_request", 
'response_message':"Failing test request", 
'response_code': 0,
'data': "",
'data_count': 0}), 400

正如您所看到的,它应该总是返回一个带有400响应错误的json对象。

我写了这个测试:

import unittest
from MY_PROJECT import app, db


class BasicTests(unittest.TestCase):

############################
#### setup and teardown ####
############################

# executed prior to each test
def setUp(self):
app.config['TESTING'] = True
#app.config['WTF_CSRF_ENABLED'] = False
app.config['DEBUG'] = False
self.app = app.test_client()
#db.drop_all()
#db.create_all()

# Disable sending emails during unit testing
#mail.init_app(app)
self.assertEqual(app.debug, False)

# executed after each test
def tearDown(self):
pass


###############
#### tests ####
###############
# run with: ENV=test python3 -m unittest fotomarket/tests/test_basic.py
def test_login(self):
r = self.app.post('/1.0/account/login', json={"name":"lala"})
print(r.get_json())
self.assertEqual(r.status_code, 200)


if __name__ == "__main__":
unittest.main()

它运行,但它总是断言响应的状态码是200(尽管它应该是400,但任何地方都没有json数据。我在测试中尝试通过content_type='application/json',但没有成功。我做错了什么?

谢谢。

确保您没有使用任何@app.before_request@app.after_request装饰器,因为它们会影响您获得的结果。它们仅用于处理CORS标头。

相关内容

  • 没有找到相关文章

最新更新