পিএইচপি ইউনিট পরীক্ষাগুলি কার্যকর করার সময় কীভাবে সিএমএল আউটপুট করবেন?


151

পিএইচপিউইনিট পরীক্ষা চালানোর সময়, আমি আউটপুট ডাম্প করতে সক্ষম হতে চাই যাতে আমি এক বা দুটি জিনিস ডিবাগ করতে পারি।

আমি নিম্নলিখিতগুলি চেষ্টা করেছি ( পিএইচপিউনিট ম্যানুয়াল উদাহরণের অনুরূপ );

class theTest extends PHPUnit_Framework_TestCase
{
    /**
     * @outputBuffering disabled
     */
    public function testOutput() {
        print_r("Hello World");
        print "Ping";
        echo "Pong";
        $out = "Foo";
        var_dump($out);
    }   
}

নিম্নলিখিত ফলাফল সহ:

PHPUnit @package_version@ by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 3.00Mb

OK (1 test, 0 assertions)

লক্ষ্য করুন সেখানে প্রত্যাশিত আউটপুটটির কোনওটিই নেই।

আমি 19 শে সেপ্টেম্বর, 2011 হিসাবে গিট রেপগুলির হেড সংস্করণগুলি ব্যবহার করছি ।

এর আউটপুট php -version:

$ php -version
PHP 5.2.9 (cli) (built: Dec  8 2010 11:36:37) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans

আমি কি ভুল করছি এমন কিছু আছে, বা এটি সম্ভবত পিএইচপিউনিট বাগ আছে?


1
testOutput()পদ্ধতিটি কল করে এমন কোডটি কোথায় ?
ডেরিক টকার

আপনি সত্যই মরিয়া চেষ্টা করুন (প্রতিধ্বনি, প্রিন্ট, মুদ্রণ_আর, ভার_ডাম্প - এটি মূলত সমস্ত "আউটপুট"), সাধারণত পরীক্ষাগুলি থেকে আউটপুট করতে আমার সমস্যা হয় না। আউটপুট বাফারিং সক্ষম হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন: php.net/manual/en/function.ob-get-level.php - এবং জোর করে "পরীক্ষা" করার সবচেয়ে নিরাপদ উপায়টি একটি ব্যতিক্রম বিটিডাব্লু ছুঁড়ে ফেলা হয়।
hakre

3
@ ডেরিকটকার পিএইচপি ইউনিট কল করে এই কাজটি করে phpunit /path/to/tests/theTest.php(যদি উপরের শ্রেণিটি ফাইলটিতে থাকে theTest.php)।
জেস টেলফোর্ড

@hakre ob_get_level()আয় 1। তবে এটি নিম্নলিখিত কোডের সাথে বৈপরীত্যযুক্ত: while (ob_get_level() > 0) { ob_end_flush(); }যা দিয়ে ত্রুটি ob_end_clean(): failed to delete buffer. No buffer to delete.। কুরিউসার এবং কুরিউসার
জেস টেলফোর্ড

1
এটি বলছে যে এটি পিপুনিটের কোড যা ত্রুটিটি ট্রিগার করছে - সম্ভবত phpunits আউটপুট গিলে সক্রিয় (তবে আপনি এটি ভেঙে দিয়েছেন)। স্পষ্টভাবে দেখুন, ফাংশন নাম পাশাপাশি পৃথক।
hakre

উত্তর:


196

হালনাগাদ

--verboseকমান্ড লাইন বিকল্পের চেয়ে আরও ভাল কাজ করার জন্য এটি করার একটি অন্য উপায়টি উপলব্ধি করেছিলাম:

class TestSomething extends PHPUnit_Framework_TestCase {
    function testSomething() {
        $myDebugVar = array(1, 2, 3);
        fwrite(STDERR, print_r($myDebugVar, TRUE));
    }
}

এটি আপনাকে --verboseসিআইএলির বিকল্পের সাথে উপস্থিত সমস্ত অযাচিত আউটপুট ছাড়াই যে কোনও সময়ে আপনার কনসোলে কিছু ফেলে দিতে দেয় ।


অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, অন্তর্নির্মিত পদ্ধতিগুলি ব্যবহার করে আউটপুট পরীক্ষা করা ভাল:

$this->expectOutputString('foo');

যাইহোক, কখনও কখনও দুষ্টু হওয়া এবং আপনার পরীক্ষার কেসগুলির মধ্যে থেকে এক-অফ / অস্থায়ী ডিবাগিং আউটপুট দেখতে সহায়তা করে। var_dumpযদিও হ্যাক / ওয়ার্কআরাউন্ডের প্রয়োজন নেই । --verboseআপনার টেস্ট স্যুটটি চালানোর সময় কমান্ড লাইন বিকল্পটি সেট করে সহজেই এটি সম্পাদন করা যায় । উদাহরণ স্বরূপ:

$ phpunit --verbose -c phpunit.xml

এটি সিএলআই পরিবেশে চলাকালীন আপনার পরীক্ষার পদ্ধতির অভ্যন্তর থেকে আউটপুট প্রদর্শন করবে।

দেখুন: পিএইচপিউইনিতের জন্য টেস্ট রচনা - পরীক্ষার আউটপুট


5
দুঃখিত, আমরা stderr লিখুন মিস। আসলে কাজ করে। আমি কেবল file_put_contents('php://stderr', $myDebugVar, FILE_APPEND);পরিবর্তে ব্যবহার করতে বাধ্য হয়েছিলাম, কারণ আমার কাছে লেখারUse of undefined constant STDERR - assumed 'STDERR' সাথে বার্তা ছিল ।
সার্জ

সমস্যাটি এটি প্রক্রিয়া বিচ্ছিন্নতার সাথে কাজ করে বলে মনে হয় না।
ডনকুইক্সোট

@ ডনকুইক্সোট বিস্ময়কর নয় কারণ পরীক্ষাটি অন্য প্রক্রিয়াতে কার্যকর করা হবে যার STDERR স্ট্রিম আউটপুট সম্ভবত ফেলে দেওয়া হয়েছে ...
rdlowrey

1
STDOUTপরিবর্তে আপনি ব্যবহার করতে পারেনSTERR
ক্রিস

2
হ্যাঁ. এটি কাজ করে এবং একইভাবে আউটপুট বলে মনে হচ্ছে STDERR। আমি PHPUnit 4.5.0উইন্ডোজ সেমিডি লাইন ব্যবহার করছি । একটি echoবিবৃতি একই ফলাফল দেয় না। echoআউটপুট করে তবে পরীক্ষার ফলাফল প্রদর্শিত হয়। fwrite(STDERR, 'string')বা fwrite(STDOUT,'string')একই ফলাফল উত্পাদন: পরীক্ষার ফলাফল প্রদর্শিত হওয়ার আগে একটি আউটপুট।
ক্রিস

33

আপডেট করুন: দেখুন নিচের rdlowrey এর আপডেট ব্যবহার সংক্রান্ত fwrite(STDERR, print_r($myDebugVar, TRUE));অনেক বেশী সাদাসিধে কাজ প্রায় হিসাবে


এই আচরণ ইচ্ছাকৃত (হিসাবে jasonbar হয়েছে নির্দিষ্ট )। ম্যানুয়ালটির বিবাদমান রাষ্ট্রটি পিএইচপিউনিকে জানানো হয়েছে।

একটি পরিশ্রমের মধ্যে পিএইচপিউইনিতের প্রত্যাশিত আউটপুটটি খালি রয়েছে (যেখানে প্রকৃতপক্ষে আউটপুট থাকে তখন) যা অপ্রত্যাশিত আউটপুট দেখানোর জন্য ট্রিগার করবে to

class theTest extends PHPUnit_Framework_TestCase
{
    /**
     * @outputBuffering disabled
     */
    public function testOutput() {
        $this->expectOutputString(''); // tell PHPUnit to expect '' as output
        print_r("Hello World");
        print "Ping";
        echo "Pong";
        $out = "Foo";
        var_dump($out);
    }   
}

দেয়:

PHPUnit @package_version@ by Sebastian Bergmann.

F

Time: 1 second, Memory: 3.50Mb

There was 1 failure:

1) theTest::testOutput
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-''
+'Hello WorldPingPongstring(4) "Foo"
+'

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

পরীক্ষার জন্য আপনার কাছে থাকা অন্য যে কোনও দাবিগুলি অক্ষম করার বিষয়ে নিশ্চিত হন কারণ আউটপুট দৃ .়তা পরীক্ষা করার আগে তারা ব্যর্থ হতে পারে (এবং তাই আপনি আউটপুটটি দেখতে পাবেন না)।


33

ব্যবহার করার চেষ্টা করুন --debug

আপনি যদি অন্তর্ভুক্ত বা উত্স ডেটা ফাইলের সঠিক পথটি পেতে চেষ্টা করছেন তবে দরকারী।


2
এটি আমার জন্য সঠিক উত্তর। পূর্বের উত্তরে লেখা সমস্ত কল্পিত বিবৃতি আমার পক্ষে কার্যকর হয়নি।
কিম স্ট্যাকস

9

এটি কোনও বাগ নয়, খুব উদ্দেশ্যমূলক। আপনার সেরা বেটটি হ'ল কোনও ধরণের লগ ফাইল লিখুন এবং আউটপুট দেখার জন্য লগটি টাল করুন।

আপনি যদি আউটপুট পরীক্ষা করার চেষ্টা করছেন, এটি দেখুন

এছাড়াও:

দ্রষ্টব্য : দয়া করে নোট করুন যে পিএইচপিউইনিট পরীক্ষার সম্পাদনের সময় নির্গত সমস্ত আউটপুট গ্রাস করে। কঠোর মোডে, আউটপুট নির্গত এমন একটি পরীক্ষা ব্যর্থ হবে।


1
এটি যদি ইচ্ছাকৃত হত, তবে অবশ্যই ম্যানুয়ালটি এর উদাহরণ দিবে না ? এছাড়াও, আউটপুট নিজেই পরীক্ষা করার চেষ্টা করছেন না। চোখের পাতায় এটি ব্যবহার করে কিছু ফলাফল পরীক্ষা করা উচিত নয় যখন ব্যর্থ হয়।
জেস টেলফোর্ড

যেমনটি লিখেছেন: পরীক্ষাগুলি চলাকালীন আমার সাধারণত প্রতিধ্বনিত করতে সমস্যা হয় না। আপনার কাছে এমন কিছু কনফিগারেশন থাকতে পারে যা ইনপুটটি ধরছে।
hakre

1
যদি এটি উদ্দেশ্যমূলক না হয়, তবে অবশ্যই ম্যানুয়ালটি এটি বলেছিল না যে এটি ছিল
জেসনবার

1
সুতরাং এটি ডকুমেন্টেশনের মধ্যে একটি বিরোধ বলে মনে হচ্ছে। @hakre আমি একইরকম ছাপের মধ্যে রয়েছি বলে মনে হয় (এটি গ্রাস করা উচিত নয়) - ডকুমেন্টেশনের কোন অংশটি সঠিক?
জেস টেলফোর্ড

আউটপুট উত্পাদনের পরীক্ষা কেবলমাত্র ব্যর্থ হয় যখন - ডিসাল্লো-টেস্ট-আউটপুট (বা কনফাইলে ফাইলটি স্ট্রাক্ট আউটআউটআউটপুটরিং টেস্টস = "সত্য") থাকে - নথিভুক্তিতে এখন বলা হয় "একটি পরীক্ষা যা আউটপুট নির্গত করে, উদাহরণস্বরূপ পরীক্ষার কোড বা পরীক্ষিত কোডের মধ্যে মুদ্রণ ডাকে, এই চেকটি সক্ষম হয়ে গেলে ঝুঁকিপূর্ণ হিসাবে চিহ্নিত করা হবে। " phpunit.readthedocs.io/en/8.4/risky-tests.html#risky-tests
NULL পয়েন্টার

7

আমি ভিজ্যুয়ালএইচপিউইনিতের সাথে কিছুটা ভাগ্যবান হয়েছি এবং এটি অন্যান্য বিষয়গুলির সাথে সহায়কভাবে আউটপুট প্রদর্শন করে।

class TestHello extends PHPUnit_Framework_TestCase 
{
    public function test_Hello() 
    {
        print "hello world";
    }
}

টেস্টহেলোর ফলাফল


হুঁ, ডাউনটা কেন? পিএইচপিউইনিট পরীক্ষায় ডিবাগ আউটপুট ডাম্প করার বিকল্প উপায় হিসাবে এটি কীভাবে সহায়ক নয়?
বব স্টেইন

1
আমি অনুমান করছি এটি হ্রাস পেয়েছে কারণ কেউ যদি এটির চালনার চেষ্টা করে তবে আপনি একটি সিনট্যাক্স ত্রুটি পাবেন। একটি বিশাল এক।
জিম্বো

ডি'ও আমি ফাংশনটি ভুলে গেছি। এখন এটি স্থির, পরীক্ষিত, কাটা এবং আটকানো। ধন্যবাদ, @ জিম্বো
বব স্টেইন

দুর্ভাগ্যক্রমে এটি এই মুহুর্তে পিএইচপি 7 এর সাথে সামঞ্জস্যপূর্ণ নয়, দৃশ্যত: "PHPunit যেভাবে ব্যবহৃত হয়েছে সেই কারণে এই মুহুর্তে পিএইচপি 7 সুসংগত নয় Ph পরবর্তী বড় রিলিজে পিএইচপি 7 সমর্থন করবে"
লিও

6

আপনার উদ্দেশ্য সম্পর্কে সত্যই চিন্তা করা উচিত: পরীক্ষা ঠিক করতে ডিবাগ করার সময় আপনার যদি এখনই তথ্য দরকার হয়, পরের সপ্তাহে পরীক্ষাগুলি ভেঙে গেলে আপনার আবার এটির প্রয়োজন হবে।

এর অর্থ হ'ল পরীক্ষায় ব্যর্থ হওয়ার সময় আপনার সর্বদা তথ্যের প্রয়োজন হবে - এবং var_dumpকারণটি অনুসন্ধান করার জন্য একটি যুক্ত করা খুব বেশি কাজ। বরং তথ্যকে আপনার দৃ into়তার মধ্যে রাখুন।

যদি আপনার কোডটি এর জন্য খুব জটিল হয় তবে এটি এমনভাবে বিভক্ত করুন যতক্ষণ না আপনি একটি স্তরে পৌঁছাবেন যেখানে একটি দাবি (কাস্টম বার্তা সহ) আপনাকে কোথায় তা ভেঙে গেছে, কেন এবং কীভাবে কোডটি ঠিক করতে হবে তা যথেষ্ট পরিমাণে জানায়।


1
আপনারা যা বলেছিলেন তার সাথে আমি 100% সম্মত। আমি শেষ পর্যন্ত গুগলের এক্সএমএল এপিআইগুলিতে কল করে সংহতকরণ পরীক্ষা করতে PHPUnit ব্যবহার করছি। সমস্ত ইউনিট পরীক্ষাগুলি পাস হয়েছে (এপিআই কলগুলির সাথে উপহাস করা হয়েছে), তবে চূড়ান্ত পরীক্ষাটি (লাইভ এপিআই কল সহ) ব্যর্থ হয়েছে। দেখা গেল এটি গুগল এপিআইয়ের দোষ ছিল তবে মধ্যবর্তী সময়ে আমি কাঁচা এইচটিটিপি প্রতিক্রিয়াটি ছুঁড়ে ফেলতে চাইছিলাম।
জেস টেলফোর্ড

2
আপনি এখানে বর্ণিত বিষয়গুলি অর্জন করার পথে যদি আপনার কোডটি ডিবাগ করার দরকার হয় তবে কী হবে?
ডেভিড মিস্টার

2
এই কারণেই আমি উত্তরগুলি পছন্দ করি না যা ব্যবহারকারীরা কী করতে চায় তা দ্বিতীয়-অনুমান করে। আমি এখানে আছি কারণ আমার পরীক্ষা আছে যা ক্যাশে ছাড়ার জন্য অপেক্ষা করে। 5 দ্বিতীয় ক্যাশে TTLS সঙ্গে, আমার পরীক্ষার এর মানে হল যে স্তব্ধ মনে হচ্ছে ~ 16 সেকেন্ডের জন্য। আমি কেবল ব্যবহারকারীর কাছে কিছু বিজ্ঞপ্তি প্রকাশ করতে চাই যে না, কিছুই ভুল নয়, আমরা কেবল ক্যাশের সময় শেষ হওয়ার অপেক্ষা করছি। লোকেরা যদি কেবল প্রশ্নের উত্তর দিতে পারে, তবে অন্যান্য ব্যবহারের ক্ষেত্রেও তাদের উত্তর থাকতে পারে।
ব্যবহারকারী 151841

4

লারাভেল 5 এ আপনি ডাম্প () ব্যবহার করতে পারেন, শেষ প্রতিক্রিয়া থেকে সামগ্রীটি ফেলে দিন।

class ExampleTest extends TestCase{
    public function test1()
    {
        $this->post('/user', ['name' => 'Gema']);
        $this->dump();
    }
}

দেয়


4

শুধু ব্যবহার --verbose যখন চালানো পতাকা phpunit

$ phpunit --verbose -c phpunit.xml 

এই পদ্ধতি সুবিধা হল যে আপনি আপনার স্ট্রিং মুদ্রণ করতে পারেন, var_dump এর ণ কিছু আপনি সবসময় ইচ্ছুক পরীক্ষা কোড পরিবর্তন করার প্রয়োজন হবে না এবং এটি কনসোল শুধুমাত্র যখন দেখানো হবে বাগাড়ম্বরপূর্ণ মোড সেট করা হয়।

আশা করি এটা কাজে লাগবে.


3

কিছু ক্ষেত্রে কনসোলে আউটপুট দেওয়ার জন্য কেউ এর মতো কিছু ব্যবহার করতে পারে

class yourTests extends PHPUnit_Framework_TestCase
{
    /* Add Warnings */
    protected function addWarning($msg, Exception $previous = null)
    {
        $add_warning = $this->getTestResultObject();
        $msg = new PHPUnit_Framework_Warning($msg, 0, $previous);
        $add_warning->addWarning($this, $msg, time());
        $this->setTestResultObject($add_warning);
    }

    /* Add errors */
    protected function addError($msg, Exception $previous = null)
    {
        $add_error = $this->getTestResultObject();
        $msg = new PHPUnit_Framework_AssertionFailedError($msg, 0, $previous);
        $add_error->addError($this, $msg, time());
        $this->setTestResultObject($add_error);
    }

    /* Add failures */
    protected function addFailure($msg, Exception $previous = null)
    {
        $add_failure = $this->getTestResultObject();
        $msg = new PHPUnit_Framework_AssertionFailedError($msg, 0, $previous);
        $add_failure->addFailure($this, $msg, time());
        $this->setTestResultObject($add_failure);
    }

    public function test_messages()
    {
        $this->addWarning("Your warning message!");
        $this->addError("Your error message!");
        $this->addFailure("Your Failure message");
    }

    /* Or just mark test states! */
    public function test_testMarking()
    {
        $this->markTestIncomplete();
        $this->markTestSkipped();
    }
}

3

হ্যাকিশ, তবে কাজ করে: এর বার্তা হিসাবে ডিবাগ আউটপুট সহ একটি ব্যতিক্রম ছুঁড়ে।

class theTest extends PHPUnit_Framework_TestCase
{
    public function testOutput() {
        throw new \Exception("hello");
    }   
}

উৎপাদনের:

...
There was 1 error:

1) theTest::testOutput
Exception: hello

2

এটি ফিক্সচার সম্পর্কে পিএইচপিউনিট ডক্স থেকে নেওয়া হয়েছিল ।

এই phpunit পরীক্ষা জীবন চক্র durring যে কোনও সময়ে আপনাকে তথ্য ডাম্প করার অনুমতি দেওয়া উচিত।

__METHOD__আপনি যা আউটপুট করতে চান তা দিয়ে কেবল নীচের কোডটিতে প্রতিস্থাপন করুন

উদাহরণ ৪.২: সমস্ত টেম্পলেট পদ্ধতি উপলভ্য উদাহরণ

<?php
class TemplateMethodsTest extends PHPUnit_Framework_TestCase
{
    public static function setUpBeforeClass()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    protected function setUp()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    protected function assertPreConditions()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    public function testOne()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
        $this->assertTrue(TRUE);
    }

    public function testTwo()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
        $this->assertTrue(FALSE);
    }

    protected function assertPostConditions()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    protected function tearDown()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    public static function tearDownAfterClass()
    {
        fwrite(STDOUT, __METHOD__ . "\n");
    }

    protected function onNotSuccessfulTest(Exception $e)
    {
        fwrite(STDOUT, __METHOD__ . "\n");
        throw $e;
    }
}
?>

1

আমি আমার টেস্টারসাল্ট এইচটিএমএল ভিত্তিক আউটপুট করি, এক্ষেত্রে বিষয়বস্তুটি ফ্লাশ করা সহায়ক:

var_dump($array);
ob_flush();

দ্বিতীয় পিএইচপি পদ্ধতি রয়েছে

flush() 

যা আমি চেষ্টা করি নি


1

পিএইচপিউইনিত আউটপুটটি লুকিয়ে রাখছে ob_start()। আমরা এটি অস্থায়ীভাবে অক্ষম করতে পারি।

    public function log($something = null)
    {
        ob_end_clean();
        var_dump($something);
        ob_start();
    }

0

এই কোডটি কাজ করার জন্য আমাকে উত্স কোডটি সংশোধন করতে হয়েছিল যাতে আপনার এই forked repos এর জন্য ইউআরএল যুক্ত করতে হবে এটির জন্য সুরকারের জন্য এটি কাজ করবে

class TestCase extends \PHPUnit_Framework_TestCase
{
    /**
     *  Save last response
     * @var Response|null A Response instance
     */
    static $lastResponse;
    /**
     *  Modify to save response
     *
     * @param  string $method
     * @param  string $uri
     * @param  array $parameters
     * @param  array $files
     * @param  array $server
     * @param  string $content
     * @param  bool $changeHistory
     * @return \Illuminate\Http\Response
     */
    final public function call(
        $method,
        $uri,
        $parameters = [],
        $files = [],
        $server = [],
        $content = null,
        $changeHistory = true
    ) {

        $response = parent::call($method, $uri, $parameters, $files, $server, $content, $changeHistory);
        static::$lastResponse = $this->client->getResponse();
        return $response;
    }


    /**
     * Modify message to add response text
     *
     * @param mixed $value
     * @param PHPUnit_Framework_Constraint $constraint
     * @param string $message
     * @since  Method available since Release 3.0.0
     */
    final public static function assertThat($value, PHPUnit_Framework_Constraint $constraint, $message = '')
    {
        $message .= PHP_EOL . static::$lastResponse . PHP_EOL;
        parent::assertThat($value, $constraint, $message);
    }
}

0

PHPUnit 4.x এ ডিবাগ বার্তা মুদ্রণের জন্য দরকারী কয়েকটি পদ্ধতি এখানে রয়েছে:

  • syslog(LOG_DEBUG, "Debug: Message 1!");

    আরও ব্যবহারিক উদাহরণ:

    syslog(LOG_DEBUG, sprintf("%s: Value: %s", __METHOD__, var_export($_GET, TRUE)));

    কলিং syslog()একটি সিস্টেম লগ বার্তা উত্পন্ন করবে (দেখুন man syslog.conf:)।

    নোট: সম্ভাব্য মাত্রা: LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING, LOG_ERR, ইত্যাদি

    ম্যাকোস-এ, রিয়েলটাইমে সিস্লগ বার্তা প্রবাহিত করতে, চালান:

    log stream --level debug --predicate 'processImagePath contains "php"'
  • fwrite(STDERR, "LOG: Message 2!\n");

    দ্রষ্টব্য: স্টিডিনেরSTDERR থেকে পিএইচপি স্ক্রিপ্টটি পড়লে ধ্রুবক উপলব্ধ হয় না । এখানে কর্মক্ষেত্র আছে

    দ্রষ্টব্য: পরিবর্তে STDERR, আপনি একটি ফাইলের নামও নির্দিষ্ট করতে পারেন।

  • file_put_contents('php://stderr', "LOG: Message 3!\n", FILE_APPEND);

    দ্রষ্টব্য: আপনার যদি STDERRধ্রুবক সংজ্ঞায়িত না হয় তবে এই পদ্ধতিটি ব্যবহার করুন ।

  • register_shutdown_function('file_put_contents', 'php://stderr', "LOG: Message 4!\n", FILE_APPEND);

    দ্রষ্টব্য: আপনি পরীক্ষাগুলি প্রভাবিত না করে খুব শেষে কিছু মুদ্রণ করতে চাইলে এই পদ্ধতিটি ব্যবহার করুন।

ভেরিয়েবলটি ডাম্প করতে var_export(), উদাহরণস্বরূপ ব্যবহার করুন "Value: " . var_export($some_var, TRUE) . "\n"

উপরের বার্তাগুলি কেবল ভার্বোজ বা ডিবাগ মোডের সময় মুদ্রণের জন্য দেখুন: --debug বা --verbose কোনও পরীক্ষায় পিএইচপিউনাইটে পাস হয়েছে কিনা তা বলার উপায় আছে?


যদিও আউটপুট পরীক্ষা করা যদি এটি নিজেই পরীক্ষার অংশ হয় তবে চেক আউট করুন: আউটপুট ডক্স পৃষ্ঠা পরীক্ষা করা হচ্ছে ।


-1

আপনি যদি লারাভেল ব্যবহার করেন তবে স্টোরেজ / লগের আওতায় লারাভেল লগ ফাইলটিতে লগ করার জন্য তথ্য () হিসাবে লগিং ফাংশন ব্যবহার করতে পারেন। সুতরাং এটি আপনার টার্মিনালে প্রদর্শিত হবে না তবে লগ ফাইলে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.