Mar*_*low 3 bdd selenium specflow gherkin
我们正在应用BDD并使用SpecFlow和Selenium.验收标准在Gherkin中规定.
我对Given子句有疑问.
一个例子可能是......
因此,对于'鉴于我在订单详情页面',我们必须登录并准备好提交订单.但是我们如何达到这一点呢?
如果我们已经有相关的现有SpecFlow步骤,我们可以使用这些(通过Selenium)来找到正确的点 - 这样的事情......
我们甚至可以将步骤代码中的所有步骤放在"鉴于我在订单详情页面上"
但是我们是否有权使用Selenium来实现Given?或者我们应该找到一些方法来设置会话/数据库中的所有相关状态/数据而无需通过UI?
我怀疑这里没有对错.我不得不说它对我们来说非常好,但我们一直在寻求改进我们的方法.因此,非常有兴趣听取任何有实际经验的人的意见.
我希望Stack Overflow是正确的论坛(不能不认为它不是 - 如果是这样,请不要让我失望!)...
您可以从步骤定义中调用其他步骤
[Given(@"I am on the order details page ")]
public void GivenIAmOnTheOrderDetailsPage()
{
Given("I am a registered user");
And("I am on the login page");
// so on
}
Run Code Online (Sandbox Code Playgroud)
我假设您正在执行集成测试,因此访问数据库是有意义的。
Selenium 自动化 ui 测试 - 我不会用它来设置数据,因为对 ui 的更改将破坏实际上只应该依赖于初始有效订单状态的测试。
为了执行您的代码,可能需要执行一些步骤 - 例如登录......但它们实际上并不是您在此测试中测试的内容。您是否考虑过使用背景标签来设置它们?
Feature: Order Details Page
As a customer ...
I want to ...
So that ...
Background:
#set up user authentication status
Given I am logged in
#set up order status to be consistent with this page
And I have an order ready for submission
Scenario: I can submit my order
...etc...
Scenario: I can cancel my order
...etc...
Run Code Online (Sandbox Code Playgroud)
通过这种模式,复杂的“我在订单页面”被分解为多个设置有效状态的后台步骤,并且功能文件现在可以引用该页面上的多个操作而无需重复。
我认为如何为集成测试设置数据取决于您。但我觉得以正确的状态构建记录会更干净。
避免I log in using my registered username and password
直接使用 来设置身份验证状态I am logged in
。类似地设置顺序 - 不要依赖您未测试的生产代码,否则您的测试将在错误的情况下失败。
您可以重复使用给定的步骤 - 但它们不应该依赖于生产代码。
归档时间: |
|
查看次数: |
1962 次 |
最近记录: |