OpenQuality.ru

Качество программного обеспечения

Качество программного обеспечения: в главных ролях

Лента  Радар  Блог  Опыт  
Разум  Видео  Заметки  Эпизоды


AutoIt: чтение конфигурации автотеста

В составе AutoIt есть отличные возможности для считывания конфигурации системы и передачи ее автотесту.

Рассмотрим небольшой пример. Есть две группы параметров, которые определяют настройки SQL-сервера и клиентского приложения. Определим значения этих параметров в текстовом конфигурационном файле (conf.ini):

[SQLSettings]
SQLConnString=rh75;User ID=dev;Password=435H2hfs;Initial Catalog=’SecIssues’
NumberOfConnections=5
PossibleTimeOut=30
[ClientSettings]
UserName=Operator
UserAgent=Chrome

Вот один из вариантов считывания конфигурации:

Func getConfiguration ($configuration_file, $section)
   $var = IniReadSection($configuration_file, $section)
   If @error Then
        MsgBox(4096, "", "Error occurred while reading a configuration file: " & $configuration_file)
   Else
        For $i = 1 To $var[0][0]
               Assign ($var[$i][0], $var[$i][1],2)
        Next
   EndIf
EndFunc
 
getConfiguration ("conf.ini", "SQLSettings")

IniReadSection считывает секцию параметров конфигурационного файла и заполняет массив. Далее проходим по нему в цикле и с помощью Assign создаем глобальные переменные, имена которых совпадают с названиями параметров. В нашем случае, если в конфигурационном файле была строка NumberOfConnections=5, то после выполнения вышеприведенного кода переменная $NumberOfConnections будет равна 5.

Неважно, сколько параметров будет добавлено в conf.ini - код не изменится.

Стоит отметить, что динамическое определение переменных справедливо считается опасным в классических языках программирования. В частности, в Perl при наличии use strict мы получим ошибку:
Can’t use string (”NumberOfConnections”) as a SCALAR ref while “strict refs” in use at getConfiguration.pl line 7.
И в нашем AutoIt-примере переменная NumberOfConnections будет иметь неопределенное значение, если строки NumberOfConnections=5 не будет в конфигурационном файле. Поэтому, даже в случае AutoIt и простого тестового окружения необходимо быть начеку и вводить дополнительные проверки на критических участках кода.

Вернемся к нашему примеру. Бывают ситуации, когда необходимо “на лету” переопределить значение того или иного параметра, не изменяя конфигурационный файл. Вот как это можно сделать:

1. укажем значения интересующих нас параметров в командной строке при запуске автотеста:

autoit3 main.au3 NumberOfConnections=10 PossibleTimeOut=120

2. в автотесте вызовем функцию getCommandLineParameters ()

Func getCommandLineParameters ()
   For $i = 1 To $CmdLine[0]
        $array=StringRegExp ($CmdLine[$i],"([[:alnum:]]+)=(.+)$",1)
        Assign ($array[0], $array[1])
   Next
EndFunc

Если после выполнения getConfiguration (”conf.ini”, “SQLSettings”) значение параметра (и переменной) NumberOfConnections было равно 5, то при выполнении getCommandLineParameters () оно станет равно 10.

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

Отправить в Twitter, Facebook, ВКонтакте | Опубликовано 16.09.2008 в рубрике "Автоматизация"

Комментарии


Добавить комментарий

Пожалуйста, исправьте результат: дважды два равно



КРАТКОЕ СОДЕРЖАНИЕ

Что такое качество программного обеспечения и как его улучшить: теория и практика, задачи и решения, подводные камни и обходные пути.


ПУТЕВОДИТЕЛЬ

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

ПОДПИСКА

Доступ к самым интересным материалам по электропочте и RSS. Подробности.

ИЩЕЙКА