gpt4 book ai didi

java - cucumber ,所有场景重复登录步骤

转载 作者:行者123 更新时间:2023-11-30 22:58:49 24 4
gpt4 key购买 nike

我将 Selenium 与 cucumber 一起使用(使用 JAVA,但相关性不大)

假设我有以下场景:

Feature: Sample Feature

Scenario: do action A on website Given website is opened And user put correct login and pass in fields And user press login
Then do action A

Scenario: do action A on website Given website is opened And user put correct login and pass in fields And user press login
Then do action B

现在会有成百上千的场景,网站总是需要登录,所以我假设对于每个测试场景我都必须重复登录步骤(例如通过 BACKGROUND 或 before scenario hook)

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

说:

特征:一些特征

Scenario: Log into website first Steps...

Scenario: Do action A (while we are logged already Steps...

Scenario Do action B (all the time in same browser instance we used in login step and action A step Steps...

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

最佳答案

每个需要用户登录的场景都需要让用户登录。这是在集成级别运行的成本的一部分。然而登录应该不是一个昂贵的耗时操作,你只需要填写两个字段并提交。处理登录应该需要 < 100 毫秒。

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

因为 Cucumber 在集成级别工作,所以最好不要将其用作测试工具,而应将其用作驱动开发的工具。与其编写数以千计的小断言(就像你在单元测试时可能的那样),不如编写更少的大场景,即每个场景需要做更多的事情。随着每个场景做的越来越多,每个场景完全独立于任何其他场景的需求也在增加(你做的越多,你就越有可能对其他已完成的事情产生副作用)。共享 session 并试图避免在每个场景之间重置数据库和 session 被证明是错误的优化,它产生的问题多于它解决的问题。

对于一个场景来说,在你到达它的时间之前做很多事情是非常好的。例如想象以下电子商务场景。


场景:重新排序 Collection 夹
鉴于我有一个最喜欢的订单
当我查看我的订单时
我重新订购我最喜欢的订单
然后我应该被带到收银台
我最喜欢的东西应该在篮子里

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

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

当然还有很多其他的东西

  • 需要有要订购的产品

所有这些都意味着这个场景需要时间来运行,但这没关系,因为您可以从中获得很多功能。 (当我很久以前写类似的东西时,场景运行需要 1-2 秒)。与完成其余设置所需的时间相比,这种情况下的登录时间微不足道。

关于java - cucumber ,所有场景重复登录步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52708917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com