0

我这里有我在 selenium c# 中使用 NUnit 框架和多个测试的脚本,如下所示,它连接到我的 TestRail,我想知道是否有任何方法可以在实际测试完成之前检查我的测试是否通过。

    [Test, Order(0)]
    public void Login()
    {
        Navigate.ToLoginPage();
        Log.In("user");
        TestRailServer.Result("1"); //1 is testcase id
    }

    [Test, Order(1)]
    public void RegisterUser()
    {
        Add.User();
        TestRailServer.Result("2"); //2 is testcase id
    }

您在测试中看到的 TestRailServer.Result("1") 是我在 testrail 中的连接,它将根据 TestMethod(Login and RegisterUser) 决定 testrail 中的测试用例是通过还是失败

这是我在 TestRail 连接中的代码

        private static TestRailClient trClient;
    public static void Result(string testCaseID)
    {
        ulong testRunID = "testRailID";
        string testrailComment;
        trClient = new TestRailClient("https://client.testrail.net/", 
        "username", "password");
        var result = TestContext.CurrentContext.Result.Outcome.Status;
        var testrailStatus = result switch
        {
            TestStatus.Failed => ResultStatus.Failed,
            TestStatus.Passed => ResultStatus.Passed,
            _ => ResultStatus.Retest
        };
        testrailComment = (testrailStatus == ResultStatus.Failed) ? TestContext.CurrentContext.Result.Message : "Passed";
        trClient.AddResultForCase(testRunID, ulong.Parse(testCaseID), testrailStatus, testrailComment);
    }

但问题是 TestRailServer.Result 在测试完成之前被调用,所以我需要一种方法来判断我的测试在执行 TestRailServer 之前是否通过

如果有任何帮助,感谢您的帮助,如果您觉得难以理解,请道歉

4

1 回答 1

0

我没有用过 testrail,但我用过很多 Nunit。

我的理解是 NUnit 只知道它是否通过断言失败。如果您的代码中没有断言(并且我在您发布的级别上看不到任何断言),那么您的测试将始终在完成时通过。您的方法面临的挑战是失败的断言将停止测试,您可能不会得到任何结果。这就是 NUnit 的设计方式——它用于单元测试,毕竟应该花费几毫秒。

与其结束与报告器交互的每条测试线,不如将其移至一个[Teardown]方法。这样测试就完成了(处于通过或失败状态)并在事件发生后完成报告。

就像是:

        public string testId;

        [Test, Order(0)]
        public void test1()
        {
            testId= "1";
            Navigate.ToLoginPage();
            Log.In("user");
            //assert here
        }

        [Test, Order(1)]
        public void test2()
        {
            testId= "2";
            Add.User();
            //assert here
        }

        [TearDown]
        public void TearDown()
        {
            TestRailServer.Result(testId);
        }

(如果您还没有,则将断言添加到测试中):-)

于 2020-07-14T09:36:16.033 回答