【问题标题】:How to give multiple data as input in the same feature file in Specflow如何在规格流中的相同功能文件中提供多个数据
【发布时间】:2021-04-16 20:36:33
【问题描述】:
我在应用程序中有一个需要填写数据的表单,例如创建员工。
需要填写员工代码、姓名、地址、银行详细信息等详细信息。
我创建了一个包含 4 个场景的功能文件:
- 员工个人资料
- 员工地址
- 银行详细信息
- 等等。
由于字段相同,如何传递 5-10 名员工的数据?问题是创建时需要填写 15-20 个字段。我尝试使用 Example 关键字并且行长度增加,这使得滚动和搜索变得困难。有没有另一种方法可以让他们作为输入?
我怀疑我们能否为每个场景提供 4 个示例文件。这是真的吗?
请提供更好的方法。
这是一个屏幕截图,显示了我正在谈论的示例文本:
【问题讨论】:
标签:
c#
testing
bdd
specflow
【解决方案1】:
不要在示例表中包含所有字段,而是关注与当前场景相关的字段。
例如,关于个人详细信息的场景可能如下所示:
Scenario Outline: Entering personal details when creating an employee
Given the user is creating a new employee
When the user enters the employee personal details:
| Field | Value |
| First Name | <First Name> |
| Last Name | <Last Name> |
| Date of Birth | <Date of Birth> |
And the user enters the employee address
And the user enters the employee banking details
And the user saves the new employee
Then ...
Examples:
| First Name | Last Name | Date of Birth |
| ... | ... | ... |
| ... | ... | ... |
| ... | ... | ... |
步骤When the user enters the employee personal details: 包含与输入个人详细信息相关的字段。输入员工地址和银行信息的其他步骤可以使用通用数据,只要输入的数据满足业务规则即可。
同样,想象一下输入地址的场景:
Scenario Outline: Entering new employee address
Given the user is creating a new employee
When the user enters the personal details for the new employee
And the user enters the employee address:
| Field | Value |
| Line 1 | <Line 1> |
| Line 2 | <Line 2> |
| City | <City> |
| State | <State> |
| Postal Code | <Postal Code> |
And the user enters the employee banking details
And the user saves the new employee
Then ...
Examples:
| Line 1 | Line 2 | City | State | Postal Code |
| ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... |
这使每个场景的示例表更小且更易于阅读,同时为您提供了很大的数据输入灵活性。
【解决方案2】:
你必须决定什么更重要。
如果能够在测试之外看到正在处理的数据更重要,那么您只需要硬着头皮处理测试文件中的大量文本。
如果保持测试文件简洁更重要,那么您可以将数据创建为某种数据类型(例如 List、Dictionary),并在测试的第一行将数据分配给您指定的变量然后在其余的测试中使用。