Возможно, немного поздно, но если вас не беспокоят дублирующие имена столбцов:
df.columns = df.columns.tolist()
Вы используете одинарные или двойные кавычки? Двойные кавычки допускают интерполяцию, в то время как одинарные кавычки будут просто использовать содержимое без перевода каких-либо переменных. "#{policy_name}"
должно работать, в то время как '#{any_variable}'
не должно работать.
Не пишите такие шаги и не вкладывайте шаги, вы просто попадете в беспорядок. Также данные предназначены для настройки состояния, а не для выполнения каких-либо действий.
Если у вас есть сложный шаг, подобный этому, у вас есть два лучших варианта, чем вложенные шаги
Наличие таких шагов, как «Когда я что-то щелкаю», является контрпродуктивным. Этот шаг все о том, КАК что-то сделано. Сценарии должны быть о том, что вы делаете, и почему это важно. Функции и сценарии предназначены не для программирования, а для описания поведения и должны быть очень простыми. Так что вы должны написать что-то вроде
Scenario: When I foo then the back button is disabled
Given ...
When I foo
Then the back button should be disabled
, например, для моего банка будет
Scenario: Smile login disables back button
Given I am logged into smile banking
When I try and use the back button
Then I should see the back button disabled warning
Наконец, каждое определение шага должно быть просто вызовом вспомогательного метода. например,
Given 'I am logged into smile banking' do
# NOTE: both params are also helper methods
login(site: smile_banking, user: create_user)
end
это позволяет вам перенести всю сложность из огурца в код. Код может справиться со сложностью, а огурец - нет.