无法检测失败的测试用例

时间:2016-02-10 21:09:14

标签: c# selenium automation nunit

我正在创建一个通过Selenium和nunit运行的测试用例。在运行我的测试用例时,如果测试用例通过,我会在文本上下文的帮助下最终得到我的屏幕,然后图像应该移动到Pass文件夹,否则将失败。但究竟是什么,它只检测Passed testcases,这是我的代码片段中的else语句。我错过了什么,因为它没有检测到测试teststatus失败

[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)));

                            });
                         }

根据我的代码,

预期结果:应将图像移至失败文件夹

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

3 个答案:

答案 0 :(得分:0)

NUnit在测试完成后在上下文中设置结果。您对GetResult的调用是测试的一部分。那时,由于尚未完成,因此没有任何有意义的结果。

如果要以有用的方式访问结果,请在拆解方法中执行此操作。

答案 1 :(得分:0)

您必须从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);
}

答案 2 :(得分:-1)

如果它只检测到其他部分,则表示Result.Status始终为false ...请在调用方法之前仔细检查您设置的位置。