Я написал код для создания TestRun
в выбранном Milestone
, а затем тестовый запуск включает идентификаторы тестовых наборов, которые необходимо обновить при выполнении тестовых случаев. Код
[TestClass]
public class UnitTest1
{
static List<Dictionary<string, object>> testCases = new List<Dictionary<string, object>>();
public static int testrunid;
private log4net.ILog Testlog;
public TestContext TestContext { get; set; }
[ClassInitialize]
public static void TestRail(TestContext context)
{
testrunid = TestRailPM.TestRail();
}
[TestInitialize]
public void initilize()
{
Testlog = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
[Priority(1)]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]
public void TestMethod1()
{
Testlog.Info("Step 1/6: Get locaiton menu to set locaiton");
Assert.AreEqual("Google", "Google");
}
[Priority(2)]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]
public void Searchtableview1()
{
Assert.AreEqual("Youtube", "youtube");
}
[TestCleanup]
public void CleanUp1()
{
var testCase = new Dictionary<string, object>();
var result = TestContext.CurrentTestOutcome == UnitTestOutcome.Passed ? 1 : 5;
testCase.Add("result", result);
testCase.Add("name", TestContext.TestName);
testCases.Add(testCase);
}
[ClassCleanup]
public static void AllTestsComplete()
{
var results = new Dictionary<string, object>();
results.Add("cases", testCases);
foreach (var item in testCases)
{
foreach (var it in item.Values)
{
UpdateTestRun.updateSingleTestCaseInATestRun(TestRailPageConstants.Testrail.testRailUrl, TestRailPageConstants.Testrail.testRailUser, TestRailPageConstants.Testrail.testRailPassowrd, testrunid, TestRailPageConstants.Testrail.singleTestCaseId, Convert.ToInt32(it), "testCaseComments", TestRailPageConstants.Testrail.testRailUserId);
}
}
}
}
В Файл TestRailpm.cs код:
public class TestRailPM
{
public int testRunIdInInt;
public void Testrail()
{
//Create Test Run in TestRail
//Pass "true" against 'includeAll' parameter to insert all test cases in a suite; "false" to add specific test case id
string testRunID = CreateTestRun.CreateRun(GlobalConstants.Testrail.testRailUrl, GlobalConstants.Testrail.testRailUser, GlobalConstants.Testrail.testRailPassowrd, GlobalConstants.Testrail.projectId, GlobalConstants.Testrail.suiteId, GlobalConstants.Testrail.milestoneId, "Automation of TestCases", "Automation of TestCases", GlobalConstants.Testrail.testRailUserId, true, GlobalConstants.Testrail.testCaseIds);
testRunIdInInt = Convert.ToInt32(testRunID);
return testRunIdInInt;
}
В TestRailPageConstants.cs код:
class TestRailPageConstants
{
public static class Testrail
{
public const string testRailUrl = "https://test.testrail.io/";
public const string testRailUser = "someemailid";
public const string testRailPassowrd = "password";
public const int projectId = 1;
public const int milestoneId = 1;
public const int suiteId = 1;
public const int testRailUserId = 1;
public static string[] testCaseIds = new string[2] { "111111", "22222" };
public const int singleTestCaseId = 33333;
}
}
У меня есть 2 testcases в AutomationCode.cs. Я создал testrun в TestRail в [ClassInitialize]
означает один тестовый запуск на выполнение. Этот тестовый запуск включает два тестовых случая, которые находятся в AutomationCode.cs
. Теперь мне нужно обновить результаты тестового набора в созданном тестовом запуске в TestRail таким образом, чтобы при первом выполнении тестовый результат передавался в updatetestrun
api и обновлял результат тестового примера в TestRail в этом тестовом запуске. Теперь при выполнении второго тестового примера результат второго тестового примера должен быть передан в API updatestrun
и обновить результат второго тестового примера в TestRun в TestRail. updatetesrun
API принимает testcase result
в int, поэтому я преобразовал результат в int Convert.ToInt32(it)
. Предоставляется один идентификатор тестового случая за один раз. Мне нужно передать результат в виде 1 или 5 (1 для прохождения и 5 для неудачи), что я сделал в TestCleanup
в var result
. Как я могу это сделать?