我有以下问题。我想为每个运行的测试用例创建一个新的 .txt 文件,其中测试用例名称或测试用例ID(没关系)为文件名,但我不这样做。不知道如何在 NLog.Config 文件中获取当前的测试用例名称。
<target name="logfile"
xsi:type="File"
layout="${longdate}|${message}"
fileName="${basedir}\ATF\web\utils\reports\${shortdate}\${callsite}.txt" />
我正在使用 $ {callsite} ,但是我在多个类中都有记录器,并且它使用这些类的名称创建文件。
private static readonly Logger Logger = GetCurrentClassLogger();
例如:我有一个类记录了一些Selenium操作已完成,另一个类记录了驱动程序已成功打开。在测试中,我同时使用两个类,并且我不想为我使用的每个类都创建文件,而只创建一个带有测试名称的文件。
P.S记录器本身运行正常。 我正在使用 NUnit 进行测试。
因此,如果有人因为我找不到我想要的东西而知道如何做,我将非常感激。
祝你有美好的一天!
答案 0 :(得分:0)
使用NLog NDLC的非常简单的解决方案:
target name="logfile"
xsi:type="File"
layout="${longdate}|${message}"
fileName="${basedir}\ATF\web\utils\reports\${shortdate}\${ndlc:topFrames=1:whenEmpty=UnknownTest}.txt" />
然后您可以在NLog布局中执行此操作:
SAAS files
1) _variable.scss (All variables define here like $primary-color, $secondary-color etc.)
2) _common.scss
3) app.scss
答案 1 :(得分:0)
在自定义NLog LayoutRenderer中使用NUnit TextContext:
SELECT
SourceTable,
<Any other columns you're interested in>
FROM
vwJan;
将上面的代码编译为一个名为“ Custom.NLog.NUnit”的程序集,然后可以像这样加载它:
[LayoutRenderer("nunit-testname")]
public class NUnitTestNameLayoutRenderer : LayoutRenderer
{
protected override void Append(StringBuilder builder, LogEventInfo logEvent)
{
builder.Append(NUnit.Framework.CurrentContext?.Test?.Name);
}
}
另请参阅:https://github.com/nunit/docs/wiki/TestContext
另请参阅:https://github.com/NLog/NLog/wiki/How-to-write-a-custom-layout-renderer