Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование Test::Simple для своего скрипта. 
:(
    Опции темы
z0091
Дата 15.10.2012, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.10.2012
Где: Самара

Репутация: нет
Всего: нет



Всем привет!

Мне необходимо выполнить тестирование своего небольшого скрипта. Скрипт я разбил на функции. Каждая функция выполняет максимально простое действие. 

Код

#!/usr/bin/perl -w

package go;
require Exporter;
@ISA=(Exporter);
@EXPORT = qw(domain_calc_sort check_list domain_sort email_list domain_calc go);

{

sub go {

    foreach (<>) {
        my $name = check_list(chomp($_));
        if ($name) {
            my ($value, $key) = split( /@/, $_ );

                $list{ $key }{ $value } = $value;

            } else {
                push (@list, "\L$_");
            }
    }
}
#тут остальной код.

sub domain_calc_sort {
    my ( $h ) = @_;
    my @domain_calc_sort;
    # Сортируем домены по кол-ву ящиков. Возврашаем список массивом
    my %ha = %$h;
    my @sorted_keys = (sort {$ha{$b} <=>  $ha{$a}} keys %ha);
    foreach(@sorted_keys){
        push ( @domain_calc_sort, $_." : ".$ha{$_} );
    };
    return @domain_calc_sort;
}
go;
1;
}


Ранее функции "go" у меня не было. Но  ее добавил, что бы весь скрипт состоял из функций,  потому что как я понял, для тестирования мне необходимо оформить ее как perl модуль.

Теперь например я хочу протестировать скрипт.

test.pm
Код

#!/usr/bin/perl
# use Test::Simple tests => 2;
use go;

# ok(1);
# my %food_color = ( 
# "mail.ru" => "1", "reg.ru" => "1", "vk.com" => "5", "i.ua" => "3" ); 

# my @domain = go::domain_calc_sort( \%food_color );
# print @domain;
print "2";

1;
# ok(1+1 == 2,'1+1=2');

ps. код комментировал в процессе решения проблемы. 

В итоге, запуска скрипт test.pm, он ожидает что бы я указал файл для чтения. Если указать файл, то выполнится исходный скрипт.

Суть проблемы в том, как мне использовать тесты? МНе не нужно что бы подключаемый скрипт начал выполняться. Мне нужно только проверить работу отдельных его функций.
PM MAIL ICQ   Вверх
z0091
Дата 15.10.2012, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.10.2012
Где: Самара

Репутация: нет
Всего: нет



Бльше всего интересует, как корректно подключить файл, в котором есть блок:
Код

foreach (<>) {...}


require_ok('myfile.pl');  или  use ('myfile.pl') подключают, но начинают его тут-же выполнять. Ждут ввовда <>.


PM MAIL ICQ   Вверх
Pfailed
Дата 16.10.2012, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



В модулях обычно не запускается выполнение никаких функций, а происходит лишь их определение, поэтому их и удобно тестировать.
Сами функции стоит запускать из главной программы, где подключаются нужные модули. Поэтому можно сказать, что ваш модуль написан неверно.
А именовать модули принято в CamelCase, так что ваш "go" должен быть "Go". Также ".pm" это расширение для модулей, а для скриптов используется ".pl".



--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.