gpt4 book ai didi

selenium - 进行很长的 Mocha 测试是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-11-28 20:05:41 24 4
gpt4 key购买 nike

在做单元测试的时候,每个case往往都是简短排他的。但现在我正在使用 Selenium 编写端到端测试,因此,我有很长的场景,其中包含几个密切相关的步骤,例如:

  1. 用户注册
  2. 用户登录
  3. 用户发表文章
  4. 用户编辑该文章

如果发现任何错误,我没想到其他测试会继续。所以,我似乎应该将以上所有内容放在一个 it block 中。但是当然这会使 block 变得很长,我必须设置一个很大的超时时间,期望很长的完成时间等。

这是一种不好的做法吗?

最佳答案

我想知道那到底有多长?对于具有适当等待配置的 webdriver 机器人,理想情况下,这应该在 10 秒以下,这是可以的。不过,我想提出一些建议。

独立、可重复的测试
看来您已经在使用一种有趣的验收测试模式。在今年(2017 年)Craft 大会上的演讲中,Dave Farley 解释了编写可以无限次重复的测试的想法,因为每次执行都是以新创建的用户的名义进行的。

这是一种解决“数据库恢复”问题的有趣方法,我看到许多项目在 CI/CD 工作流程中都遇到过这个问题。它不必恢复。它可能会重新设置为通用状态,但每个测试都会为所有必需的元素提供一个新的 id。例如,第一次运行的测试使用 userid1234 执行,下一次将使用 userid1235。

因此,有人可能会争辩说,您在流程中包括注册的方法可以帮助您隔离执行。我假设权衡是您需要找出什么是您的基础数据(可能是初始数据库状态的一部分)以及添加了什么。

传统的思想流派是独立测试注册、登录和功能(好吧,天真地独立思考)。需要权衡的是,如果注册失败,则不再进行任何测试。

上述关于验收测试的视频链接:

http://www.ustream.tv/recorded/102892932

页面对象

So, seems I should put all of above in just one single it block.

虽然有些人认为它已经过时,但页面对象模式似乎会保留一段时间。你的'it' block 不应该真的那么复杂。在您的测试中,您基本上应该找到对正在发生的事情的纯英语描述。

    it('should deny access with wrong creds', function () {
LoginPage.open();
LoginPage.login('Luo', 'SuperSecretPwd'); // Use better forms of Auth
LoginPage.submit();
expect(LoginPage.flash.getText()).to.contain('Hi Luo!');
});

这个想法基本上是关于如何实现给定页面的任何技术细节(表格与 CSS 网格等)都应该隐藏在这些对象中。这样你的测试就不容易出错,并且可以被普通人理解。

关于页面对象模式的更多信息:

http://webdriver.io/guide/testrunner/pageobjects.html
https://martinfowler.com/bliki/PageObject.html

关于selenium - 进行很长的 Mocha 测试是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45344039/

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