SpecFlow - 有没有一种方法可以让我在 VS 中使用用户输入设置的值 运行 场景?

SpecFlow - Is there a way that i can run scenarios out of VS with values set by user input?

首先,我是新来的,也是 SpecFlow 的新手。我会尽量说清楚,因为我仍在探索解决问题的方法,所以请耐心等待 :)

好的,我走了。我有一个在数据库上执行一些操作的解决方案(我们称之为 DBHelper),我想在 BBD 中提供一个工具(使用 specflow)来确定和设置一个使用测试轨的测试套件,它将 运行 自动.这些测试可能是由单一场景 运行 多次组成的集合,但具有不同的值。我还处于开发此工具的早期阶段,所以我现在拥有的版本已连接到 DBHelper 并在我 运行 NUnit 的 SpecRun 时执行单个操作。

这是我的场景: 场景:InsertBuildCommand

Given The build name is AmazingTest
And The build type is Test
And The platform is PC
And The number of files in the build is 13
And Each file is 8 MB
And The project code name is UPS
And The studio code name is MTL
And The environment is TEST
When The command executes
Then The build should be inserted in the DB with the correct files in it

现在我正在寻找一种使场景动态化的方法。我最终希望用户输入能够 运行 场景但他选择的值(例如:构建的名称将是 MoreAmazingTest)而不是在 VS 中。我知道您可以从命令行 运行 SpecRun,但我不知道如何缩小最初硬编码的场景值与用户输入之间的差距。这些步骤包含有用的正则表达式,因此它实际上只是关于场景值。

有人告诉我有关编写自定义插件或逆向工程规范运行 并对其进行修改的版本,但我不知道这对我有何帮助。请原谅我,如果这一切都有意义,我不是专家 :x

非常感谢!

一种方法是定义某种配置文件,步骤定义将读取该配置文件并对其执行测试。更改文件后,您可以 运行 根据需要从命令行或 VS 进行测试,它会读取文件并从那里获取数字。

如果我正确理解你的问题,你可以使用场景大纲而不是场景。 Scenario Outline help

然后你会得到这样的东西:

Scenario Outline: test using multiple examples
    Given I do something
    When I enter <numbers>
    And I click a button
    Then I will have an answer

Examples:
|numbers|
|1      |
|2      |
|3      |

然后它将运行每个给定示例的相同场景。

我为此使用了环境变量。

但如果您真的需要参数,您也可以创建一个 .exe(consoleapp),它使用 specflow/nunit/etc 将 cmd 参数传递给您的 类。