我正在尝试改善我的黄瓜情况(BDD)
假设我们有一个网站,该网站可以处于3个状态,并且基于此状态,它在页面中具有不同的网络元素。
您将如何编写黄瓜方案以使其与BDD方法学非常接近,并且易于理解?
目前,我有:
Scenario Outline: View page in <PAGE STATE> state
Given I opened page in <PAGE STATE> state
Then I should see "<AVAILABLE ELEMENTS>
Examples:
| PAGE STATE | AVAILABLE ELEMENTS |
| State1 | Value input, Default slider, Active slider, |
| State2 | Value input, Default slider, Active slider, Type dropdown |
| State3 | Value input, Default slider, Active slider, Image uploader |
答案 0 :(得分:2)
我不建议所有页面状态使用方案概述。您希望每种情况都严格关注您主张的事物。例如,图片上传器应为自己的场景:
Scenario: Users can upload an image when things are foobarred
# One or more `Given` steps to put the system into the correct state
Given a foo exists
And bar has happened
And a baz has been foobarred
When I am viewing the page
Then I should be able to upload an image
还有一个断言的示例步骤:
[Then(@"I (should|should not) be able to upload an image")]
public void ThenIShouldBeAbleToUploadAnImage(string assertion)
{
bool isFound = false;
try
{
var element = driver.FindElement(By.Css("input[type='file']"));
isFound = true;
}
catch (NoSuchElementException)
{
// do nothing
}
catch (WebDriverTimeoutException)
{
// do nothing
}
if (assertion == "should")
{
// Assert isFound is true
}
else
{
// Assert isFound is false
}
}
方案名称清楚地表明了一个狭窄的测试用例。在此场景的Given
步骤中清楚地定义了页面的每个状态。它也只有一个断言,因此只有一种原因会导致这种情况失败(不存在图像上传字段)。
您希望您的方案只关注一种行为。您的步骤不应描述页面或屏幕的技术细节,而应描述用户的操作。您不应断言上传字段可见。您应该断言自己可以上传图片,并且步骤定义应注意查找图片上传字段。
有关如何编写描述行为的良好步骤而不是逐步完成任务的逐步建议,请参见BDD 101: Writing Good Gherkin。