Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs 在Nunit BDD specflow中拍摄屏幕截图,并附在DevOps测试结果上_Tfs_Nunit_Devops_Bdd_Specflow - Fatal编程技术网

Tfs 在Nunit BDD specflow中拍摄屏幕截图,并附在DevOps测试结果上

Tfs 在Nunit BDD specflow中拍摄屏幕截图,并附在DevOps测试结果上,tfs,nunit,devops,bdd,specflow,Tfs,Nunit,Devops,Bdd,Specflow,我正在使用NUnit.net core BDD spec flow,我需要帮助捕获失败场景步骤的屏幕截图,并将其附加到DevOps中的TFS结果报告中。我有以下代码 public bool loginpageelementpresent() { 尝试 { 返回loginpageelement。显示; } 捕获(例外e) { var filePath=$“{TestContext.CurrentContext.TestDirectory}\\{TestContext.CurrentContext

我正在使用NUnit.net core BDD spec flow,我需要帮助捕获失败场景步骤的屏幕截图,并将其附加到DevOps中的TFS结果报告中。我有以下代码

public bool loginpageelementpresent()
{
尝试
{
返回loginpageelement。显示;
} 
捕获(例外e)
{
var filePath=$“{TestContext.CurrentContext.TestDirectory}\\{TestContext.CurrentContext.Test.MethodName}.jpg”;
((ITakeScreenshot)u driver.GetScreenshot().SaveAsFile(文件路径);
AddTestAttachment(文件路径);
返回false;
}
}

使用此代码,我可以在DevOps中看到屏幕截图,但我想使用此代码来适用于所有失败的场景步骤。有人可以向我解释如何使其更具动态性吗?因此,如果任何场景步骤失败,它会自动截图并附加到DevOps测试结果中

,您可能可以在:

[绑定]
公共类specflowhook
{
私有只读IObjectContainer;
私有只读场景上下文场景;
公共TestContext TestContext{get;set;}
private bool IsFailingScenario=>scenario.TestError!=null;
公共SpecFlowHooks(IObjectContainer容器、ScenarioContext场景)
{
this.container=容器;
this.scenario=scenario;
}
[场景之前]
public void CreateWebDriver()
{
//创建并配置Selenium IWebDriver对象
var driver=new ChromeDriver()或FirefoxDriver()或EdgeDriver()或您通常执行的任何操作
//使web驱动程序可用于所有步骤定义,包括
//钩子类。另外,将此对象标记为BoDi应该标记的对象
//在每次试验结束时进行处理。
container.RegisterInstanceAs(driver,null,true);
}
[赛后]
public void RecordTestFailure()
{
如果(IsFailingScenario)
{
var driver=container.Resolve();
var摄影师=(ITakeScreenshot)司机;
var filePath=$“{TestContext.CurrentContext.TestDirectory}\\{TestContext.CurrentContext.Test.MethodName}.jpg”;
摄影师:GetScreenshot()
.SaveAsFile(文件路径);
AddTestAttachment(文件路径);
}
}
}
假设向测试上下文添加附件确实会将屏幕截图添加到DevOps中的测试结果中。顺便说一句,这也是学习SpecFlow中依赖项注入以及如何在SpecFlow测试中正确初始化和管理IWebDriver对象的好机会


我回答了另一个问题,该问题为您提供了初始化web驱动程序的更完整图片,然后在步骤定义和Selenium页面模型中使用它:

您可以通过以下方式完成此操作:

[绑定]
公共类specflowhook
{
私有只读IObjectContainer;
私有只读场景上下文场景;
公共TestContext TestContext{get;set;}
private bool IsFailingScenario=>scenario.TestError!=null;
公共SpecFlowHooks(IObjectContainer容器、ScenarioContext场景)
{
this.container=容器;
this.scenario=scenario;
}
[场景之前]
public void CreateWebDriver()
{
//创建并配置Selenium IWebDriver对象
var driver=new ChromeDriver()或FirefoxDriver()或EdgeDriver()或您通常执行的任何操作
//使web驱动程序可用于所有步骤定义,包括
//钩子类。另外,将此对象标记为BoDi应该标记的对象
//在每次试验结束时进行处理。
container.RegisterInstanceAs(driver,null,true);
}
[赛后]
public void RecordTestFailure()
{
如果(IsFailingScenario)
{
var driver=container.Resolve();
var摄影师=(ITakeScreenshot)司机;
var filePath=$“{TestContext.CurrentContext.TestDirectory}\\{TestContext.CurrentContext.Test.MethodName}.jpg”;
摄影师:GetScreenshot()
.SaveAsFile(文件路径);
AddTestAttachment(文件路径);
}
}
}
假设向测试上下文添加附件确实会将屏幕截图添加到DevOps中的测试结果中。顺便说一句,这也是学习SpecFlow中依赖项注入以及如何在SpecFlow测试中正确初始化和管理IWebDriver对象的好机会


我回答了另一个问题,它为您提供了初始化web驱动程序,然后在步骤定义和Selenium页面模型中使用它的更完整的图片:

只想检查下面的解决方法是否适合您?如果是的话,你可以这样做,这对其他和你有同样困惑的人也有好处。另外,如果仍然有任何疑问,请随时在下面留下评论:-)只是想看看下面的解决方法是否适合您?如果是的话,你可以这样做,这对其他和你有同样困惑的人也有好处。此外,如果您还有任何疑问,请随时在下面留言:-)