контекст недоступен в python behave

100
12

Я начинаю с поведения Python и застреваю при попытке доступа к контексту - он недоступен. Вот мой код:

Вот файл функции:

Feature: Company staff inventory
Scenario: count company staff
Given a set of employees:
| name | dept |
| Paul | IT |
| Mary | IT |
| Pete | Dev |

When we count the number of employees in each department
Then we will find two people in IT
And we will find one employee in Dev

Вот файл Steps:

from behave import *
@given('a set of employees')
def step_impl(context):
assert context is True
@when('we count the number of employees in each department')
def step_impl(context):
context.res = dict()
for row in context.table:
for k, v in row:
if k not in context.res:
context.res[k] = 1
else:
context.res[k] += 1
@then('we will find two people in IT')
def step_impl(context):
assert context.res['IT'] == 2
@then('we will find one employee in Dev')
def step_impl(context):
assert context.res['Dev'] == 1

Здесь Traceback:

      Traceback (most recent call last):
File "/home/kseniyab/Documents/broadsign_code/spikes/BDD_Gherkin/behave/src/py3behave/lib/python3.4/site-packages/behave/model.py", line 1456, in run
match.run(runner.context)
File "/home/kseniyab/Documents/broadsign_code/spikes/BDD_Gherkin/behave/src/py3behave/lib/python3.4/site-packages/behave/model.py", line 1903, in run
self.func(context, *args, **kwargs)
File "steps/count_staff.py", line 5, in step_impl
assert context is True
AssertionError

спросил(а) 2021-01-19T17:51:12+03:00 6 месяцев, 1 неделя назад
1
Решение
100

Объект context есть. Ваше утверждение является проблематичным:

assert context is True

не работает, потому что context не является True. Единственное, что может удовлетворить x is True, где x установлен в True. context не установлен в значение True. Это объект. Обратите внимание, что проверка того, context is True ли context is True, не является тем же самым, что и проверка того, следует ли писать, if context: использоваться истинная ветвь или ложная ветвь. Последнее эквивалентно тестированию, является ли bool(context) is True.

Нет смысла тестировать, доступен ли context. Это всегда есть.

ответил(а) 2021-01-19T17:51:12+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема