行为-使用空白示例字段进行测试

时间:2018-09-24 13:59:49

标签: python python-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)

1 个答案:

答案 0 :(得分:1)

您可以在字段中放入类似empty的内容,并调整方法,以便每当字段的值为empty时,就将其视为实际的空字符串(即""