无法检测到失败的测试用例

本文关键字:测试用例 失败 检测 | 更新日期: 2023-09-27 18:34:02

我正在创建一个通过Selenium和nunit运行的测试用例。在运行我的测试用例时,如果测试用例通过,那么图像应该移动到 Pass 文件夹以失败,那么在文本上下文的帮助下,我的屏幕最后会变得尖叫。但究竟发生了什么,它只检测通过的测试用例,这是我的代码片段中的其他语句。我缺少什么,因为它没有检测到失败的测试测试状态

[Test]
public void TestCase_55215()
{
 ... Specific TestCase Function
 string Name = methodBase.Name;
 GetResult(Name); // Moves all screenshot to specific folder (Pass or Fail Folder) after running the test case function test on nunit
}
    public void GetResult(string testName)
    {
          if (TestContext.CurrentContext.Result.Status == TestStatus.Failed)
                        {
                            string sourcepath = @"source";
                            string destpath = (@"Destination'" + TestCase - " + testName);
                            Directory.CreateDirectory(destpath);
                            string[] files = System.IO.Directory.GetFiles((sourcepath), "*.png");
                            Parallel.ForEach(files, file =>
                            {
                                System.IO.File.Move(file, System.IO.Path.Combine(destpath, System.IO.Path.GetFileName(file)));
                            });
                        }
                        else
                        {
                            string sourcepath = @"sourcepath";
                            string destpath = @"Destination";
                            Directory.CreateDirectory(destpath);
                            string[] files = System.IO.Directory.GetFiles((sourcepath), "*.png");
                            Parallel.ForEach(files, file =>
                            {
                                System.IO.File.Move(file, System.IO.Path.Combine(destpath, System.IO.Path.GetFileName(file)));
                            });
                         }

根据我的代码,

预期结果:应将图像移动到"失败"文件夹

实际结果:屏幕截图图像保存在父文件夹而不是文件夹名称中。

无法检测到失败的测试用例

NUnit 在测试完成后在上下文中设置结果。您对 GetResult 的调用是测试的一部分。在这一点上,由于它还没有完成,所以没有有意义的结果。

如果要以有用的方式访问结果,请使用拆解方法。

您必须从 NUnit 捕获异常。请参阅下面的代码:

string Name = methodBase.Name;            
try
{
    // Specific TestCase Function
    Assert.Fail("This is a fail test");
}
catch (SuccessException ex)
{
    // Test passed
    GetResult(Name);
}
catch (AssertionException exception)
{
    // Test failed
    GetResult(Name);
}
catch (Exception exception)
{
    // Test Inconclusive or Error occurs
    GetResult(Name);
}

如果它只检测到其他部分,则意味着Result.Status始终处于假...在调用方法之前,请仔细检查设置的位置。