Иногда вам нужно определить значения динамически (например, datetime now, случайные строки, случайные целые числа, содержимое файла и т. д.) и использовать их на разных этапах без явного или жесткого кодирования значения.
Итак, мой вопрос заключается в том, как я могу определить переменные внутри шагов (правильный способ сделать это), чтобы использовать эти переменные в следующих шагах.
Пример
Given A random string of length "100" as "my_text"
And I log in to my platform
And I ask to add the following post:
| title | description |
| Some example of title | {{my_text}} |
When I submit the post form
Then The posts table shows these posts:
| title | description |
| Some example of title | {{my_text}} |
And I delete any post containing in the description "{{my_text}}"
Это базовый пример, пытающийся объяснить, почему я хотел бы определить переменные в шагах и сохранить их в контексте, чтобы использовать их в следующих шагах.
Моя идея состояла в том, чтобы изменить методы before_step и after_step... чтобы установить переменную в контексте для хранения моих пользовательских переменных следующим образом:
def before_step(context):
if not hasattr(context, 'vars'):
context.vars = {}
if hasattr(context, table) and context.table:
parse_table(context)
def parse_table(context):
# Here use a regex to check each cell and look for `"{{<identifier>}}"` and if match, replace the cell value by context.vars[identifier] so the step "the posts table shows these posts will never know what is `{{my_text}}` it will be abstract seeing the random string.
Схема сценариев, используйте что-то вроде этого, определяя переменные, такие как "<some_identifier>"
, а затем для каждого примера замените значение в шаге.
В основном это воспроизведение поведения, но для любого шага, простого или с использованием таблиц.
Правильно ли это делать?