我想知道我的验证是否有解决方法。用类似的东西替换了实际步骤。
是否可以定义示例表,并将整个表作为数据传递给每次迭代?
我有大量要验证的子元素列表,因此我不想在每个迭代中用分隔符分隔子元素数据。
以下是示例方案
ScenarioOutLine: Validate POST call for XXX to have valid sub elements under each element
Given Request headers are set
When Request is posted
Then the response body content has element <ele_name> with sub elements <Sub_ele>
Examples:
|elem_name>|<Sub_ele>|
|Dept|{Dept_Sub_elements}|
|Subject|{Subject_Sub_elements}
|Course|{Course_Sub_elements}|
Examples:
|Dept_Sub_Elements|
|IT|
|Marketing|
Examples:
|Subject_Sub_Elements|
|Anatomy|
|Physciology|
|Management,economics|
答案 0 :(得分:0)
您可以在所需的Given,When或Then步骤之后使用DataTable。 参见参考:https://cucumber.io/docs/reference#data-tables
根据您使用的语言,您应该能够在线查找示例。以下是specflow的示例:
Having Tables in Example Table in SpecFlow
如果您有庞大的数据表(数百行),那么您可以考虑将数据保存在不同的文件(属性文件,json文件甚至excel文件)中
对于较小的表,可以在.feature文件中提及它们。为了便于阅读,您可以使用表格格式化插件进行intellij或eclipse。 例如 https://plugins.jetbrains.com/plugin/7550-pipe-table-formatter
答案 1 :(得分:0)
为什么不使用单个示例表作为验证步骤的输入?由于示例表中没有任何内容改变给定或when语句,因此多次运行此场景没有任何价值。
即使你多次运行它,我也看不到你想做什么的价值,这让人类更难理解这些例子。鉴于BDD的全部意义在于围绕特征文件和场景与利益相关者进行对话,任何使人们更难理解这些示例的事情通常都是BDD和Cucumber所关注的难闻气味。因此,在尝试干掉表格方面存在负面价值
Then the resulting page should have <Sub_element> found under <Element>:
| <Element> | <Sub_element> |
| Dept | IT |
| Dept | Marketing |
| Subject | Anatomy |
| Subject | Physciology |
| Subject | Management,Economics |
| Course | CompSci 210 |
| Course | Math 101 |
答案 2 :(得分:0)
我会隐藏步骤中的所有强制验证,在每个场景后我总是调用的方法,而不是用它污染我的功能文件。强制性要素应始终存在。当您讨论最终用户真正关心的系统实际操作时,它们并不重要。
BDD和Cucumber都是关于沟通而不是测试。
我总是努力隐藏我的方案中的技术细节,因为他们需要被业务代表理解。技术细节属于步骤委托给的步骤或帮助程序代码。从我的角度来看,您的必修元素是技术细节。