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

时间:2018-10-08 19:31:08

标签: java c# selenium cucumber gherkin

我正在将硒和黄瓜一起使用(使用JAVA,但关系不大)

假设我有以下几种情况:

  

功能:示例功能

     

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

     

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

现在,将有数百种情况,并且网站始终要求登录到该网站,因此我认为对于每个测试情况,我将不得不重复登录步骤(例如,通过Background或在进行场景挂钩之前)

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

说:

功能:某些功能

  

方案:首先登录网站       步骤...

     

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

     

方案B(在我们用于   登录步骤和操作步骤        步骤...

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

2 个答案:

答案 0 :(得分:1)

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

我来自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启动都会自动登录,因为他存储了登录数据。

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

答案 1 :(得分:1)

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

现在,这次的单元测试非常庞大,但是对于集成测试而言,它本质上涉及更大的堆栈并通常模拟人工交互(否则为什么您需要用户登录)这次是一个相对较小的组成部分整个场景的运行时间。

由于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秒才能运行)。与完成其余设置所需的时间相比,这种情况的登录时间微不足道。

相关问题