C#:没有检测到testcase是否失败的原因是什么

时间:2016-03-01 17:27:50

标签: c# selenium nunit

我试图检测我的测试用例是否失败,它应该执行我在下面的代码中提到过的一些过程。我成功地检测到我的测试用例何时通过。

我添加了我的代码。我这里的代码是导航到谷歌主页,如果它通过然后我应该得到一个txt文件与" [MethodName] - Passed.txt"通过文本传递。失败也一样。

[Test]
public void Initialize()
{
    PropertiesCollection.driver = new TWebDriver();
    LoginPageObject objLogin = new LoginPageObject();
    string pathfile = @"file location";
    string sheetName = "Login";
    var excelFile = new ExcelQueryFactory(pathfile);
    var abc = from a in excelFile.Worksheet(sheetName).AsEnumerable()
              where a["ID"] == "3"
              select a;
    foreach (var a in abc)
    {
        PropertiesCollection.driver.Navigate().GoToUrl(a["URL"]);
    }
    foreach (var a in abc)
    {
        objLogin.Login(a["uname"], a["paswd"]);
    }
    StackFrame stackFrame = new StackFrame();
    MethodBase methodBase = stackFrame.GetMethod();
    string Name = methodBase.Name;
    GetFiles(Name);
}
 public void GetFiles(string testcase)
{

    if ((TestContext.CurrentContext.Result.Status == TestStatus.Failed) || (TestContext.CurrentContext.Result.State == TestState.Failure) || (TestContext.CurrentContext.Result.State == TestState.Ignored) || (TestContext.CurrentContext.Result.State == TestState.Error))
    {

        string destpath = (@"destination location");
        File.WriteAllText(Path.Combine(destpath, testcase + " - Failed" + ".txt"), "Failed");
    }
    else
    {
        string destpath = (@"destination location");
        File.WriteAllText(Path.Combine(destpath, testcase + " - Passed" + ".txt"), "Passed");
    }
}

此处,只有其他条件被识别,但不是条件。

问题:任何人都可以确定我在失败测试用例中缺少的部分。

注意:

  1. 如果我没有正确解释,请原谅我。如果您不理解,请提出问题。
  2. 每个部分实际上都是错误的。如果出现错误,应根据我GetFiles(string testcase)中的代码创建一个txt文件,我无法这样做。
  3. 我正在使用Nunit来确定我的测试用例是通过还是失败。因此,如果测试用例通过或失败,则会创建一个文本,提示记录我失败的测试用例。
  4. 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果测试失败,则[Test]方法终止,方法的其余部分永远不会运行。因此,如果您的测试在中途失败,则永远不会调用GetFiles()

您可能意味着将GetFiles()作为[TearDown]运行,以实现您的目标。

顺便说一句,我建议你这样做:

TestContext.CurrentContext.Result.Status != TestStatus.Success

而不是你当前的 - 如你似乎已经发现的那样,有许多不同类型的失败!

答案 1 :(得分:0)

看起来你有一个错字。你的if陈述永远不会像所写的一样真实。你想要一个'或'而不是'和'

if ((TestContext.CurrentContext.Result.Status == TestStatus.Failed) ||
    (TestContext.CurrentContext.Result.State == TestState.Failure) ||
    (TestContext.CurrentContext.Result.State == TestState.Ignored) || // <-- typo?
    (TestContext.CurrentContext.Result.State == TestState.Error))
    {