Python无法将参数从特征文件传递到黄瓜中的步骤定义

时间:2019-09-11 07:33:07

标签: python selenium automation cucumber python-behave

我正在尝试使用python在带有黄瓜的硒中实现POM模式。当我尝试将参数从黄瓜特征文件传递到步骤定义时被阻止。我已经搜索过栈(link),但是解决方案并没有太大帮助。

请找到我的工作,并帮助我解决或将我重定向到任何资源,在哪里可以找到支持。

这是我的功能文件,正在尝试传递参数

enter image description here

下面是我的步骤定义实现, enter image description here

尝试调试,没有运气。还要注意,我正在尝试使用python-behave和直接从功能文件运行的pycharm执行测试。

我尝试过但不起作用的解决方案:

1: 来自功能文件:launch the application 'url_address' 在步骤def文件中:@given('launch the application {url} ')

2: 来自功能文件:launch the application 'url_address' 在步骤def文件中:@given('launch the application "{url}" ')

3: 来自功能文件:launch the application '<url_address>' 在步骤def文件中:@given('launch the application "{url}"')

4: 来自功能文件:launch the application '<url_address>' 在步骤def文件中:@given('launch the application "(.*)" ')

提前谢谢

2 个答案:

答案 0 :(得分:0)

问题是您在step_definition中的参数使用引号不一致。

如果在step_definition中对参数使用单引号,则在功能文件中也需要这样做。

您必须遵循(不同的)step_definitions:

@given('Launch the application "(.*)"')

@then("Click on '(.*)' image")

您应该选择一种方法。两者都很好,但是如果要保留它,则还需要以两种不同的方式在功能文件中调用它们。


QUICKFIX

下面的(.feature)示例应该可以与您的step_definitions如屏幕截图所示一样工作:

(在step_definition中定义了双引号,因此在功能中将双引号用于参数)

Given Launch the applicaion "https://www.whateverurl.com"

(在step_definition中定义了单引号,因此对功能中的参数使用单引号)

Then Click on 'imageName' image

建议: 在step_definitions中使用单引号作为步骤名称,并在参数中使用双引号(就像您在“启动应用程序”步骤中所做的一样)。只需记住,然后再用双引号来调用参数即可。

请告诉我这是否有帮助!

答案 1 :(得分:0)

Behave支持多个 step匹配器,以匹配步骤中的参数。 默认匹配器是 parse 匹配器。 因此,您的步骤定义应如下所示:

# -- FILE: features/steps/browser_steps.py
...
@given('launch the application "{url}"')
def step_given_launch_application(context, url):
    print("Using url={0}".format(url))
# -- FILE: features/example.feature
Feature:

  Scenario: 
    Given launch the application "https://example.com"

提示:

  • 在上面的描述中,您有一个尾随空格:“ launch ... {url}”。 这可能会导致问题,因为在解析功能文件时,此空格可能不匹配。解析器在每一行的末尾删除空格。

  • 双引号和单引号不同。 在小黄瓜和步骤定义中使用相同的内容。

  • 大写与小写:步匹配区分大小写 您正在Gherkin中使用“给定启动应用程序...”,但在Python的步骤定义中正在使用“启动应用程序...”

  • 如果要使用正则表达式步骤匹配器,则应使用命名参数(由于无法猜出您的意思,必须正确指定)

另请参见: