C# · 12月 24, 2021

c# – 具有方案上下文的表中的规范使用参数

我在C#中使用Specflow来构建自动客户端浏览器测试与Selenium.

这些测试的目标是模拟客户在特定页面进入我们网站的业务场景,
然后他被引导到正确的页面.

我想在场景背景下使用参数,
例如:

When I visit url | base | page | parameter1 | parameter2 | | http://www.stackoverflow.com | questions | <questionNumber> | <questionName> |Then browser contains test <questionNumber>Examples: | <questionNumber> | <questionName> | | 123 | specflow-q1 | | 456 | specflow-q2 | | 789 | specflow-q3 |

注意:步骤“当我访问url”使用base page parameter1 parameter2,创建url“base / page / parameter1 / parameter2”并转到此URL.

问题是在“我访问url”中的输入表是按原样传递文本,而不修改为示例部分中的等同项.

这意味着上述语法构建的表具有一个包含参数名称的数据的行:

http://www.stackoverflow.com,问题,questionNumber,questionName

而不是使用它们的价值:

http://www.stackoverflow.com,问题123,specflow-q1

你知道如何正确使用它?

解决方法 不可能混合数据表和场景轮廓.相反,我将重写您的方案如下: When I visit the URL <base>/<page>/<questionNumber>/<questionName>Then the browser contains test <questionNumber>Examples: | base | page | questionNumber | questionName | | http://www.stackoverflow.com | questions | 123 | specflow-q1 | | http://www.stackoverflow.com | questions | 456 | specflow-q2 | | http://www.stackoverflow.com | questions | 789 | specflow-q3 |

在“当我访问URL”步骤定义时,您将从传入表参数(这是您正在做的)中构造URL.

虽然在“示例”部分中重复了“基础”和“问题”值,但是很清楚可以看到正在进行测试.非技术用户(例如业务用户)也将能够轻松地了解该测试正在尝试实现的功能.