2017-06-05 11 views
0

免責事項:私は仕事で学んでいる相対的なコーディングの初心者です。投稿TestFail結果をTestRail

CucumberとC#Seleniumを使用するためのSpecflowプロジェクトをセットアップし、TestRail APIをダウンロードしました。私はシナリオの終わりにスタティックテストレールIDにテスト結果を投稿する既存の例に従った。

{ Gurock.TestRail.APIClient client = new Gurock.TestRail.APIClient( "https://testrail.placeholder.com/testrail"); client.User = "[email protected]"; //ここにあなたのユーザの電子メールを入れてください client.Password = "password"; //ここにユーザーのパスワードを入れて

  Dictionary<string, object> testResult = new Dictionary<string, object>(); 
     if (null != ScenarioContext.Current.TestError) 
     { 
      testResult["status_id"] = "5"; //failed; 
      testResult["comment"] = ScenarioContext.Current.TestError.ToString(); 
     } 
     else 
     { 
      testResult["status_id"] = "1"; //passed 
     } 
      client.SendPost("add_result_for_case/:run_id/:case_id"); //Here I am using a hardcoded test id.} 

Iは、例えば、シナリオタグに基づいている場合を使用してシナリオに上記のコードをリンクすることができます

しかし、この問題は、毎回固有のIFステートメントとタグを使用して、すべてのシナリオで上記のコードを複製する必要があるということです。私が望むのは、転記をparamatariseする方法です。そのため、各シナリオの結果を正しい静的なTestRail IDに送信できるコードブロックが1つだけ必要です。

答えて

0

通常のタグと区別できるように、CaseIDタグの前に接頭辞を付けます。
があなたのタグがTC 1、TC_42、同様に命名されるようになりましたテストケースIDを取得するには...、TC_で

を言うことができます、あなたはScenarioContext.Current.ScenarioInfo.Tags

にTC_で始まるつのエントリを見つけなければなりませんこれのコードは次のようになります:

var tags = ScenarioContext.Current.ScenarioInfo.Tags; 
var testCaseIds = tags 
        .Where(i => i.StartsWith("TC_")) //get all entries that start with TC_ 
        .Select(i => i.Substring(3)); //get only the part after TC_ 
        .ToList(); 

これで、TestRails APIに渡すことができるテストケースIDのリストがあります。

関連する問題