【问题标题】:Failing the whole Test Suite if one Test Case fails while running dependent test through VSTS如果一个测试用例在通过 VSTS 运行相关测试时失败,则整个测试套件都失败
【发布时间】:2019-10-09 16:03:37
【问题描述】:

我的套件中有相关的测试用例。如果我的第一个测试失败,它也将所有其他测试标记为失败。所以最后它表明所有的测试用例都失败了,这是不正确的。

有没有一种方法可以将测试标记为“由于依赖测试失败而失败”或其他内容,以便显示它失败是因为依赖测试失败。 有没有办法在测试中添加新状态,而不是只有通过、失败、未执行状态。

我在我们的测试中添加了一个通用标志,当任何依赖测试失败时,它将测试标记为失败。 正如您在下面的代码中看到的那样。 如果之前的测试失败,它将测试标记为 Assert.Fail 在 else 部分。 有没有办法将其标记为其他状态并且没有失败,例如:“由于依赖测试失败而失败”。

bool hasPreviousTestCasePassed = false
[TestMethod]
    public void DemoTest1()
    {
     try
        {
          ////perform all the test steps
          hasPreviousTestCasePassed = true;
        }
        catch (Exception ex)
        {
            hasPreviousTestCasePassed = false;
        }
    }

 [TestMethod]
    public void DemoTest2()
    {
        try
        {
            if (hasPreviousTestCasePassed)
            {
              ///perform all the test steps and mark flag as true after all steps
             hasPreviousTestCasePassed = true;
            }
            else
            {    
               Assert.Fail("Execution for " + TestContext.TestName + " is aborted as the previous test case failed.");
            }
        }
        catch (Exception ex)
        {
            hasPreviousTestCasePassed = false;
        }
    }

预期的结果是有一种方法可以将测试标记为由于相关测试失败而失败,而不仅仅是将其标记为失败。

这样做背后的想法是,当我的第一个测试失败时,它会将所有测试标记为失败,结果表明所有测试都失败了,这实际上并不是真的,因为它们被执行了。

所以我想要一种方法以单独的状态显示相关故障,以便结果更清晰。

【问题讨论】:

    标签: c# testing automated-tests ui-automation coded-ui-tests


    【解决方案1】:

    如果可能,您也可以考虑完全不使用依赖测试。 我了解您需要按特定顺序执行一些测试,因为您需要程序处于特定状态,然后才能测试某些特定功能。

    您可以做的是让您的待测程序以特定状态加载,您可以在其中测试特定功能。这样一来,您的测试将彼此独立,并且可以将测试特定功能的时间从几小时变为几分钟。

    我目前正在测试 POS 收银机。收银机可以生成收据、交货单、发票等文件。要对这些类型的文件进行特定测试,我只需从 db 加载相关文件进行处理,从而快速使 POS 处于特定状态。我在测试之前制作了这些文档,数据始终相同,但高度可配置。

    【讨论】:

      【解决方案2】:

      也许您可以利用TestContext.Properties 属性将特定测试的状态保存为键值对。因此,在特定测试中,您将创建一对:TestContext.Properties.Add("testStatus", "Failed due to dependent test")。 稍后您将把该属性读作 string mystatus = TestContext.Properties["testStatus"].ToString().

      【讨论】:

        【解决方案3】:

        Assert.Inconclusive 会帮忙吗? MSDN docs

        它将明显区分失败的测试和由于先前失败而导致的“可疑测试”。

        【讨论】:

        • 是的,它对 Visual Studio 有帮助。但是当我通过 VSTS(Azure Devops) 运行测试时,它会将测试标记为失败。我想要的是,一种在 VSTS 中将测试标记为跳过的方法
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-29
        • 1970-01-01
        • 1970-01-01
        • 2021-03-22
        • 2011-10-09
        • 1970-01-01
        相关资源
        最近更新 更多