您可以在 SpecFlow 的场景大纲中标记单个示例吗?
Can you tag individual examples in a scenario outline in SpecFlow?
场景大纲对于创建数据驱动测试非常方便,但场景的数量会随着示例的数量而增加。我已经养成了标记场景的习惯,这样可以更轻松地过滤我们应用程序的主要功能。
我想设置一个涵盖所有主要用例的 "smoke test"。其中一些用例被捕获在对日期或数字执行边界测试的场景大纲中,但我只想在示例中找到 一个 原型案例。
例如,假设我们有一项功能允许我们向工作添加职位空缺(基本上是 "hiring opportunity" 与 "we have warm bodies filling this position")。
在屏幕上,我们有两个用于最低体验的表单字段:年和月。用户不应在月份字段中输入超过 11 个月,否则他们应该在年份字段中输入一些内容(例如 18 个月实际上应该是 1 年零 6 个月)。
@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
Examples:
| years | months |
| 0 | 1 |
| 0 | 11 |
| 1 | 0 |
| 2 | 6 | # <-- the "prototypical" example I want to tag
| 99 | 0 |
| 99 | 11 |
| 100 | 0 |
从回归测试的角度来看,让这些示例达到可接受的年份和月份值的边界绝对有用,但在执行系统 "smoke test" 时则不然。在场景大纲中 运行 一个代表典型用例的示例会很好。作为一些背景信息,我们有一个 PowerShell 脚本,开发人员可以使用它来 运行 进行各种自动化测试,而一个通用的 "smoke test" 覆盖所有主要功能将很有用。
有没有办法在场景大纲中标记单个示例?
我能够运行通过以下命令从场景大纲中提取单个示例
C:\Users\..\..\bin\Debug>"C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" yourTests.exe /Tests:yourTestName
其中 yourTestName
是构建时在测试资源管理器中生成的测试名称,yourTests.exe
是在 /bin/debug
中生成的 exe。我正在使用 MSTest
有关生成的名称的更多信息,请查看 here
我是这样做的:
@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
@smoketest @regression
Examples:
| years | months |
| 2 | 6 | # <-- the "prototypical" example I want to tag
@regression
Examples:
| years | months |
| 0 | 1 |
| 0 | 11 |
| 1 | 0 |
| 99 | 0 |
| 99 | 11 |
| 100 | 0 |
有两个示例部分都属于该场景。 smoketest 有自己的示例部分。当运行宁
dotnet test --filter "TestCategory=job-opening&TestCategory=smoketest"
它只会运行带有smoketest标签的例子。当运行宁
dotnet test --filter "TestCategory=job-opening&TestCategory=regression"
它会运行所有的例子。它还将 运行 smoketest 因为它也有回归标签。
user1207289的方法也有效。有时我会在测试失败时这样做,我想稍后重新测试它。生成测试后,您想要 运行 的特定示例将获得一个名称(例如 AddingAJob_ExampleYears2Months6)。您可以在带有 -t
标志的场景中找到生成的单元测试的名称,其中列出了所有测试:
dotnet test --filter "TestCategory=job-opening" -t
到 运行 一项特定测试(从技术上讲,名称中包含 AddingAJob_ExampleYears2Months6 的所有测试):
dotnet test --filter AddingAJob_ExampleYears2Months6
我在上面的示例中使用了官方的 dotnet cli 工具,但它与其他测试非常相似 运行ners.
场景大纲对于创建数据驱动测试非常方便,但场景的数量会随着示例的数量而增加。我已经养成了标记场景的习惯,这样可以更轻松地过滤我们应用程序的主要功能。
我想设置一个涵盖所有主要用例的 "smoke test"。其中一些用例被捕获在对日期或数字执行边界测试的场景大纲中,但我只想在示例中找到 一个 原型案例。
例如,假设我们有一项功能允许我们向工作添加职位空缺(基本上是 "hiring opportunity" 与 "we have warm bodies filling this position")。
在屏幕上,我们有两个用于最低体验的表单字段:年和月。用户不应在月份字段中输入超过 11 个月,否则他们应该在年份字段中输入一些内容(例如 18 个月实际上应该是 1 年零 6 个月)。
@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
Examples:
| years | months |
| 0 | 1 |
| 0 | 11 |
| 1 | 0 |
| 2 | 6 | # <-- the "prototypical" example I want to tag
| 99 | 0 |
| 99 | 11 |
| 100 | 0 |
从回归测试的角度来看,让这些示例达到可接受的年份和月份值的边界绝对有用,但在执行系统 "smoke test" 时则不然。在场景大纲中 运行 一个代表典型用例的示例会很好。作为一些背景信息,我们有一个 PowerShell 脚本,开发人员可以使用它来 运行 进行各种自动化测试,而一个通用的 "smoke test" 覆盖所有主要功能将很有用。
有没有办法在场景大纲中标记单个示例?
我能够运行通过以下命令从场景大纲中提取单个示例
C:\Users\..\..\bin\Debug>"C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" yourTests.exe /Tests:yourTestName
其中 yourTestName
是构建时在测试资源管理器中生成的测试名称,yourTests.exe
是在 /bin/debug
中生成的 exe。我正在使用 MSTest
有关生成的名称的更多信息,请查看 here
我是这样做的:
@job-openings
Scenario Outline: Adding a job opening with experience
Given a job exists
When I add a job opening requiring <years> years and <months> months experience
Then a job opening should exist requiring <years> years and <months> months experience
@smoketest @regression
Examples:
| years | months |
| 2 | 6 | # <-- the "prototypical" example I want to tag
@regression
Examples:
| years | months |
| 0 | 1 |
| 0 | 11 |
| 1 | 0 |
| 99 | 0 |
| 99 | 11 |
| 100 | 0 |
有两个示例部分都属于该场景。 smoketest 有自己的示例部分。当运行宁
dotnet test --filter "TestCategory=job-opening&TestCategory=smoketest"
它只会运行带有smoketest标签的例子。当运行宁
dotnet test --filter "TestCategory=job-opening&TestCategory=regression"
它会运行所有的例子。它还将 运行 smoketest 因为它也有回归标签。
user1207289的方法也有效。有时我会在测试失败时这样做,我想稍后重新测试它。生成测试后,您想要 运行 的特定示例将获得一个名称(例如 AddingAJob_ExampleYears2Months6)。您可以在带有 -t
标志的场景中找到生成的单元测试的名称,其中列出了所有测试:
dotnet test --filter "TestCategory=job-opening" -t
到 运行 一项特定测试(从技术上讲,名称中包含 AddingAJob_ExampleYears2Months6 的所有测试):
dotnet test --filter AddingAJob_ExampleYears2Months6
我在上面的示例中使用了官方的 dotnet cli 工具,但它与其他测试非常相似 运行ners.