2016-11-07 12 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은 테스트 실행의 시작 부분에서 읽습니다. 또는 개발자마다 다르므로 데이터베이스를 어딘가에 구성하고 싶습니까? –

답변

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; 
    } 
    }