कैसे करने के लिए तर्क पारित करने के लिए पर्ल का परीक्षण जब चलाने के लिए के माध्यम से prove

जब लेखन परीक्षण पर्ल में पारिस्थितिकी तंत्र, कभी कभी आप की जरूरत है एक परीक्षण लिखने के लिए, जो आप कर सकते हैं कुछ तर्क । उदाहरण के लिए, आप कर सकते हैं परीक्षण के साथ कोई बहस नहीं चेक सभी फ़ाइलें और अगर यह तर्क के रूप में करने के लिए पथ निर्दिष्ट करने के लिए फ़ाइल है, तो यह केवल इस एक फ़ाइल है.

यानी, समस्या यह है कि पर्ल में परीक्षण चर @ARGV दिखाई दिया मान.

यहाँ है एक उदाहरण के परीक्षण t/main.t:

use Test::More tests => 1;
use Data::Dumper;

pass('Loaded ok');

warn Dumper \@ARGV;

यदि आप चलाने के लिए इस का उपयोग कर परीक्षण perl t/main.t one two three, तो इस निष्कर्ष पर देखा जाएगा कि चर में @ARGV मिला मूल्यों कमांड लाइन से:

1..1
ok 1 - Loaded ok
$VAR1 = [
          'one',
          'two',
          'three'
        ];

लेकिन अगर आप इस चलाने के लिए एक ही परीक्षण का उपयोग कर prove t/main.t one two three, तो उत्पादन में देखा जाएगा एक सरणी @ARGV मूल्यों कमांड लाइन से नहीं मारा है और पहचानने से SecTreas, prove माना जाता है इन तर्कों को तर्क के रूप में परीक्षण करने के लिए, और तर्क के रूप में करने के लिए खुद को.

यहाँ है पूर्ण उत्पादन के काम:

$VAR1 = [];
t/main.t .. ok
Cannot detect source of 'one'! at /usr/local/lib/perl5/5.28.1/TAP/Parser/IteratorFactory.pm line 256.
    TAP::Parser::IteratorFactory::detect_source(TAP::Parser::IteratorFactory=HASH(0x55663d4f4300), TAP::Parser::Source=HASH(0x55663d61cdc0)) called at /usr/local/lib/perl5/5.28.1/TAP/Parser/IteratorFactory.pm line 211
    TAP::Parser::IteratorFactory::make_iterator(TAP::Parser::IteratorFactory=HASH(0x55663d4f4300), TAP::Parser::Source=HASH(0x55663d61cdc0)) called at /usr/local/lib/perl5/5.28.1/TAP/Parser.pm line 472
    TAP::Parser::_initialize(TAP::Parser=HASH(0x55663d6a11d8), HASH(0x55663d4f4390)) called at /usr/local/lib/perl5/5.28.1/TAP/Object.pm line 55
    TAP::Object::new("TAP::Parser", HASH(0x55663d4f4390)) called at /usr/local/lib/perl5/5.28.1/TAP/Object.pm line 130
    TAP::Object::_construct(TAP::Harness=HASH(0x55663ce11a90), "TAP::Parser", HASH(0x55663d4f4390)) called at /usr/local/lib/perl5/5.28.1/TAP/Harness.pm line 852
    TAP::Harness::make_parser(TAP::Harness=HASH(0x55663ce11a90), TAP::Parser::Scheduler::Job=HASH(0x55663d33bf80)) called at /usr/local/lib/perl5/5.28.1/TAP/Harness.pm line 651
    TAP::Harness::_aggregate_single(TAP::Harness=HASH(0x55663ce11a90), TAP::Parser::Aggregator=HASH(0x55663ce11880), TAP::Parser::Scheduler=HASH(0x55663d33be78)) called at /usr/local/lib/perl5/5.28.1/TAP/Harness.pm line 743
    TAP::Harness::aggregate_tests(TAP::Harness=HASH(0x55663ce11a90), TAP::Parser::Aggregator=HASH(0x55663ce11880), "t/main.t", "one", "two", "three") called at /usr/local/lib/perl5/5.28.1/TAP/Harness.pm line 558
    TAP::Harness::__ANON__() called at /usr/local/lib/perl5/5.28.1/TAP/Harness.pm line 571
    TAP::Harness::runtests(TAP::Harness=HASH(0x55663ce11a90), "t/main.t", "one", "two", "three") called at /usr/local/lib/perl5/5.28.1/App/Prove.pm line 548
    App::Prove::_runtests(App::Prove=HASH(0x55663ce093a8), HASH(0x55663d22f6c8), "t/main.t", "one", "two", "three") called at /usr/local/lib/perl5/5.28.1/App/Prove.pm line 506
    App::Prove::run(App::Prove=HASH(0x55663ce093a8)) called at /usr/local/bin/prove line 13

समाधान का उपयोग करने के लिए ::

टीम prove एक विशेषता है — क्या लिखा है के बाद डबल पेट के प्रतीक :: prove से गुजरता है करने के लिए परीक्षण चलाने के लिए.

तो अगर आप परीक्षण चलाने के साथ prove t/main.t :: one two three, हम उम्मीद परिणाम:

$VAR1 = [
          'one',
          'two',
          'three'
        ];
t/main.t .. ok
All tests successful.
Files=1, Tests=1,  0 wallclock secs ( 0.04 usr  0.01 sys +  0.09 cusr  0.02 csys =  0.16 CPU)
Result: PASS

सरकारी दस्तावेज

यहाँ एक टुकड़ा के उत्पादन perldoc prove इस सुविधा के बारे में prove:

  Arguments to Tests
    It is possible to supply arguments to tests. To do so separate them from
    prove's own arguments with the arisdottle, '::'. For example

     prove -v t/mytest.t :: --url http://example.com

    would run t/mytest.t with the options '--url http://example.com'. When
    running multiple tests they will each receive the same arguments.

अन्य लेख