我设法建立了一些不使用Page Object Model结构的相当简单的测试。 Specflow步骤将仅调用驱动程序方法(例如在页面上查找元素并断言文本正确)。
测试使用NUnit作为运行程序,并且通过将[Parallelizable(ParallelScope.Fixtures)]添加到解决方案的组装类中,我设法添加了并行执行。效果很好,但是NUnit产生的报告有点混乱,我希望获得关于它们的更多有用信息(例如屏幕截图)。
此后,我已向解决方案中添加了“范围”报告,这对于按顺序运行测试可以很好地工作,但在并行运行它们时会出现错误消息。
The FeatureContext.Current static accessor cannot be used in multi-
threaded execution. Try injecting the feature context to the binding
class.
Context.Current步骤用于范围报告的创建。我一直在阅读Specflow网站上与多线程相关的文档,但是在理解该概念并弄清楚如何将FeatureContext注入到绑定类中时遇到了问题。我正在尝试从网站上遵循以下示例:
[Binding]
public class StepsWithScenarioContext : Steps
{
[Given(@"I put something into the context")]
public void GivenIPutSomethingIntoTheContext()
{
this.ScenarioContext.Set("test-value", "test-key");
}
}
我也一直在尝试其他示例,但是我还没有看到任何有关如何将ScenarioContext与driver.findElement(By.Id(“ blah”))等一起使用的文档。
任何帮助将不胜感激,我是自动化测试的新手。
答案 0 :(得分:1)
您需要在Steps类中具有一个属性:
ScenarioContext _scenarioContext
。
在Constructor中,您添加ScenarioContext scenarioContext
作为参数并使用以下命令对其进行初始化:
_scenarioContext = scenarioContext
简单的例子:
class Steps
ScenarioContext _scenarioContext;
public Steps (ScenarioContext scenarioContext)
{
_scenarioContext = scenarioContext;
}
只有我不知道它如何与继承一起使用。