3.8. Использование логов и анализ результатов

Назад: 3.7 Запуск скриптов Содержание Дальше: 3.9 Отладка скриптов

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

Если открыть любой лог, то в его верхней части вы увидите 6 типов сообщений, которые могут быть использованы:
  

  • Error – ошибки. Это могут быть как ошибки, автоматически генерируемые TestComplete-ом (например, когда TestComplete не находит объект или скрипт пытается выполнить щелчок мышью за пределами экрана), так и генерируемыми вручную (например, если выполняется какая-то проверка и необходимо сообщить о ее неправильных результатах).
  • Warning – предупреждения. Это тоже ошибки, но не критичные. Они также могут генерироваться TestComplete-ом или писаться непосредственно в скриптах.
  • Message – сообщения. Любые сообщения, которые могут быть полезны при просмотре логов. Сообщения вставляются в текст скрипта вручную и не генерируются TestComplete-ом.
  • Events – события. Происходят каждый раз, когда скрипт вводит текст (с помощью метода Keys) или щелкает мышью. События генерируются TestComplete-ом автоматически, но сообщения такого типа также можно создавать в скрипте.
  • Image – изображения. Позволяют вставлять изображения в лог (например, снимки экрана).
  • File – файл. Позволяет вставить в лог файл с возможностью открыть его непосредственно из лога. Это может быть полезно, например, если тестируемое приложение генерирует файл с данными и при просмотре лога есть необходимость в открытии этого сгенерированного файла.
  • Link – ссылка на файл или другой ресурс

Прежде чем изучать другие возможности системы логгирования TestComplete, рассмотрим простой пример работы с логом. Для генерации событий мы воспользуемся все тем же приложением Калькулятор.

function UseLog()
{
  var  wnd, i;
  wnd = Sys.Process(“calc”).Window(“SciCalc”, “Calculator Plus”);
  wnd.Activate();
  Log.Message(“Сообщение, генериуемое пользователем”, “Дополнительный текст сообщения”);
  Log.Error(“Ошибка, генерируемая пользователем”, “Дополнительный текст ошибки”);
 
  wnd.Keys(“123″);
  Log.Warning(“Предупреждение, генерируемое пользователем”, “Дополнительный текст предупреждения”);
  Log.File(Project.Path + “\\Stores\\Files\\testfile.txt”, “Описание файла”, “Дополнительный текст”);
  Log.Picture(Sys.Desktop.Picture(), “Снимок экрана”, “Дополнительный текст”);
  wnd.Click(200, 500);
 
}

Если запустить этот скрипт, мы получим следующий результат:
  

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

В нижней части окна находятся секции Remarks (дополнительный текст, комментарии) и Picture (здесь отображается картинка, когда в логе выделено сообщение типа Image).

Теперь рассмотрим более сложные примеры работы с логом.

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

function UseLogAttr()
{
  var attr = Log.CreateNewAttributes();
    attr.BackColor = BuiltIn.clBlue;
    attr.FontColor = BuiltIn.clWhite;
    attr.Bold = true;
    attr.Italic = true;
    attr.Underline = true;
 
  Log.Message(“Message without attributes”);
  Log.Message(“Message with attributes”, “”, pmNormal, attr);
    attr.BackColor = BuiltIn.clRed;
    attr.Bold = false;
    attr.Italic = false;
    attr.Underline = false;
  Log.Message(“Message with attributes”, “”, pmHighest, attr);
  Log.Message(“Message without attributes”, “”, pmHighest);
}

Результат работы функции:
  

Также в логе можно использовать папки (folders). Папка – это элемент лога, который содержит внутри себя дочерние элементы, в результате чего лог имеет древовидную структуру. Эта возможность может быть полезна, например, для того, чтобы все события, сообщения, ошибки и пр. для конкретного шага тесткейса не выводились в общий лог, а были скрыты до тех пор, пока не понадобятся для анализа. Это позволяет создавать более удобочитаемые логи.

Для работы с папками используются методы CreateFolder, AppendFolder, PushLogFolder, PopLogFolder. Метод AppendFolder создает новую папку и делает ее активной, в результате чего все следующие сообщения будут помещаться в нее до тех пор, пока она не будет закрыта с помощью метода PopLogFolder.

Метод CreateFolder создает папку, но не делает ее активной. При этом метод CreateFolder возвращает идентификатор созданной папки. С помощью этого идентификатора позже можно активировать эту папку методом PushLogFolder. Кроме того, во всех методах объекта Log (Message, Error, Warning и т.д.) есть необязательный параметр FolderID, с помощью которого можно помещать сообщения или ошибки прямо в необходимую папку.

Ниже показан пример работы с папками и результат работы скрипта.

function UseLogFolder()
{
  Log.Message(“Сообщение первого уровня”);
  Log.AppendFolder(“Folder 1″);
  Log.Message(“Сообщение второго уровня”);
  Log.AppendFolder(“Folder 2″);
  Log.Message(“Сообщение третьего уровня”);
  Log.PopLogFolder();
  Log.Message(“Сообщение второго уровня”);
  Log.PopLogFolder();
  Log.Message(“Сообщение первого уровня”);
 
  var folderID = Log.CreateFolder(“Folder 3″);
  Log.Message(“Сообщение первого уровня”);
  Log.PushLogFolder(folderID);
  Log.Message(“Сообщение второго уровня”);
  Log.PopLogFolder();
  Log.Message(“Сообщение первого уровня”);
 
  Log.Message(“Сообщение 2го уровня”, “”, pmNormal, null, null, folderID);
}

  

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

Полученные в результате работы скриптов логии можно экспортировать в HTML либо MHT формат. Для этого на панели инструментов лога необходимо нажать кнопку Export Test Results
  
затем в появившемся окне выбрать необходимые параметры и нажать ОК.
  

Результаты работы скриптов также можно экспортировать непосредственно из самих скриптов (например, в самом конце их работы). Для этого нужно воспользоваться методом Log.SaveResultsAs.

Кроме рассмотренных возможностей, в TestComplete-е также есть и другие полезные свойства и методы, полезные для работы с логом.

  • ErrCount, WrnCount, EvnCount, FileCount, ImgCount, LinkCount – количество ошибок, предупреждений и т.д. в логе
  • FolderErrCount, FolderWrnCount, FolderEvnCount, FolderFileCount, FolderImgCount, FolderLinkCount – количество ошибок, предупреждений и т.д. в конкретной папке лога
  • LockEvents/UnlockEvents – блокировка/разблокировка событий. После использования метода LockEvents TestComplete не будет помещать в лог события (Events) до тех пор, пока не отработает метод UnlockEvents. Это может быть полезно в том случае, когда при тестировании генерируется очень много событий, что влечет за собой большой размер лога и долгое время его открытия

 

Назад: 3.7 Запуск скриптов Содержание Дальше: 3.9 Отладка скриптов