2016-11-07 30 views
1

我對Specflow/Specrun和C#編程非常陌生。我需要幫助解決我面臨的問題。如何使用動態值運行Specflow/Specrun功能文件

我有一個查詢數據庫的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文件(從命令行),並在運行時提供數據庫名稱。是否有可能實現這一目標?

+1

按運行時間計算的是什麼? srProfile在testrun的開頭讀取。 還是你只是想配置數據庫的地方,因爲它是不同的開發人員? –

回答

0

不知道這是否有幫助,但您可能想使用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; 
    } 
    }