Bob McConnell wrote:
> Good morning,
> 
> I have begun the task of automating functional tests for some of our web
> servers. I have had some success using Selenium IDE in Firefox to
> capture input sequences, exporting them to Perl scripts, then using the
> Se remote control server to execute them. But I have run into one minor
> problem.
> 
> A basic test is to verify the error message returned when an invalid
> password is entered. This test script is shown below. I can run this as
> a simple test, or it can be part of a suite. The command line to
> manually run the suite is normally:
> 
> perl -MTest::Harness -e "@ARGV= map glob, @ARGV \
>   if  $^O =~ /^MSWin/; runtests @ARGV;" test/*.pl
> 
> Unfortunately, yes this is running on a WinXP system.
> 
> My problem is that we have multiple virtual hosts on that server, and I
> need to select a specific host for each run. So when I run the harness I
> need some way to pass the "tst12.dev" portion of the URL into each of
> the test scripts. I can't see any way with Test::Harness or Test::More
> to do this. If I can, then I have other parameters that need to be
> passed in as well.

Do I understand you correctly in believing that you are trying to run
specific tests against numerous hosts within a single test file?

If so, I do the same sort of thing. I loop through a pre-determined
number of items, and after each loop completes, reset the data:

my @bad_hours = qw ( a x $ 8p p8 $8 9999 &&& hello %hash );

for ( @bad_hours ) {

    $plan_info{ hours } = $_;
    my $return = $user->add_plan( \%plan_info, $error );
    isa_ok ( $return, 'ISP::Error', "$_ in the hrs field, the return" );

    _reset();
}

The _reset() function essentially undefs all existing params and
objects, and re-initializes them to an original state.

If you needed to loop in multiple variables, you could perhaps change
the construct to pass in differing anon hashes instead, and de-construct
and assign the values within the loop.

my @data = (
                { hostname => 'name', port => 8080, },
                { hostname => 'blah', port => 9010, },
          );

Am I on the right track as to what you are after? If so, you could also
change the setup so that the core test is in a sub, and instead of
looping around the code, you could just loop around a sub call instead:

for my $data_href ( @data ) {
        test_function( $href );
}

Steve

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to