我有一点设计问题,我很好奇其他用户是否遇到过这个问题以及如何开发最优雅的解决方案。我在 Cucumber 中使用 Capybara/Celerity/Selenium 进行了一些集成类型的功能测试。这些测试的一部分驱动一个外部网站来查看我的资源集成的情况(cookies、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
这仍然需要我编写两个基本相同、相当大的功能文件(但所有参数都已更改)。我将不得不稍后弃用旧的,然后我的所有代码都很复杂。如果失败了,有没有办法退回到替代测试?知道页面设计测试将持续一个月左右,并且整个网站可能会在另一年再次发生变化,那么设计这个最优雅的方法是什么?