Cucumber在几个站点上运行测试



我有一个测试列表,我需要在几个网站上运行

我可以做场景大纲在每个测试与网站的例子,但如果网站的列表被改变,我需要改变每个场景的列表。背景没有提纲功能。

@test
Scenario Outline: Test for several sites
When I navigate to <site>
Then something
Examples:
|site|
|https://www.test.com|
|https://www.test2.com|
|…| 

也许有人知道怎么做更正确?

很大程度上取决于有多少测试是通用的,有多少测试是针对每个站点的。

如果所有测试都是通用的,最好的方法是从测试中提取站点,并使用环境变量来设置站点。然后你可以用环境变量运行cucumber,比如

cucumber site_tests SITE=http/your.site.com
cucumber site_tests SITE=http/my.site.com

用于用户帐户等。你可以聪明一点,在特性的支持代码中加入特定于站点的东西,或者使用更多的环境变量。

这将使您的功能更简单,并避免使用场景大纲的需要。


如果你只有几个必须在许多站点上运行的测试,那么我会为每个站点编写一个功能或可能只是场景,例如

mysite.feature
Background:
Given site is my site 
Scenario: Login
Given I am registered
When I login 
Then I should see mystic

yoursite.feature
Background:
Given site is your site
Scenario: Login
Given I am registered
When I login 
Then I should see your site

如果你很聪明并且用高抽象级别编写场景,你仍然可以共享你的大部分步骤定义代码。


当然还有很多其他的解决方案,但总的来说,我强烈建议不要基于场景大纲的解决方案。


希望有用

一种方法是为所有这些站点分配变量,并在特性文件中使用这些变量。您可以在执行期间从常量文件的步骤定义中读取这些变量的值。这样你就可以在一个地方简单地更新它们。

最新更新