php代码错误查找,php – 记录代码错误

当Codeception测试套件中某个测试失败时,可以通过监听`test.fail`和`test.fail.print`事件来定制行为,收集失败信息并在所有测试完成后发送包含错误消息的电子邮件。创建一个自定义事件处理类并注册为扩展,可以实现这一目标。
摘要由CSDN通过智能技术生成

我对Codeception很新,我遇到了一个我无法弄清楚的问题.我的测试套件中有大约40个测试,如果测试失败,我需要发送一封电子邮件,说明它失败的原因.例如,如果Codeception无法在页面上找到导致测试失败的元素,我需要发送一封只包含错误的电子邮件,如下所示:

Failed to verify emailing wish list behaves as expected in ThisClass::thisTest (/home/qauser/codeception_tests///acceptance-mobile/Wishlist/EmailWishlistCest.php)

Couldn’t see “Success!”,”//*[@id=”wish-list-confirm-popup”]/div/div/div[1]/h4″:

我不想发送完整的堆栈跟踪,只是发送实际的错误.有谁知道这是否可能?

解决方法:

Codeception公开了一个有用的事件集合,这些事件将为这个用例派上用场.有关更多信息,请查看Codeception文档的Customization: Events部分.

我建议拦截该页面上描述的两个事件:

> test.fail事件,用于聚合有关每个失败测试的信息.

> test.fail.print事件,用于在Codeception完成测试套件时处理聚合数据(例如,通过发送摘要电子邮件),并将自己的故障摘要打印到屏幕上.

要实现此目的,您只需构建一个自定义事件处理程序类并将其注册为配置文件中的扩展:

# codeception.yml

extensions:

enabled: [MyCustomEventHandler]

# MyCustomEventHandler.php

// Note: this was drafted using Codeception 2.0. Some of the namespaces

// maybe different if you're using a more-recent version of Codeception.

class MyCustomEventHandler extends \Codeception\Platform\Extension

{

/**

* @var \Exception[]

*/

protected $testFailures = [];

/**

* Maps Codeception events to method names in this class.

*

* Defining an event/method pair in this array essentially subscribes

* the method as a listener for its corresponding event.

*

* @var array

*/

public static $events = [

\Codeception\Events::TEST_FAIL => 'singleTestJustFailed',

\Codeception\Events::TEST_FAIL_PRINT => 'allTestFailuresAreBeingDisplayed',

];

/**

* This method will automatically be invoked by Codeception when a test fails.

*

* @param \Codeception\Event\FailEvent $event

*/

public function singleTestJustFailed(\Codeception\Event\FailEvent $event)

{

// Here we build a list of all the failures. They'll be consumed further downstream.

$this->testFailures[] = $event->getFail();

}

/**

* This method will automatically be invoked by Codeception when it displays

* a summary of all the test failures at the end of the test suite.

*/

public function allTestFailuresAreBeingDisplayed()

{

// Build the email.

$emailBody = '';

foreach ($this->testFailures as $failure) {

// Methods in scope include: $failure->getMessage(), $failure->getFile(), etc.

$emailBody .= $failure->getMessage() . "\r\n";

}

// Now send the email!

}

}

希望这可以帮助!

标签:php,selenium,codeception

来源: https://codeday.me/bug/20190623/1266285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值