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

时间:2016-02-11 19:29:49

标签: c# testing bdd specflow specrun

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

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

非常感谢!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果我理解你的问题,你可以使用Scenario Outline而不是Scenario。 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      |

然后,它会针对给出的每个示例运行相同的场景。

答案 2 :(得分:0)

我为此使用环境变量。

但是,如果您确实需要参数,则还可以创建一个.spec(consoleapp),该文件使用specflow / nunit / etc将cmd参数传递给您的类。