为什么要将硒与Laravel一起用于测试?

为什么要将硒与Laravel一起用于测试?,laravel,selenium,automated-tests,Laravel,Selenium,Automated Tests,Laravel和Selenium都使用PHPUnit的断言。 在Laravel和Selenium中,您编写代码进行测试(而不是在GUI中选择要执行的操作;例如,open:google.com,write-In:name->queryInput文本:“测试搜索”,单击:name->searchButton)。 Laravel和Selenium都可以访问网页、提交表格和检查结果。通过向cron添加PHPUnit命令,您可以在Laravel和Selenium中自动化测试 那么为什么我应该在Larave

Laravel和Selenium都使用PHPUnit的断言。 在Laravel和Selenium中,您编写代码进行测试(而不是在GUI中选择要执行的操作;例如,
open:google.com
write-In:name->queryInput文本:“测试搜索”
单击:name->searchButton
)。 Laravel和Selenium都可以访问网页、提交表格和检查结果。通过向cron添加PHPUnit命令,您可以在Laravel和Selenium中自动化测试

那么为什么我应该在Laravel中使用硒进行测试

我唯一能想到的是,Selenium允许您选择一个浏览器来打开页面。因此,如果您的测试仅使用Laravel测试通过,则对于某些浏览器(例如Internet Explorer)可能会失败

在这本书中,作者在1:00说:

[在Laravel中测试]的一个问题是,它不包括JavaScript支持。因此,我们假装请求,我们得到响应,我们检查它,但没有浏览器或JavaScript引擎参与该过程


但伪造请求的缺点是什么?硒有什么帮助?举个例子就好了。

你实际上已经得到了答案。你所说的是正确的

Laravel集成测试将在内部模拟请求,并可能使用一些优势(如禁用中间件、模拟、间谍等)来确保隔离特定问题(测试用例)。其想法是在不将第三方组件引入战场的情况下测试应用程序,这将是:客户端浏览器外部服务,等等。这些类型的测试非常快速和轻量级。也非常适合测试API调用。

因此,Selenium正是为了涵盖所有这些情况,实际上,您希望
涵盖受第三方组件副作用影响的场景,如Chrome、IE、Firefox等中的JavaScript,即使是在这些组件的不同版本中。您可以将此理解为尽可能接近真实场景的尝试,在真实场景中,客户端浏览器实际上可能会干扰应用程序的预期行为。此外,如果您想直观地验证CSS或交互式组件,还可以触发屏幕截图值得一提的是,由于这个浏览器挂钩,这些测试的执行速度要慢得多。

这样做的外卖应该是,您不需要专门使用其中一个。它们的工作原理类似,但最终提供了不同的功能。您可以有一组Laravel集成测试,以及一组对您重要的Selenium测试。

我可以在我的项目中为您提供一种不太相关的方法,但至少可以展示两种测试类型可以共存于同一个项目中


希望这有帮助

谢谢你的回答。所以安装所有Selenium组件是值得的,因为它模仿了您所说的真实场景。但似乎你应该一直使用硒,因为这是你的目标。我观看了Laracast和imo,同样的测试可以用Selenium编写,然后更多地来自真实世界。所以,您能举一个浏览器根本不重要的例子,这样我就知道什么时候使用Laravel的集成测试,什么时候使用Selenium吗?我知道这扩展了我的问题,但如果能有一个完整的画面就好了。嗯,我没有提到一些非常重要的事情。Selenium测试有一个缺点,由于与浏览器的集成,它们的速度要慢得多,另外,它们依赖于有一个具体的浏览器实例作为依赖项。在我的特殊情况下,我更喜欢使用Laravel集成测试,而Selenium只用于那些我需要验证特定场景的测试(例如涉及JS,或者出于非常特殊的原因在特定浏览器中呈现页面)@mr_jigsaw Id表示,只要您主要关注应用程序逻辑(更多地说是后端),浏览器根本不重要,当您更关注UI/UX和特定于浏览器的功能时,使用Selenium是有意义的,这可能只是您决定测试的几个用例场景(更多地说是前端)拉维尔黄昏怎么样?