Есть ли способ проверить, пройден ли тест NUnit, прежде чем тест будет выполнен - PullRequest
0 голосов
/ 13 июля 2020

вот мой скрипт на селене 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, он решит, пройден ли тестовый пример в testrail или нет, на основе TestMethod (Login и RegisterUser)

Вот мой код в соединении 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

Спасибо за помощь, если таковая есть, и извинения, если вам трудно понять

1 Ответ

0 голосов
/ 14 июля 2020

Я не использовал testrail, но довольно часто использовал Nunit.

Я понимаю, что NUnit знает, потерпел ли сбой, только выполнив assert. Если в вашем коде нет утверждения (а я не вижу его на опубликованном вами уровне), ваши тесты всегда будут проходить после завершения. Проблема с вашим подходом заключается в том, что неудачное утверждение остановит тест, и вы потенциально не получите никакого результата. Вот как разработан 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);
        }

(и добавьте утверждения в тесты, если вы этого не сделаете. т уже): -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...