我试图检测我的测试用例是否失败,它应该执行我在下面的代码中提到过的一些过程。我成功地检测到我的测试用例何时通过。
我添加了我的代码。我这里的代码是导航到谷歌主页,如果它通过然后我应该得到一个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");
}
}
此处,只有其他条件被识别,但不是条件。
问题:任何人都可以确定我在失败测试用例中缺少的部分。
注意:
GetFiles(string testcase)
中的代码创建一个txt文件,我无法这样做。感谢您的帮助。
答案 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))
{