При написании скриптов автоматизированного тестирования на 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 будут одинаковы.