2017-06-05 1 views
0

Haftungsausschluss: Ich bin ein Kodier-Neuling, der bei der Arbeit lernt.SpecFlow-Ergebnisse an TestRail senden

Ich habe ein Specflow-Projekt für die Verwendung von Gurke und C# Selenium eingerichtet und die TestRail-API heruntergeladen. Ich folgte einem bestehenden Beispiel, um ein Testergebnis am Ende eines Szenarios auf eine statische Test Rail ID zu setzen.

{ Gurock.TestRail.APIClient client = new Gurock.TestRail.APIClient ("https://testrail.placeholder.com/testrail"); client.User = "[email protected]"; // Schreiben Sie die E-Mail Ihres Benutzers hier client.Password = "password"; // Legen Sie das Passwort Ihres Benutzers hier

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

ich zu einem Szenario des obigen Code verknüpfen kann eine If unter Verwendung basierend auf dem Szenario Tag, z.B.

if (ScenarioContext.Current.ScenarioInfo.Tags.Contains("case_id")) 

aber das Problem dabei ist, dass ich den obigen Code für jedes Szenario duplizieren würde, mit einem einzigartigen IF-Anweisung und Tag jedes Mal. Was ich möchte, ist eine Möglichkeit, das Posting zu paramatisieren, so dass ich nur einen Codeblock benötige, der es mir ermöglicht, die Ergebnisse jedes Szenarios an die korrekte statische TestRail-ID zu senden.

Antwort

0

Ich würde die CaseID Tags voranstellen, so dass Sie sie von normalen Tags unterscheiden können.
Lets mit TC_ sagen, so dass Ihre Tags wie TC_1 genannt werden, TC_42, ...

jetzt den Testfall ID zu erhalten, müssen Sie einen Eintrag finden, die in der ScenarioContext.Current.ScenarioInfo.Tags

mit TC_ beginnt der Code dafür könnte wie folgt aussehen:

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(); 

Jetzt haben Sie eine Liste mit den Testfall-IDs, die Sie an die TestRails API passieren kann.