我在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 |
Run Code Online (Sandbox Code Playgroud)
注意:步骤"当我访问url"时需要base + page + parameter1 + parameter2,创建url"base/page/parameter1/parameter2"并转到此URL.
问题是步骤"我访问url"中的输入表是按原样传递文本,而不修改为"示例"部分中的"等效".
这意味着上面语法构建的表有一行数据参数名称:
http://www.stackoverflow.com,问题,questionNumber,questionName
而不是使用他们的价值:
http: //www.stackoverflow.com,questions,123,specflow-q1
你知道我怎么能正确使用它?
简而言之,我需要的是创建一个Scenario Outline,其中包含一个可重复的步骤,而不必使用多个AND键入它,如下所示:
Scenario Outline: outline
Given I am a user
When I enter <x> as an amount
And I enter <x2> as an amount
Then the result should be <result>
Scenarios:
|x|x2|result|
|1|2 |3 |
|1|0 |1 |
Run Code Online (Sandbox Code Playgroud)
但是,我想做类似以下的事情:
Scenario Outline: outline
Given I am a user
When I enter <Repeat: x> as an amount
Then the result should be <result>
Scenarios:
|x |result|
|1,2,3|6 |
|1,2 |3 |
Run Code Online (Sandbox Code Playgroud)
基本上,我希望"我输入金额"分别运行3次和2次.
我发现这个问题的最接近的是如何重新运行具有不同参数的黄瓜场景轮廓?,但我想在放弃并使用带有逗号分隔列表或类似内容的StepArgumentTransformation之前仔细检查.
我最后的答案更像是这样的:
Scenario Outline: outline
Given I am …Run Code Online (Sandbox Code Playgroud)