问题描述
我之前曾发布过类似的问题,但我仍在寻找与Selenium自动化测试相关的解决方案。
概括地说,由于我们的测试服务器和附加服务上的性能问题,有时我们的测试第一次失败,但会重新运行。
以前在Rubymine中,可以使用类似以下示例的程序进行重试:
default: RDEE_broWSER=chrome --no-source --color --format pretty --format html --out testresults/<%= Time.Now.strftime("%Y%m%d-%H%M%s") %>-pu_automation.html --retry 1 --tags @current_tests
如果测试失败,重试1选项将强制重试,通常会在第二次尝试中通过。
现在,我们已使用Nunit和Specflow切换到Visual Studio / C#/ Selenium,这是一个典型示例 在功能文件中
Scenario Outline: Validate that the search locates the required item
Given I browse to the homepage
When I search for "search"
Then I am presented with a list of items for "search"
[Given(@"I browse to the homepage")]
public void GivenIbrowsetoTheHomepage()
{
Visit();
}
[When(@"I search for ""(.*)""")]
public void WhenISearchFor(string SearchText)
{
StartaSearch(SearchText);
}
[Then(@"I am presented with a list of items for ""(.*)""")]
public void ThenIAmPresentedWithAlistofItemsFor(string items)
{
AssertIsTrue(ValidateItemList(items));
}
我们还有如下的hooks类
public sealed class Hooks : SharedClass
{
private readonly ScenarioContext _scenarioContext;
public Hooks(ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
[BeforeScenario]
public void BeforeScenario()
{
_test = _extent.CreateTest(_scenarioContext.ScenarioInfo.Title.ToString());
}
[AfterScenario]
public void AfterScenario()
{
var status = _scenarioContext.ScenarioExecutionStatus.ToString();
if (status != "OK")
{
var stackTrace = "<pre>" + _scenarioContext.TestError.StackTrace + "</pre>";
var errorMessage = GetErrorMessage();
WritetoReport(stackTrace + errorMessage,Status.Fail);
}
Driver.Manage().Cookies.DeleteallCookies();
}
//preview
[BeforeFeature]
[Scope(Tag = "demo_tests")]
public static void BeforeFeaturePreview(FeatureContext featureContext)
{
BeforeFeature(featureContext.FeatureInfo.Title);
}
public static void BeforeFeature(string title)
{
ResetReportvariables(TestUrls.DomainSpice,title);
var options = new ChromeOptions();
options.AddArguments("disable-browser-side-navigation");
options.AddArguments("disable-infobars");
options.AddArgument("ignore-certificate-errors");
options.AddArgument("ignore-ssl-errors");
options.AddArgument("disable-popup-blocking");
options.AddArguments("start-maximized");
options.AddArguments("no-sandBox");
options.SetLoggingPreference(LogType.browser,LogLevel.All);
Driver = new ChromeDriver(options);
}
[AfterFeature]
public static void AfterFeature()
{
try
{
Driver.Manage().Cookies.DeleteallCookies();
}
catch (Exception ex)
{
Console.WriteLine("Already logged out - ignore : {0}",ex);
}
_extent.Flush();
try
{
Driver.Close();
Driver.Quit();
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex);
}
}
我们正在使用NUnit.Framework.Assert将测试标记为通过或失败,但是现在我们可以在此示例项目中启用重试选项吗? Nunit是错误的选择吗? MsTest会是更好的选择吗?还是其他更适合的东西?
这些是我们当前使用的软件包
<package id="Cucumber.Messages" version="6.0.1" targetFramework="net472" />
<package id="DotNetSeleniumExtras.WaitHelpers" version="3.11.0" targetFramework="net472" />
<package id="ExtentReports" version="4.1.0" targetFramework="net472" />
<package id="Gherkin" version="6.0.0" targetFramework="net472" />
<package id="NUnit" version="3.12.0" targetFramework="net472" />
<package id="NUnit3TestAdapter" version="3.17.0" targetFramework="net472" />
<package id="Selenium.Support" version="3.141.0" targetFramework="net472" />
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net472" />
<package id="SpecFlow" version="3.4.8" targetFramework="net472" />
<package id="SpecFlow.CustomPlugin" version="3.4.8" targetFramework="net472" />
<package id="SpecFlow.NUnit" version="3.4.8" targetFramework="net472" />
<package id="SpecFlow.Tools.MsBuild.Generation" version="3.4.8" targetFramework="net472" />
预先感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)