Разработка, управляемая поведением - неопределенные шаги в поведении с использованием Python с Flask
Я следую учебнику Flask и в настоящее время смотрю на Behavior Driven Development, используя Behave.
Моя задача состоит в том, чтобы создать очень простое приложение для блогов, которое позволяет одному пользователю входить в систему, выходить из системы и создавать записи в блогах, используя BDD.
Я написал файл функций, файл шагов и файл среды. Затем я написал код, позволяющий пользователю входить и выходить из системы.
Когда я запускаю приложение локально и вручную тестирую, оно работает как положено, позволяя пользователю входить и выходить из системы, и отображает необходимый текст ("Вы вошли в систему" или "Вы вышли из системы"), поэтому я предполагаю, что проблема с файлом объекта или файлом шагов, а не с кодом приложения.
Когда я запускаю Behave, последний шаг кажется "неопределенным".
Соответствующая часть файла объектов:
Feature: flaskr is secure in that users must log in and log out to access certain features
Scenario: successful login
Given flaskr is setup
When we log in with "admin" and "admin"
Then we should see the alert "You were logged in"
Scenario: successful logout
Given flaskr is setup
and we log in with "admin" and "admin"
When we log out
Then we should see the alert "You were logged out"
И мой файл шагов:
from behave import *
@given(u'flaskr is setup')
def flask_is_setup(context):
assert context.client
@given(u'we log in with "{username}" and "{password}"')
@when(u'we log in with "{username}" and "{password}"')
def login(context, username, password):
context.page = context.client.post('/login',
data=dict(username=username,
password=password),
follow_redirects=True
)
assert context.page
@when(u'we log out')
def logout(context):
context.page = context.client.get('/logout', follow_redirects=True)
assert context.page
@then(u'we should see the alert "{message.encode("utf-8")}"')
def message(context, message):
assert message in context.page.data
Из файла среды:
def before_feature(context, feature):
context.client = app.test_client()
Это последний "тогда" шаг, который кажется проблемой. Я пытался проверить учебные решения и искать в другом месте, но я не могу решить эту часть кода. Мне пришлось закодировать сообщение, так как я использую Python версии 3.5 (учебник использовал версию 2.7, если это актуально).
Любые указатели будут очень цениться.
1 ответ
Перемещение кодировщика решило проблему. У меня сейчас
@then(u'we should see the alert "{message}"')
def message(context, message):
assert message.encode("utf-8") in context.page.data