从步骤定义中,我无法将日志添加到范围报告
我在报告中只看到给定何时描述。
Hooks.cs 文件:
[Binding]
public class GlobalHooks
{
[ThreadStatic]
public static ExtentReports? extent;
[ThreadStatic]
public static ExtentTest? feature;
[ThreadStatic]
public static ExtentTest? scenario;
[ThreadStatic]
public static ExtentTest? step;
[BeforeTestRun]
public static async Task BeforeTestRun()
{
string resPath = FileUtil.getFullFolderPath("Test Results");
var spark = new ExtentSparkReporter(resPath + "/extent.html");
spark.Config.ReportName = "Test Report";
spark.Config.DocumentTitle = "Test Automation Report";
spark.Config.Theme = Theme.Standard;
extent = new ExtentReports();
extent.AttachReporter(spark);
}
[BeforeFeature]
public static async Task BeforeFeature(FeatureContext featureContext)
{
feature = extent?.CreateTest<Feature>(featureContext.FeatureInfo.Title);
}
[BeforeScenario]
public static async Task BeforeScenario(FeatureContext featureContext, ScenarioContext scenarioContext)
{
scenario = feature?.CreateNode<Scenario>(scenarioContext.ScenarioInfo.Title);
}
TestFeatureStepDefinitions.cs
[Binding]
public class TestFeatureStepDefinitions : GlobalHooks
{
[Given(@"some step (.*)")]
public async Task GivenSomeStep()
{
step?.Log(Status.Info,"This step I want to log in extent report");
}
}
SpecFlow Output API 应该可以满足您的需求。
[Binding]
public class TestFeatureStepDefinitions : GlobalHooks
{
private readonly ISpecFlowOutputHelper output;
TestFeatureStepDefinitions(ISpecFlowOutputHelper output)
{
this.output = output;
}
[Given(@"some step (.*)")]
public async Task GivenSomeStep()
{
output.WriteLine("This step I want to log in extent report");
}
}
您可以使用自己的扩展方法来增强此 API 以指示日志级别,但您需要自己编写该实现:
public static class SpecFlowOutputExtensions
{
public static void WriteLine(this ISpecFlowOutputHelper output, Status status, string text)
{
// your own implementation here
output.WriteLine($"{DateTime.Now} {status}: {text}");
}
}
然后在您的步骤定义中:
output.WriteLine(Status.Info, "This step I want to log in extent report");