符合Codeception 3.0

是时候让Codeception的新主要版本变为现实了! 经过多年的发展和不断改进,我们学到了很多东西,今天,我们为您提供最佳的Codeception版本。 我们仍然认为简化测试很重要:读取,编写和调试测试应该很容易。

维护一个试图涵盖从Symfony到WordPress,从Laravel到Magento的各种框架和CMS的项目非常困难。 但是我们看到这些社区的人们定期向我们发送补丁,我们的理念是将测试与框架分开,通过模块共享相似的解决方案-正确的方法。 我们惊人的社区将继续改善这个项目。

好的,那Codeception 3.0呢?

不兼容的更改


PHPUnit 8支持


在3.0版中,我们没有破坏任何内容。 留给下一个主要版本。 因此,我们并未提出受支持的PHP版本:Codeception 3.0仍与PHP 5.6+兼容,因为每个人都应该可以进行测试。 它仍然支持所有主要框架,并且与PHPUnit 6和PHPUnit 7兼容。

但是,存储所有这些部分很困难,并且我们假定在3.0版中您可能会遇到可能的重大更改,因为我们添加了对PHPUnit 8的支持。否则,更新对您来说应该很顺利。 如果更新时遇到问题,请在composer.json中将PHPUnit的版本更改为6或7:

"phpunit/phpunit": "^7.0" 

感谢我们的主要贡献者@Naktibalda在不影响兼容性的情况下支持PHPUnit 8。 这是一项艰巨的工作,如果您看一下我们的codeception / phpunit-wrapper项目,您将理解原因。

远程模块


我们决定放弃一些旧模块,希望没人使用。 这是:

  • AngularJS-仅适用于Angular 1
  • ZF1-框架已​​弃用
  • Yii1-不建议使用框架
  • Silex-不推荐使用该框架
  • Facebook-不支持的模块
  • XMLRPC-不支持的模块

如果需要它们,只需从2.5分支复制它们的代码并创建一个自定义帮助器。

修改后的默认值


如果使用多会话测试和$ I-> haveFriend命令,您将看到测试失败。 Friend方法不再包含在Codeception \ Actor类中,因此您必须手动添加它们。 在您的AcceptanceTester (或使用多会话测试的另一个类)中,包括Codeception \ Lib \ Actor \ Shared trait

 <?php class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; use \Codeception\Lib\Actor\Shared\Friend; } 

我们还关闭了新安装的条件语句(因为人们经常滥用它们),因此,如果要使用canSee方法,则需要启用它们。

新功能


增强型互动壳


此功能已从我们友好的CodeceptJS项目中移植。 她添加了一个新的REPL界面,因此现在您可以暂停测试并在控制台中运行各种命令。

此功能完全改变了编写功能和验收测试的方式。 您可以编写以下命令,而不是盲目地尝试不同的命令并不断重新启动测试:

 <?php $I->amOnPage('/'); $I->pause(); 

然后依次开始键入命令,逐步编写测试。 将成功的团队复制到您的测试中,最后您将获得一个可以正常运行的测试。 如果使用WebDriver ,则可以使用单个浏览器会话编写完整的验收测试。

与之前基于hoa / console的交互式shell的实现不同,您可以使用向左,向右键来编辑输入:

控制台

重试方法


引入这些方法是为了减轻浏览器的痛苦。 在一个充满JavaScript和一页应用程序的世界中,您不再可以依赖单个事件,有时您需要重复执行几次该操作才能执行。

现在,您可以使用retry *方法执行此操作,这些方法可以帮助稳定测试中的步骤:

 <?php // use $I->retryClick('Create'); // instead of just $I->click('Create'); 

此功能也已从CodeceptJS移植,但实现方式略有不同。

但是,如果您的网站在不同的环境中必须采取不同的行为怎么办? 例如,根据地区显示接受cookie的通知,如果显示此通知,则接受cookie? 您可以使用tryTo *操作执行此操作:

 <?php if ($I->tryToSeeElement('.alert.cookie')) { $I->click('Accept', '.cookie'); } 

try *和retry *方法已实现为分步装饰器,使您可以通过包装模块方法来生成其他操作。 条件语句(canSee *方法)也已重构为逐步修饰符。 因此,您需要在设置中明确启用它们。

输出工件


现在,失败的测试包含所有可用工件的列表。 对于REST API测试,每个测试将包含最后一个响应的主体,以简化在CI服务器上的调试。

文物

安装与升级


要升级到版本3,只需将“ composer.json”中的版本更改为“ ^ 3.0”:

 "codeception/codeception": "^3.0" 

结论


感谢所有这些年来与我们在一起并帮助每天改善Codeception的所有人。 再次感谢Naktibalda照顾支持次要版本并建立兼容性桥梁的过程。

感谢Seravo的OttoKekäläinen的慷慨捐助。

还有8年前创办Codeception的Mikhail Bodnarchuk的几句话:

作为对质量和测试感兴趣的人,我有兴趣回答以下问题:首先需要检查什么。 我发现的最佳答案是从用户评论中获取此信息。 有时,只有普通用户才能发现错误,而不会引起堆栈跟踪。 我想看到的是,网站或Web应用程序的用户可以立即发送此类错误消息。 这就是为什么我创建了我的新SaaS产品Bugira Bugtracker来接收用户的错误报告的原因。 如果您喜欢我的Codeception或CodeceptJS之类的项目,请尝试Bugira。 这将帮助您与用户建立更好的沟通并创造更好的产品!

完整的变更日志版本3.0
更新的文档

Source: https://habr.com/ru/post/zh-CN456140/


All Articles