【发布时间】:2020-04-12 05:19:50
【问题描述】:
我已经搜索了这个答案的高低,但我无法找到所需的确切答案;如果这感觉它重复另一个问题,请耐心等待。
使用 C#、.NET、SpecFlow、Selenium
我有几个特征文件使用彼此的行,这主要是使用它们的主要原因之一。为了方便起见,我将它们淡化以绘制问题的图片......我也会突出显示重复使用的线条。
功能文件 A - 鉴于我已经加载了网站 当我输入有效的用户名和密码时 然后我就可以登录了
功能文件 B - 鉴于我已经加载了网站 当我输入无效的用户名和密码时 那我就登录不了了
功能文件 C - 鉴于我已经加载了网站 当我创建帐户时 完成后会显示登录屏幕 然后我输入我的新帐户详细信息 然后我可以登录了
如您所见,我的功能文件交叉,因此 B 需要 A,C 需要 A。我的问题是,我如何一个接一个地运行所有这些,如何在 A 退出时重用驱动程序浏览器,因为该流程已经结束?
【问题讨论】:
-
您的测试始终应该是 E2E,这应该是使用 BDD 框架的方式。一旦功能文件 1 完成,应该有新的功能文件 2 会话。但是您可以在任何时候重用对象而不是会话。
-
这是我感到困惑的地方,因为功能文件 1 是端到端的,但是,它们彼此共享步骤(作为这种工作方式的标准。)所以功能文件 2 将调用步骤功能文件 1 的定义,因为它们正在共享步骤,因此功能文件 2 不需要
Driver = new ChromeDriver();,因为它已经具有由功能文件 1 的步骤定义启动的 chrome 会话,但需要自己的驱动程序来定位元素?如果是这样,这是什么样的? -
让您的测试用例相互依赖通常是一种不好的测试实践,尤其是在自动化环境中。每个测试用例应该独立于其他每个测试用例执行,一个测试用例的结果不应该决定另一个测试用例的结果。
-
SpecFlow 的主要好处是它是可能的,除此之外。
标签: selenium selenium-webdriver automation webdriver selenium-chromedriver