在本地运行测试时忽略 OneTimeSetup 和 TearDown

ignore OneTimeSetup and TearDown when tests runing locally

我用 C# 编写自动化测试并通过 NUnit 检查。

Autotests 与 TestRail 集成的方式是,每次在本地 运行 测试时,都会在 TestRail 中执行 运行 测试。所有这一切都是这样实现的:

一次性设置:

public void OneTimeSetUp()
        {
            Client = new TestRailClient(Url, User, Password);
            var commandResult = Client.AddRun(_projectId, 2, "Selenium Test Run " + DateTime.UtcNow.Ticks, "Selenium Test Run example", 1);
            Console.WriteLine(commandResult.Value);
            _runId = commandResult.Value;
        }

发送结果的 TearDown:

 public void TearDown()
        {
            var id = TestContext.CurrentContext.Test.Properties.Get("Description").ToString().Replace("C","");
            var result = TestContext.CurrentContext.Result.Outcome.Status;
            var testrailStatus = result switch
            {
                TestStatus.Failed => ResultStatus.Failed,
                TestStatus.Passed => ResultStatus.Passed,
                _ => ResultStatus.Retest
            };

            var resultForCase = Client.AddResultForCase(_runId, ulong.Parse(id), testrailStatus);
            Console.WriteLine(resultForCase.WasSuccessful);
       }

我的任务:我需要进行配置,以便在 TestRail 中,测试 运行 仅在 TeamCity 中启动时执行,而当我在本地 运行 测试时,必须以某种方式忽略 OneTimeSetUp 和 TearDown .
在使用 dotnet test 命令
的 TeamCity 测试 运行 当我在本地开始测试时,如何忽略 OneTimeSetUp 和 TearDown?
谢谢!

在 appsettings.json 或您正在使用的任何其他配置中 - 创建一个默认值为 TestRail 的变量 Environment

然后在钩子中 - 获取此变量的值,如果它是 TestRail - init TestRailClient.

在本地测试中 运行 - 将配置中的 Environment 更改为 Local

您还可以在其中创建 appsettings.Development.json 配置并覆盖 Environment。取决于您的配置方法。