通过VSTS运行相关测试时,如果一个测试用例失败,则整个测试套件将失败

时间:2019-05-23 06:22:34

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

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

有没有一种方法可以将测试标记为“由于相关测试失败而失败”或其他原因,从而表明该测试失败是因为相关测试失败了。 有没有一种方法可以在测试中添加新状态,而不是仅具有通过,失败和未执行的状态。

我在测试中添加了一个通用标志,当任何相关测试失败时,该标志将测试标记为失败。 如下面的代码所示。 如果先前的测试失败,它将在其他部分中将测试标记为Assert.Fail。 有没有一种方法可以将其标记为其他状态并且没有失败,例如:“由于相关测试失败而失败”。

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;
        }
    }

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

执行此操作的想法是,当我的第一个测试失败时,它将所有测试标记为失败,并且结果表明所有测试均已失败,这实际上是不正确的,因为它们已被执行。

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

3 个答案:

答案 0 :(得分:1)

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

您可以做的是使处于测试状态的程序处于特定状态,在此状态下您可以测试特定功能。这样,您的测试将彼此独立,并且可以将测试特定功能从数小时变为数分钟。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

Assert.Inconclusive有帮助吗? MSDN docs

由于先前的失败,它将使失败的测试与“可疑的测试”之间的区别显而易见。