我正在写一个单元测试,它使用登录的用户在查询当前视图:如何设置pytest的current_user?
@app.route('/vendors/create', methods=['GET', 'POST'])
@login_required
def create_vendors():
vendor_form = VendorForm(request.form)
if vendor_form.validate_on_submit():
vendor = db.session.query(Vendors).filter(Vendors.name == vendor_form.name.data,
Vendors.users.contains(g.user)).first()
if vendor:
flash('There is a vendor with this name already.')
return redirect(url_for('create_vendors', vendor_form=vendor_form))
vendor = Vendors(name=vendor_form.name.data, aws_access_key=vendor_form.aws_access_key.data,
merchant_key=vendor_form.merchant_key.data, secret_key=vendor_form.secret_key.data)
vendor.users.append(current_user)
db.session.add(vendor)
db.session.commit()
return redirect(url_for('vendors'))
return render_template('edit_vendor.html', vendor_form=vendor_form)
和测试:
def test_create_vendor(self):
response = TestViews.client.post('/vendors/create', follow_redirects=True,
data=dict(name='Name', aws_access_key='aws_access_key',
merchant_key='merchant_key',
secret_key='secret_key'))
assert response.status_code == 200
vendors = db.session.query(Vendors).filter(Vendors.aws_access_key == 'aws_access_key').all()
assert len(vendors) == 1
assert vendors[0].name == 'Name'
和我的设置LOGIN_DISABLED = True
。
我的问题是,运行测试current_user从未设置。
我试过登录使用测试客户端,并在with TestLogin.client:
包装我的测试,但current_user
只是从未设置。有关如何设置它的任何想法?
你叫'login_user'('flask_security固定回报值
user_id
得到实际的用户。 utils')在你的setUp中?你也可以试试'with self.client:' –是的,这些工作都没有。 – ruipacheco
如何'self.client.post(...)'而不是'TestViews.client.post(...)' –