Как я могу использовать параметр `tests` после объявления в Perl's Test :: More? - PullRequest
3 голосов
/ 08 сентября 2010

из perldoc -f use
синтаксис функции use:

   use Module VERSION LIST
   use Module VERSION
   use Module LIST
   use Module
   use VERSION

, но в этом случае:

use Test::More tests => 5;

(устанавливает количество тестов равным 5)

Какой тип данных выражения tests => 5?
Это LIST или что-то еще?

Как использовать этот параметр tests после объявления?

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Да, это упомянутое LIST - => - просто причудливый способ написать это:

use Test::More ("tests", 5);

Который в свою очередь вызывает Test::More->import("tests", 5) после загрузки модуля.

6 голосов
/ 09 сентября 2010

Вы можете попросить Test :: More предоставить вам свой объект-строитель:

use Test::More tests => 5;

my $plan = Test::More->builder->has_plan;

print "I'm going to run $plan tests\n";

Вам не нужно делать число тестов буквальным.Вы можете вычислить его и сохранить в переменной:

use vars qw($tests);

BEGIN { $tests = ... some calculation ... }
use Test::More tests => $tests;

print "I'm going to run $tests tests\n";

Вам не нужно заранее объявлять план:

use Test::More;

my $tests = 5;
plan( tests => $tests );

print "I'm going to run $tests tests\n";

Вы спрашивали о пропуске тестов.Если вы хотите пропустить все тесты, вы можете использовать skip_all вместо tests:

use Test::More;

$condition = 1;

plan( $condition ? ( skip_all => "Some message" ) : ( tests => 4 ) );

pass() for 1 .. 5;

Вы также можете сделать это, когда хотите разбить тесты на группы.Вы вычисляете количество тестов в каждой группе и суммируете их для создания плана.Позже вы знаете, сколько пропустить:

use Test::More;

my( $passes, $fails ) = ( 3, 5 );
my( $skip_passes, $skip_fails ) = ( 0, 1 );

plan( tests => $passes + $fails );

SKIP: {
    skip "Skipping passes", $passes if $skip_passes;
    pass() for 1 .. $passes;
    }

SKIP: {
    skip "Skipping fails", $fails if $skip_fails;
    fail() for 1 .. $fails;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...