【问题标题】:ignore OneTimeSetup and TearDown when tests runing locally在本地运行测试时忽略 OneTimeSetup 和 TearDown
【发布时间】:2021-10-07 19:20:20
【问题描述】:

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

自动测试与 TestRail 集成在一起,每次在本地运行测试时,都会在 TestRail 中执行一次测试运行。所有这些都是这样实现的:

OneTimeSetup:

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。
在 TeamCity 中使用 dotnet test 命令运行测试
当我在本地开始测试时,如何忽略 OneTimeSetUp 和 TearDown?
谢谢!

【问题讨论】:

  • 将它们包装在#if RELEASE 块中?
  • TeamCity 是否设置了任何可用于识别它的环境变量?

标签: c# automated-tests nunit


【解决方案1】:

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

然后在钩子中 - 获取这个变量的值,如果它是 TestRail - 初始化 TestRailClient。

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

您也可以在那里创建 appsettings.Development.json 配置并覆盖 Environment。取决于您的配置方法。

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 2016-01-30
    • 2014-06-06
    • 1970-01-01
    • 2019-02-05
    • 2015-01-15
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多