SpecFlow - 有没有办法让我使用用户输入设置的值在 VS 之外运行场景

本文关键字:VS 运行 设置 输入 有没有 用户 SpecFlow | 更新日期: 2023-09-27 18:34:11

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

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

这是我的方案:场景:插入生成命令

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,但我对如何缩小原始硬编码场景值和用户输入之间的差距一无所知。这些步骤包含有用的正则表达式,因此它实际上只是关于方案值。

有人告诉我如何编写自定义插件或逆向工程 Specrun 并制作它的修改版本,但我不知道这对我有什么帮助。如果这一切都有意义,请原谅我,我不是专家:x

多谢!

SpecFlow - 有没有办法让我使用用户输入设置的值在 VS 之外运行场景

如果我

正确理解您的问题,您可以使用场景大纲而不是场景。方案大纲帮助

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

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      |

然后,它将对给定的每个示例运行相同的方案。

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

我为此使用环境变量。

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