首页 > 解决方案 > 如何使 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 语句的情况下结束。

我怎样才能解决这个问题?

标签: pythonunit-testingflask

解决方案


推荐阅读