我有一些设计问题,我很好奇其他用户是否遇到过此问题以及如何开发最优雅的解决方案。我在Cucumber中使用Capybara / Celerity / Selenium进行了一些集成类型功能测试。这些测试中的一部分驱动外部网站,以查看我的资源整合情况(Cookie,Javascript等)。
一个特定的外部网站正在进行他们自己繁重的A / B测试,其中包含类似但显着不同的网站设计,因此我的测试会因新版本而失败并与旧版本一起工作,因此只能通过大约50%的时间。显然,重新编写我的新测试是毫无意义的,因为其他50%的测试仍然会失败。
我尝试过以下的方式对我的功能进行选择:
Given I visit the new site
And I click on the link that is labeled "new link text"
Given I visit the old site
And I click on the link that is labeled "old link text"
...
When /^I visit the (old|new) site$/ do |version|
version_url = "http://www.example.com/?backdoorversionparam=0"
if version == "new"
version_url = "http://www.example.com/?backdoorversionparam=1"
end
When "I go to the page \"#{version_url}\""
end
这仍然需要我写两个基本相同,相当大的特征文件(但所有参数都已更改)。我将不得不稍后弃用旧的,然后我的所有代码都很复杂。如果一个失败,有没有办法回到替代测试?知道页面设计测试将持续一个月左右的时间,最优雅的设计方法是什么,整个网站可能会在另一年再次发生变化?