Я использую Behave для автоматизации тестирования конфигурационного файла, поскольку в рамках этого теста мне нужно заполнить различные поля в файле конфигурации недопустимыми и пустыми полями. Когда я ввожу значения, я могу сделать это, используя схему сценария, введя значения в примерах. Однако, когда я пытаюсь ввести пустое поле, используя этот метод, Behave не нравится тот факт, что нет значения.
Есть ли простой способ передать пустое значение из файла примеров, или мне нужно будет проверить эти условия, используя отдельный тест на поведение
feature
Scenario Outline:Misconfigured Identity Listener
Given an already stopped Identity Listener
And parameter <parameter> is configured to value <config_value>
When the Identity Listener is started
Then the identity listener process is not present on the system
And the log contains a <message> showing that the parameter is not configured
Examples: Protocols
|parameter |message |config_value|
|cache_ip_address | cache_ip_address | |
|cache_ip_address | cache_ip_address | 123.123.12 |
шаг, на котором я определяю значение конфигурации
@given('parameter {parameter} is configured to value {config_value}')
def step_impl(context, parameter, config_value):
context.parameter = parameter
context.config_value = config_value
context.identity_listener.update_config(parameter, config_value)
изменение конфигурационного файла с помощью sed -i (я взаимодействую с Linux-модулем в этом тесте)
def update_config(self, param, config_value):
command = 'sudo sh -c "sed -i'
command = command + " '/" + param + "/c\\" + param + "= "+ config_value + " \\' {0}\""
command = command.format(self.config_file)
self.il_ssh.runcmd(command)
Благодаря ответу от @Verv я получил это рабочее решение ниже
передал пустое значение для полей, где мне не нужно переданное значение
|parameter |message |config_value|
|cache_ip_address | cache_ip_address | empty |
Добавлен оператор if else в мой шаг конфигурации обновления
def update_config(self, param, config_value):
if config_value == "empty":
il_config = ""
else:
il_config = config_value
command = 'sudo sh -c "sed -i'
command = command + " '/" + param + "/c\\" + param + "= " + il_config + " \\' {0}\""
command = command.format(self.config_file)
self.il_ssh.runcmd(command)
Вы можете поместить что-то вроде empty
в поле и настроить свой метод так, чтобы всякий раз, когда значение поля empty
, вы рассматриваете его как фактическую пустую строку (например, ""
)