如何使用 pytest 测试使用 flask 创建的路由?
How can I use pytest to test routes created using flask?
我是 pytest 的新手,我不确定如何为我使用 Flask 创建的这条路线创建 pytest。
@auth.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('auth.me'))
if request.method == 'POST':
user_name = request.form.get('user_name')
password = request.form.get('password')
user = User.query.filter_by(user_name=user_name).first()
if user:
if check_password_hash(user.password, password):
flash('Logged in successfully!', category='accepted')
login_user(user, remember=True)
return redirect(url_for('auth.me'))
else:
flash("Incorrect password, try again.", category='err' )
else:
flash('Username does not exist', category='err')
pass
# if user is logged in already, redirect to /me
return render_template('login.html')
任何指导都会有所帮助?
- 在您的应用所在的同一目录中创建测试文件(例如,test_core.py)
- 输入此代码:
import os
import tempfile
import pytest
from app import app
@pytest.fixture
def client():
app.config.update({'TESTING': True})
with app.test_client() as client:
yield client
- 如果你运行测试套件,你可能会看到输出:
$ pytest
================ test session starts ================
rootdir: ./flask/examples/flaskr, inifile: setup.cfg
collected 0 items
=========== no tests ran in 0.07 seconds ============
- 添加一些测试,例如:
def test_helloworld_page(client):
resp = client.get('/')
assert b'Hello world' in resp.data
这是 client.get
returns response_class 对象。它有 data
属性.
我是 pytest 的新手,我不确定如何为我使用 Flask 创建的这条路线创建 pytest。
@auth.route('/login', methods=['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('auth.me'))
if request.method == 'POST':
user_name = request.form.get('user_name')
password = request.form.get('password')
user = User.query.filter_by(user_name=user_name).first()
if user:
if check_password_hash(user.password, password):
flash('Logged in successfully!', category='accepted')
login_user(user, remember=True)
return redirect(url_for('auth.me'))
else:
flash("Incorrect password, try again.", category='err' )
else:
flash('Username does not exist', category='err')
pass
# if user is logged in already, redirect to /me
return render_template('login.html')
任何指导都会有所帮助?
- 在您的应用所在的同一目录中创建测试文件(例如,test_core.py)
- 输入此代码:
import os
import tempfile
import pytest
from app import app
@pytest.fixture
def client():
app.config.update({'TESTING': True})
with app.test_client() as client:
yield client
- 如果你运行测试套件,你可能会看到输出:
$ pytest
================ test session starts ================
rootdir: ./flask/examples/flaskr, inifile: setup.cfg
collected 0 items
=========== no tests ran in 0.07 seconds ============
- 添加一些测试,例如:
def test_helloworld_page(client):
resp = client.get('/')
assert b'Hello world' in resp.data
这是 client.get
returns response_class 对象。它有 data
属性.