如何获取场景名称和参数?规格流
How to get scenario name and parameters? specflow
在this问题中scenario.getName用于场景名称。除了参数之外,我还需要获取名称。例如,如果场景是:
Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params |
| Date | Today |
| Name | Some Name |
我想获取 nameOfScenario(Date,Today)。
此外,我使用的是 C# 而不是 java
更新
我知道当我用 NUnit 打开测试用例时,它们显示为 nameOfScenario(Date,Today)
。知道 Nunit 是怎么做到的吗?
您可以使用ScenarioContext.Current.ScenarioInfo.Title获取当前场景的标题,但我认为没有任何方法可以获取参数的名称。
NUnit 具有参数名称,因为 Specflow 在设计时使用这些名称生成单元测试 类,它不会在 运行 时间
从 specflow 获取它们
请随意使用 TestContext.CurrentContext.Test.Name
-- 它一定会帮助您获得准确的参数化场景名称。
Specflow 在运行时不带参数,它是 NUnit(或其他单元测试框架)的责任。
至少您可以探索 TestContext.CurrentContext.Test
属性以获取参数列表。
我认为 SpecFlow 没有直接支持这样做。但是,只要稍加努力,就可以达到你想要的结果。
像这样更改场景定义:
Background:
Given parameters <filter> and <params>
Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params |
| Date | Today |
| Name | Some Name |
并实现对应于 Given parameters etc.
步骤的步骤定义。
或者,如果您想要的只是一种区分示例的方法,即您不关心它是 "Date" 和 "Today",您只想知道它是那一行而不是另一个,您可以在示例中添加另一列:
Scenario Outline: name of scenario
Given I am on the proper page
And I am working example number <example number>
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params | example number |
| Date | Today | 1 |
| Name | Some Name | 2 |
在this问题中scenario.getName用于场景名称。除了参数之外,我还需要获取名称。例如,如果场景是:
Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params |
| Date | Today |
| Name | Some Name |
我想获取 nameOfScenario(Date,Today)。
此外,我使用的是 C# 而不是 java
更新
我知道当我用 NUnit 打开测试用例时,它们显示为 nameOfScenario(Date,Today)
。知道 Nunit 是怎么做到的吗?
您可以使用ScenarioContext.Current.ScenarioInfo.Title获取当前场景的标题,但我认为没有任何方法可以获取参数的名称。
NUnit 具有参数名称,因为 Specflow 在设计时使用这些名称生成单元测试 类,它不会在 运行 时间
从 specflow 获取它们请随意使用 TestContext.CurrentContext.Test.Name
-- 它一定会帮助您获得准确的参数化场景名称。
Specflow 在运行时不带参数,它是 NUnit(或其他单元测试框架)的责任。
至少您可以探索 TestContext.CurrentContext.Test
属性以获取参数列表。
我认为 SpecFlow 没有直接支持这样做。但是,只要稍加努力,就可以达到你想要的结果。
像这样更改场景定义:
Background:
Given parameters <filter> and <params>
Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params |
| Date | Today |
| Name | Some Name |
并实现对应于 Given parameters etc.
步骤的步骤定义。
或者,如果您想要的只是一种区分示例的方法,即您不关心它是 "Date" 和 "Today",您只想知道它是那一行而不是另一个,您可以在示例中添加另一列:
Scenario Outline: name of scenario
Given I am on the proper page
And I am working example number <example number>
When I apply <filter> with <params>
And I click filter
Then the data should be filtered
Examples:
| filter | params | example number |
| Date | Today | 1 |
| Name | Some Name | 2 |