在小黄瓜中处理/传递特征文件中的多个参数
本文关键字:文件 参数 特征 小黄瓜 处理 | 更新日期: 2023-09-27 18:28:53
如何使用特性传递多个参数。
我知道"示例:"概念的用法,但它在某种程度上使功能文件变得更加复杂和不可读
示例:
Scenario Outline: To verify that default value for some timeout when invalid/remove is set for some timeout parameter
When <parameterA> is <action> with <parameterB> for <someOtherParameterPair> in <fileName>
Then <parameterA> is updated with value <parameterB> for <someOtherParameterPair> in <fileName> as per defined <action>
Examples:
|parameterA |parameterB |action|someOtherParameterPair|fileNameWithSectionName|
|oneParameter|twoParameter|update|key:Value |abc.config:appSettings |
|oneParameter|twoParameter|delete|key:Value |def.config:appSettings |
在这里,我有大约7个参数,它们来自测试用例(由于限制,我试图适应5个参数)
我将使用步骤定义文件中的split将"someOtherParameterPair"answers"fileNameWithSectionName"一分为二。所以我总共有大约7个参数,这些参数将在测试用例中使用。
但我不确定接受Given/Whin/Then语句中如此大量的参数是否可行。这也让我的测试用例变得不可读。
在上面的场景中,我试图修改位于特定位置的*.config文件中的一些参数(我从功能文件传递这些参数,以便我的When/Then语句可以修改)。
之后我需要执行测试用例。
同样,我的测试套件中也有其他(大多数)案例。
请帮助我是BDD正确的方法。BDD会不会在维护中产生一些问题,因为我看到了很多东西(几乎所有的东西都来自)功能文件。
答案是不要这样写特性。与其用你的特性来描述你正在测试的how
,不如用它来解释你正在测试what
和why
一般来说,这意味着你不需要使用例子,当然也不需要像现在这样使用复杂的例子。您总是可以将示例的使用降低到较低的级别,例如步骤定义。
在这种情况下,您似乎应该编写一个单元测试。在这个场景中没有任何商业价值的描述。
BDD是关于描述行为并用它来推动发展。你不能在东西写完后用它来测试!!
示例表不应超过3列。否则,就不可能理解列之间的关系、测试方法、测试目标,也不可能分析测试结果。
您需要明确测试目标才能重构它。优化的可能步骤:
- 如果您测试某些参数在某些条件下从值
oneParameter
更改为twoParameter
,那么有<parameterA>
列的原因是什么?如果该参数应该被覆盖,那么它以前的值就不是必需的,您可以忽略它 someOtherParameterPair
和fileNameWithSectionName
之间有什么关系?你真的需要在你的表中把这些列分开吗?也许你可以把它们组合成<pathToTheParameterPair>
根据上面的假设,您的场景可以简化如下:
Scenario Outline: To verify that default value for some timeout when invalid/remove is set for some timeout parameter
When SettingName is <action> with <parameterB> for <pathToTheParameterPair>
Then SettingName is updated with value <parameterB> for <pathToTheParameterPair> as per defined <action>
Examples:
| parameterB |action | pathToTheParameterPair |
| twoParameter |update | abc.config:appSettings:key:Value |
| twoParameter |delete | def.config:appSettings:key:Value |