Разработка, управляемая поведением - неопределенные шаги в поведении с использованием 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
Другие вопросы по тегам