Тестирование калькулятора в TestComplete
Введение | |
Запись Keyword теста | |
Конвертация в скрипт | |
Форматирование скрипта | |
Запуск скрипта | |
Похожие статьи |
Введение
Про основы
TestComplete
можно прочитать
здесь
про
Python
здесь
В этой статье используется TestComplete версии 15, актуальной на 2023-й год.
Статья, вдохновившая на написание этой находится в песочнице Хабра по этой
ссылке
. Она написана в 2013-м году с применением TestComplete 9. Если вы автор той статьи или знаете его, отпишитесь в
чат
интересно узнать про ваш опыт с современнымы приложениями.
Запись простейшего теста
Кликните на New Project, либо File → New Project, либо нажмите SHIFT + CTRL + N

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

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

calc.exe расположен в
C:\Windows\System32\



Сложите 1 и 1


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

Код скрипта будет расположен в файле Unit1.py по адресу
C:\Users\Andrei\Documents\TestComplete 15 Projects\Calculator\Calculator\Script

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

Форматирование скрипта
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()



Имя объекта, который был выделен с помощью 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

Получим значение этого аттрибута с помощью 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.

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