Автологируемые контролы

При написании скриптов автоматизированного тестирования на 4test (и не только) одним из важных аспектов является результирующий файл, получаемый после выполнения скрипта.

В данном результирующем файле довольно подробно должна быть представлена информация о последовательности всех действий, которые произвел скрипт. Поэтому в самом коде постоянно нужно следить за логированием и писать много ненужного (для самого процесса тестирования) кода.

[ ] //Пример #1
[ ] STRING sUserName = "administrator"
[ ] 
[ ] wMainWnd.HtmlTextField("$user name").SetText(sUserName )
[ ] Print("В текстовое поле 'user name' был помещен текст {sUserName}.")
[ ] 
[ ] wMainWnd.HtmlPushButton("$login").Click()
[ ] Print("Нажата кнопка 'login'.")

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

Для модернизации примера приведенного выше создадим два winclass-а: MyPushButton и MyTextField с переопределенными методами Click() и SetText() соответственно.

[-] winclass MyPushButton : HtmlPushButton
 [-] void Click(int iBtn optional, int iX optional, int iY optional)
  [ ] Print("Нажата кнопка '{this.GetCaption()}'.")
  [ ] derived::Click(iBtn, iX, iY)

[-] winclass MyTextField : HtmlTextField
 [-] void SetText(STRING sValue)
  [ ] Print("В текстовое поле '{this.GetCaption()}' был помещен текст {sValue}.")
  [ ] derived :: SetText(sValue)

Теперь можно переписать пример.

[ ] //Пример #2
[ ] STRING sUserName = "administrator"
[ ] 
[ ] wMainWnd.MyTextField("$user name").SetText(sUserName )
[ ] 
[ ] wMainWnd.MyPushButton("$login").Click()

В данном случае мы вместо базовых классов HtmlTextField и HtmlPushButton используем MyTextField и MyPushButton. Мы избавились от лишнего кода и логирование будет выполнено автоматически. Результирующие файлы примера #1 и примера #2 будут одинаковы.

Рейтинг
( Пока оценок нет )
Загрузка ...