Я создаю веб-приложение, используя Flask, и наряду с модульными тестами я пишу некоторые тесты поведения, использующие поведение.Я использую аутентификацию LDAP для аутентификации пользователей, и в своих тестах на поведение я хочу протестировать интерфейс (используя selenium), где пользователь вводит имя пользователя и пароль и входит в систему. Однако, где я создавал фиктивных пользователей в mongodb веб-приложениябазы данных для приложения (а не сервера LDAP) раньше, теперь я не могу запустить свои тесты поведения, поскольку фиктивные пользователи не проходят аутентификацию через LDAP.есть ли способ в моих тестах поведения, я могу смоделировать ответ от LDAP или иным образом обойти это?
Это мой маршрут в файле app.py,
@app.route('/login', methods=['GET', 'POST'])
def login():
login_form = LoginForm()
if request.method == 'POST':
users = mongo.db.users
usrnm = login_form.usrnm.data
pw = login_form.password.data
login = users.find_one({'username': usrnm})
if login:
if Ldap().ldap_check(usrnm, pw):
return redirect('/warning/' + login_form.usrnm.data)
flash('Incorrect login details. Have you requested access?')
return render_template('login.html', form = login_form)
Вотшаг «Поведение» с использованием селена, в котором я ввожу данные и нажимаю кнопку входа:
@when(u'the user enters their username')
def user_credentials(context):
elem = context.browser.find_element_by_name('username')
elem.send_keys('123')
@when(u'the user enters their password')
def user_password(context):
elem2 = context.browser.find_element_by_name('password')
elem2.send_keys('password')
@when(u'the user presses login')
def user_login_button(context):
context.browser.find_element_by_name('signin').click()
Шаг «пользователь нажимает на кнопку входа» завершается неудачно, так как моя программа проверки ldap возвращает false:
def ldap_check(self, username, password):
con = ldap.initialize('ldap://myldapserver.com')
con.start_tls_s()
try:
con.simple_bind_s('cn=' + username +',ou=accounttype,ou=mycompany,dc=mycompanystuff,dc=com', password)
return True
except:
return False