我刚开始使用Spec流程以及Selenium & N单位。我有一个基本问题,也许我知道它的答案,但希望得到证实。考虑一下,有2个功能 - 注册,添加新的事务。 2个独立的功能及其各自的步骤定义。如何跨两个功能共享IWebDriver元素。我不想再次启动新的浏览器&添加事务。想要执行这两个流程。 我的想法是,这个功能是不允许使用Spec流作为基本功能的基于测试的使用被违反,因为试图在同一会话中运行2个功能。在这种情况下,上下文注入是否会提供帮助?Specflow,Selenium-在不同的步骤定义或类别之间共享数据
回答
你想做什么是一个坏主意。你应该为每个功能开始一个新的浏览器会话,恕我直言。
无法保证测试执行的顺序,这将由测试运行人员决定,因此您可能会在Feature1之前运行Feature2。
实际上,您的场景也应该是独立的。
可以共享步骤之间的webdriver的实例作为this answer但你应该使用specflows其他功能,如场景Background
做设置,或做你的comman设置definign步骤。
编辑
我们有一个类似的问题与我们的一些测试,这是我们做什么:
我们创建的第一步
Feature: thing 1 is done
Scenario: Do step 1
Given we set things for step 1 up
When we execute step 1
Then some result of step one should be verified
一个sceanrio然后我们做一个用于步骤2(其假设依赖于步骤1)
Feature: thing 2 is processed
Scenario: Do step 2
Given we have done step 1
And we set things for step 2 up
When we execute step 2
Then some result of step 2 should be verified
这第一步Given we have done step 1
是调用功能1的所有步骤的一步:
[Given("we have done step 1")]
public void GivenWeHaveDoneStep1()
{
Given("we set things for step 1 up");
When("we execute step 1");
Then("some result of step one should be verified");
}
那么,如果我们有第3步我们这样做:
Feature: thing 3 happens
Scenario: Do step 3
Given we have done step 2
And we set things for step 3 up
When we execute step 3
Then some result of step 3 should be verified
再次Given we have done step 2
是一个复合步骤,调用步骤2中的所有步骤(因此调用步骤1的所有步骤)
[Given("we have done step 2")]
public void GivenWeHaveDoneStep2()
{
Given("we have done step 1");
Given("we set things for step 2 up");
When("we execute step 2");
Then("some result of step 2 should be verified");
}
我们重复这个过程,以便当我们到达第5步时,它按照正确的顺序运行所有步骤。有时候我们可以步骤5我们@ignore
前4个步骤,因为无论如何它们都将被第5步调用。
@山姆 - 我看到你的意思是你的选择以任何顺序运行。有没有办法让这个工作顺序。我计划按特定顺序运行烟雾流量 - 一组5个功能。将具体的文件夹中的所有烟雾测试和编号运行它们解决它。我知道恕我直言,这不是一个好主意。 – ReuseAutomator
我想在3,4完成后才运行第5个功能。但在这之前观察5次跑步。 – ReuseAutomator
尝试使用您的代码在OrderedTest for MsTest中的功能之间共享WebDriver会话不起作用。任何想法?它在NUnit中起作用。 – ReuseAutomator
- 1. 在SpecFlow中,如何在步骤/功能之间共享数据?
- 2. 我需要在不同类的步骤之间共享数据
- 3. Selenium和SpecFlow之间的共享方法
- 4. 在specflow场景之间共享数据
- 5. Specflow步骤定义类在不同的项目中
- 6. 在不同的测试类别之间共享数据
- 7. 水壶或PDI:在不同步骤之间共享相同的DB连接
- 8. SpecFlow + Selenium-WebDriver:跨步共享WebDriver?
- 9. 在步骤之间共享数据序列化错误
- 10. SpecFlow的功能范围步骤定义?
- 11. specflow的动态步骤定义匹配
- 12. 不同片段之间共享数据
- 13. 如何在Java中的不同类之间共享数据
- 14. Python:如何在不同类的实例之间共享数据?
- 15. 黄瓜不识别定义的步骤“未定义的步骤”
- 16. 在为不同API级别定义的相同主题之间共享属性
- 17. 默认值Specflow步骤定义
- 18. 在类之间共享数据
- 19. 如何在类之间共享数据?
- 20. 在两个类之间共享数据
- 21. 在类对象之间共享数据
- 22. 在分类之间共享数据集
- 23. 导航到Specflow步骤从步骤定义
- 24. 类之间共享的NSDictionary数据
- 25. 如何识别Specflow的后台步骤?
- 26. java - 在线程之间共享数据 - 原子参考或同步
- 27. 如何在属于不同类的不同线程之间共享数据?
- 28. 在活动和类别之间共享数据
- 29. Specflow:对于步骤
- 30. Bitbucket管道共享分支之间的一些步骤
我没有参考这个链接,但更多的信息总是赞赏。 http://stackoverflow.com/questions/2881685/in-specflow-how-can-i-share-data-between-steps-features – ReuseAutomator
如果它只是为Webdriver,你可以尝试一个单例类来访问所有单实例不管特征如何。 – Kavan