Php 在Codeception中将调试输出打印到控制台

Php 在Codeception中将调试输出打印到控制台,php,debugging,console,output,codeception,Php,Debugging,Console,Output,Codeception,这是一个很难回答的问题,但有没有办法在Codeception中将您自己的调试消息打印到控制台?我指的是与断言无关的消息,纯粹用于调试测试本身(例如,就像您将var\u dump()任何常规PHP网站中的变量一样) 我已经试过var\u dump(),echo和print,但都没有用。使用WebDebug的makeAResponseDump()也不会产生所需的结果,我只是希望能够看到变量的内容,而不必运行xdebug之类的调试器 我似乎通过使用助手类找到了解决这个问题的方法: class WebH

这是一个很难回答的问题,但有没有办法在Codeception中将您自己的调试消息打印到控制台?我指的是与断言无关的消息,纯粹用于调试测试本身(例如,就像您将
var\u dump()
任何常规PHP网站中的变量一样)


我已经试过
var\u dump()
echo
print
,但都没有用。使用
WebDebug
makeAResponseDump()
也不会产生所需的结果,我只是希望能够看到变量的内容,而不必运行xdebug之类的调试器

我似乎通过使用助手类找到了解决这个问题的方法:

class WebHelper extends \Codeception\Module
{
    public function seeMyVar($var){
        $this->debug($var);
    }
}
并以此方式调用该类:

$foo = array('one','two');
$I->seeMyVar($foo);
然后我得到了我正在寻找的调试输出

I see my var "lambda function"
  Array
  (
      [0] => one
      [1] => two
  )

我会将此作为临时解决方案接受,但我希望保持我的断言干净,不让它们与升级到测试函数的var_转储混淆,因此如果任何人有概念正确的解决方案,请提交默认情况下Codeception说有错误,但没有详细说明。然而,根据adding--debug详细显示了错误

codecept运行——调试

\Codeception\Util\Debug::debug($this->em);die();

并使用
--debug
标志运行Codeception。

或者您可以使用详细控制命令,如:

codecept run -vvv
其中每个
v
都会增加输出的详细程度(默认情况下非常安静)。

请参见

您可以使用codeept_debug函数打印测试中的任何信息

我在我的*课程中使用它:

codecept_debug($myVar);
调试输出仅在使用--debug(-v不显示它,但-vv和-vvv-do)运行时可见:

输出结果如下所示:

Validate MyEntity table insert (MyCept) 
Scenario:
* I persist entity "AppBundle\Entity\MyEntity"

  AppBundle\Entity\MyEntity Object
  (
      [Id:AppBundle\Entity\MyEntity:private] => 1
      [Description:AppBundle\Entity\MyEntity:private] => Description
  )

 PASSED 
简短的版本是
codecept运行测试/验收/SomeCest.php-d

-d将向您展示步骤和调试

简短、友好且简单的方法 显然
codecept\u debug
--debug
选项是正确的方法之一

但是,
--debug
显示了很多详细信息,我们可能不需要一直看到单个变量的值。 有时,我们可能需要在CLI上滚动很多次才能到达变量

然而,还有一个简单、好的方法

使用
assertSame
显示/var\u转储变量,以true或任意随机值断言变量

比如说,我需要看看$mango里面是什么,我确信它不是真的或者是“随机的”

$I->assertTrue($mango)
$I->assertSame($mango,'something random')//我很确定$mango并不等于'something random'
上面的语句将抛出错误打印出
$mango
,最好的部分是它将打印在底部,因此无需滚动和冗长。同样,通过这种方式,不需要在CLI命令中添加
--debug

限制:

PHP中的10种数据类型

Four scalar types:


bool
int
float (floating-point number, aka double)
string


Four compound types:

array
object
callable
iterable


And finally two special types:

resource
NULL
以上我的方法仅适用于6:

Four scalar types:

bool
int
float (floating-point number, aka double)
string


One compound types:

array


And finally one special types:

NULL

对象
资源
的值不会很好地打印出来。

我开始觉得我有点糊涂,因为我没有看到一个明显的方法来实现这一点。感谢分享您的解决方案!为什么不直接调用
var\u dump
print\u r
,或者
print
?它在
tryToTest
中对我有效,因为以上两种方法在我的测试中都不起作用,也许自从原始帖子使它对你起作用以来,现在有了一个更新的版本?添加-v或-vv,-vvv标志将使你的所有打印和变量转储在输出中可见。调试方法无关紧要。您可以使用
var\u dump()
。如果您甚至运行phpunit测试,则不需要调试。
Four scalar types:

bool
int
float (floating-point number, aka double)
string


One compound types:

array


And finally one special types:

NULL