BDD Behat根据配置文件更改预期值

时间:2016-07-15 19:14:18

标签: php bdd ui-automation behat

我的Behat功能文件是

Scenario: verify docs
   Given I'm on "/docs"
   Then I should see "link1" link with href of "https://server1.xyz.com/link1"
   Then I should see "link2" link with href of "https://server1.xyz.com/link2"
   Then I should see "link3" link with href of "https://server1.xyz.com/link3"
   Then I should see "link4" link with href of "https://server1.xyz.com/link4"
   Then I should see "link5" link with href of "https://server1.xyz.com/link5"

链接的预期值会根据个人资料发生变化。说,如果我使用server1配置文件运行,那么我期望link1的链接是“”https://server1.xyz.com/link1“如果我想使用server2配置文件运行,那么我期望的link5的链接是”“{{ 3}}”。

所以可以使用参数文件来说明 例如

profile: server1
linkvar1: "https://server1.xyz.com/link1"
linkvar2: "https://server1.xyz.com/link2"

profile: server2
linkvar1: "https://server2.xyz.com/link1"
linkvar2: "https://server2.xyz.com/link2"

并在我的功能文件中

Given I'm on "/docs"
Then I should see "link1" link with href of "%linkvar1%"
Then I should see "link2" link with href of "%linkvar2%"

或者建议我如何以更好的方式实现。

1 个答案:

答案 0 :(得分:0)

这里有多个选项:

1)仅通过页面检查链接(没有基本URL)  您可以采取以下步骤:

I should see link that contains "link1"

在此步骤中,您将获得href属性并检查参数。

2)获取每个链接的选择器并检查您需要的内容(元素存在/可见)。您可以使用以下步骤:

I should see an "css_selector" element
the "css_selector" element should not be visible

当然,选择器应该基于href,例如:



[href*='link1']
[href$='link1']




在此处查看更多css选择器:w3schools

3)如果您有不同数量的链接,那么您可以在behat.yml中为每个配置文件添加一个参数,读取该参数并在控制结构中使用它(if-else,switch)。您可以定义一个步骤:

the navigation menu should be displayed

the section_name section should be displayed

您可以为每个配置文件定义参数,但考虑尽可能高效地使用它们,您可能不希望behat.yml充满参数。