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