Я пишу unit test для представления, которое использует текущий зарегистрированный пользователь в запросе:
@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
просто не установлен. Любые идеи о том, как его установить?