c# - 如何使用动态值运行 Specflow/Specrun 特征文件

标签 c# specflow specrun database-testing feature-file

我对 Specflow/Specrun 和 C# 编程非常陌生。我需要帮助来解决我面临的问题。

我有一个查询数据库的 Specrun 功能文件。以下是功能文件的代码:

Scenario Outline: Ensure all rows are correctly inserted on in the table
    Given I am connected to "Database-XYZ"
    When I run a script to ensure all rows are inserted for <tableName> of a <schemaName>
    Then All tables have correct <columnCount> count.

这绝对没问题。但我想注释第二行并使用 default.srprofile 文件在运行时指定数据库名称。

我想使用default.srprofile文件执行runtests.cmd文件(从命令行)并在运行时提供数据库名称。可以实现这个目标吗?

最佳答案

不确定这是否有帮助,但您可能想使用 app.config。我设置数据库和环境,然后从步骤中调用它。这样,您只需更改 app.config 中的值即可根据测试环境创建调用并设置数据库。你可以做类似下面的事情。

 app.config
 <add key="DatabaseTest" value="myDBConnectionString" />
 <add key="DatabaseDev" value="myDBConnectionString" />
 <add key="Environment" value="test" />

 Step:
 using System.Configuration; //make sure you have this included to use ConfigurationManager

    [Given(@"I am connected to my environment database")]
    public void GivenIAmConnectedToMyEnvironmentDatabase()
    {

     var myEnv = ConfigurationManager.AppSettings["Environment"];
     switch (myEnv)
     {
       case "test":
         var  _testDatabase = ConfigurationManager.AppSettings["DatabaseTest"];
         //create db connection 
         break;
       case "dev":
          var _devDatabase = ConfigurationManager.AppSettings["DatabaseDev"];
          //create db connection 
          break;
     }
     }

关于c# - 如何使用动态值运行 Specflow/Specrun 特征文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40461763/

相关文章:

testing - 命令行中的 SpecRun.exe : run . 功能或 .playlist 文件

c# - 我是否应该将 async/await 添加到单行函数中?

xslt - SpecFlow 的自定义报告

c# - 有没有办法按所需顺序运行 Specflow 场景(C# Selenium)?

specflow - 有人使用过 Specflow 的批准测试吗?

specflow - 规范运行器 : Test Method getting called twice

assert - 即使在场景中间失败,我可以让 Specflow 做最后一件事吗?

c# - VS 2010 中的状态机工作流

c# - .NET 4.5 中的垃圾收集是否有变化

c# - 比较字典中值之间的差异