Тестирование калькулятора в TestComplete

Содержание
Введение
Запись Keyword теста
Конвертация в скрипт
Форматирование скрипта
Запуск скрипта
Похожие статьи

Введение

Про основы TestComplete можно прочитать здесь про Python здесь

В этой статье используется TestComplete версии 15, актуальной на 2023-й год.

Статья, вдохновившая на написание этой находится в песочнице Хабра по этой ссылке . Она написана в 2013-м году с применением TestComplete 9. Если вы автор той статьи или знаете его, отпишитесь в чат интересно узнать про ваш опыт с современнымы приложениями.

Запись простейшего теста

Кликните на New Project, либо FileNew Project, либо нажмите SHIFT + CTRL + N

Select project name, location and type of test to record TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete - Project Name

Задайте название проекта, и выберите язык, на котором будет написан скрипт. В этом примере скрипт будет на Python

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Укажите расположение приложения

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

calc.exe расположен в

C:\Windows\System32\

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Сложите 1 и 1

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Конвертируйте тест в скрипт.

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Код скрипта будет расположен в файле Unit1.py по адресу

C:\Users\Andrei\Documents\TestComplete 15 Projects\Calculator\Calculator\Script

Выбор браузера Run Browser TestComplete изображение с сайта www.andreyolegovich.ru
Выбрать браузер TestComplete

Советую выбрать Yes

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Форматирование скрипта

TestComplete не соблюдает рекомендации по форматированию Python кода PEP 8, поэтому после # в комментариях нет пробелов. Я добавляю их самостоятально.

Полученный в результате конвертации и форматирования скрипт будет выглядеть следующим оригинальным образом.

def Test1(): # Runs the "calc" tested application. TestedApps.calc.Run() # Clicks the 'One' object. Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Number_pad.One.Click() # Clicks the 'Plus' object. Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Standard_operators.Plus.Click() # Clicks the 'One' object. Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Number_pad.One.Click() # Clicks the 'Equals' object. Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Standard_operators.Equals.Click()

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Имя объекта, который был выделен с помощью Object Spy

Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.UIAObject("Display_is_0").UIAObject("TextContainer").UIAObject("NormalOutput")

У вас также может получится следующее имя

Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Display_is_30.TextContainer

Обратите внимание на имя объекта: там жёстко (особенно во втором случае) указано значение.

Это может сильно усложнить автоматизацию с генерацией тестовых данных.

Нас интересует аттрибут Text, который можно увидеть открыв Advanced view

Keyword Test Log TestComplete изображение с сайта www.andreyolegovich.ru
TestComplete

Получим значение этого аттрибута с помощью aqObject.GetPropertyValue()

result = aqObject.GetPropertyValue(Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.UIAObject("Display_is_0").UIAObject("TextContainer").UIAObject("NormalOutput"), "Text") assert int(result) == 2

В оригинальном виде скрипт выглядит ужасно, поэтому можно переписать его с некоторыми изменениями

def Test1(): # Runs the "calc" tested application. TestedApps.calc.Run() # Defines objects one = Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Number_pad.One plus = Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Standard_operators.Plus equals = Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.Standard_operators.Equals output = Aliases.Microsoft_WindowsCalculator.Calculator.NavView.LandmarkTarget.UIAObject("Display_is_0").UIAObject("TextContainer").UIAObject("NormalOutput") # Clicks the 'One' object. one.Click() # Clicks the 'Plus' object. plus.Click() # Clicks the 'One' object. one.Click() # Clicks the 'Equals' object. equals.Click() result = aqObject.GetPropertyValue(output, "Text") assert int(result) == 2

Если тест упадёт, предупреждение об ошибке будет зависеть от типа проверки. В нашем примере используется assert из Python, поэтому появится Python runtime error.

TestComplete Python runtime error изображение с сайта www.andreyolegovich.ru
TestComplete

Запуск скрипта

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

Похожие статьи
TesComplete
Основы
Файлы
Ошибки TestComplete
Тестирование
Автоматизация