我正在努力改进我的黄瓜场景(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 |发布于 2019-07-11 15:39:29
我不会为所有的页面状态推荐一个场景大纲。您希望每个场景都集中在您所断言的内容上。例如,图像上传程序应该是它自己的场景:
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:写好的Gherkin,而不是一步一步地完成任务。
https://stackoverflow.com/questions/56988515
复制相似问题