繁体   English   中英

黄瓜,在所有情况下都重复登录步骤

[英]Cucumber, repeating login steps in all scenarios

我正在将硒和黄瓜一起使用(使用JAVA,但相关性不高)

假设我有以下情况:

功能:样本功能

方案:在网站上执行操作A给定网站已打开,用户输入正确的登录名并在字段中传递,然后按登录
然后做动作A

方案:在网站上执行操作A给定网站已打开,用户输入正确的登录名并在字段中传递,然后按登录
然后做动作B

现在,将有成百上千种方案,并且网站始终要求登录到该网站,因此我假设对于每个测试方案,我将不得不重复登录步骤(例如,通过Background或在方案挂钩之前)

我一直在读,这种测试应该是自主的,因此场景之间不应共享Webdriver实例

说:

功能:一些功能

场景:首先登录网站...

场景:执行操作A(当我们已经登录时步骤...

场景执行操作B(始终在登录步骤和操作A步骤步骤...中使用的同一浏览器实例中)

但是我发现人们说这是不正确的方法,但是在运行许多方案期间,每次我想执行一些测试方案时都要重复登录过程,这需要很多时间,并且每种情况都需要先登录。 我正在考虑启用无需登录即可访问网站以进行测试的可能性,是否有建议的方法? 谢谢。

我对硒与黄瓜一无所知(但我喜欢黄瓜:-)

我来自Selenium for Python。 在那里,我可以做以下事情:

from selenium import webdriver

profile = webdriver.FirefoxProfile(your_path_to_local_firefox_profile)
# like C:/Users/<USERNAME>/AppData/Roaming/Mozilla/Firefox/Profiles/<PROFILE_FOLDER>
browser = webdriver.Firefox(profile)

因此,现在通过“ [WIN] + [R]”-> Run->“ firefox.exe -p”,我可以为Selenium创建一个额外的配置文件以在上面的代码中使用它,因此我也可以使用Firefox试用版的个人资料。 另外,如果您要自动登录的网站,Cookie和缓存等均受支持,则可能是您不必每次都通过firefox配置文件登录,但是每次Firefox启动都会自动登录,因为他存储了登录数据。

我不知道这是否有帮助,但我想告诉你。

每个需要用户登录的方案都需要使用户登录。这是在集成级别运行的成本的一部分。 但是,登录不应是一项耗时的昂贵操作,您只需填写两个字段并提交即可。 处理登录应该少于100毫秒。

现在对于单元测试而言,这是一个巨大的时间,但是对于集成测试而言,由于其性质,它涉及更大的堆栈,并且通常是模拟的人机交互(否则为什么您需要用户登录)在整个测试中所占的比例相对较小方案运行时间。

因为Cucumber在集成级别工作,所以最好不要将其用作测试工具,而应将其用作驱动开发的工具。 无需编写数千个小的断言(就像在单元测试时那样),您需要编写更少的大型方案,即每个方案都需要执行更多操作。 随着每个方案的执行情况越来越多,要求每个方案都必须完全独立于其他任何方案(您做的越多,就越有可能对完成的其他事情产生副作用)。 共享会话并尝试避免在每种情况之间重置数据库和会话都是错误的优化,这会带来比解决方案更多的问题。

对于一个场景,在您到达其时间之前进行大量操作是非常好的。 例如,想象以下电子商务场景。

Scenario: Re-order favorite Given I have a favorite order When I view my orders And I re-order my favorite order Then I should be taken to the checkout And my favourite items should be in the basket

现在很明显,在我可以重新订购之前,需要做很多事情

  • 我需要注册
  • 我需要至少下一个订单
  • 我需要选择一个喜欢的订单

当然还有很多其他事情,例如

  • 需要订购产品

所有这些都意味着该方案将需要一些时间才能运行,但是那可以,因为您从中获得了很多功能。 (当我很久以前写过类似的文章时,该场景需要1-2秒才能运行)。 与完成其余设置所需的时间相比,这种情况的登录时间微不足道。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM