python - 如何使 Flask 单元测试来测试登录
问题描述
主文件
@app.route('/login', methods=['POST'])
def login():
username = request.form['username']
password = request.form['password']
verify(username, password)
def verify(name, psw):
data = User.query.filter_by(username=name, password=psw).first()
if data is not None:
session['logged_in'] = True
else:
session['logged_in'] = False
return redirect(url_for('home', num=None))
测试.py
class UnitTest(unittest.TestCase):
def setUp(self):
self.app = Flask(__name__)
app.config['SECRET_KEY'] = '123'
self.client = self.app.test_client()
self.app = app.test_client()
def test_login(self):
with app.test_client() as client:
client.post('/login', data=dict(username='s', password='s'))
with client.session_transaction() as sess:
assert sess['logged_in']
它通过了测试,但有一些错误。
[2020-05-25 05:48:58,606] 应用程序中的错误:/login [POST] 上的异常回溯(最后一次调用):文件“C:\Users\queen\AppData\Local\Programs\Python\Python38- 32\lib\site-packages\flask\app.py”,第 2447 行,在 wsgi_app 响应 = self.full_dispatch_request() 文件“C:\Users\queen\AppData\Local\Programs\Python\Python38-32\lib\ site-packages\flask\app.py”,第 1953 行,在 full_dispatch_request 中返回 self.finalize_request(rv) 文件“C:\Users\queen\AppData\Local\Programs\Python\Python38-32\lib\site-packages\ flask\app.py”,第 1968 行,在 finalize_request 响应 = self.make_response(rv) 文件“C:\Users\queen\AppData\Local\Programs\Python\Python38-32\lib\site-packages\flask\app .py",第 2097 行,在 make_response 中引发 TypeError(TypeError:视图函数没有返回有效响应。该函数要么返回 None ,要么在没有 return 语句的情况下结束。
我怎样才能解决这个问题?
解决方案
推荐阅读
- c# - EF 核心使用通用工厂注册数据库上下文
- c# - 嵌套类
- : 如何访问列表中的嵌套类?
- python - 如何在 Pandas 列中将科学记数法转换为所需的小数
- ruby-on-rails - ActiveRecord::StatementInvalid: PG::UndefinedTable 在多对多关系中但表存在
- c - 在 Nucleo-F401RE 上使用 DMA 配置 ADC 会产生不稳定的值
- css - 在 2 个单独的表格中选择“selected”类的第一个和最后一个“td”元素
- javascript - react组件构造后如何让函数运行?
- php - 将表情符号从 php Web 应用程序传递到 Oracle db 和 mysql
- python - 当小数> = 1时,pandas / numpy round() 如何工作?
- kotlin - Kotlin:用扩展属性设置器覆盖自我