【发布时间】:2020-01-21 12:42:18
【问题描述】:
我将测试作为端到端场景自动化,因此我有多个 Then,例如
Scenario: My scenario
Given a
When b
Then check something 1
When c
Then check something 2
When d
And e
Then check something 3
我知道您可以访问测试名称 TestContext.CurrentContext.Test.Name,您可以将其插入错误日志,但我似乎找不到获取步骤名称的方法。
当场景失败时,我想知道它在哪个 Then 语句上失败,例如...
string errorLog += "Scenario \"" + TestContext.CurrentContext.Test.Name + "\" failed on test step: \"" + testStepName + "\"."
...应该产生这样的结果:
Scenario "My scenario" failed on test step: "Then check something 2".
这可能吗?
谢谢
【问题讨论】:
-
我认为运行测试时的标准输出(基本上对
Console.WriteLine(...)的调用包含在测试结果中。它应该逐行显示哪些步骤成功,哪些步骤失败。 -
我很确定您可以在 Visual Studio 测试资源管理器中查看测试结果。查看测试的详细信息应显示场景中的每个步骤,以及该步骤是通过还是失败。
-
@GregBurghardt 我应该提到我正在将详细信息保存到我 PC 上的文本文件错误日志中。
-
从命令行运行测试时(如果您正在这样做),您可以将输出设置为写入文件。我真的认为您可以利用您的工具来执行此操作,而不是编写代码来执行此操作。
-
我正在做的事情似乎没有必要。那是因为我根本没有说得很清楚!当文件夹中存在 AssertionException 时,我会保存屏幕截图,因此认为将异常消息也记录在同一文件夹中的文本文件中会很方便。随着我的测试套件越来越大,我宁愿不费力地通过大量测试来查找错误,然后转到文件夹并查找与哪个错误相关的屏幕截图。两个文件的名称相同,我所要做的就是开始运行并监视文件夹 - 我只看到我关心的内容,很容易通过文件名将错误与屏幕截图相关联。
标签: c# testing nunit specflow scenarios