Всем доброго дня и хорошего настроения!
Не так давно начала заниматься автоматизированным тестированием десктопного приложения (написано оно на Delfi, на всякий случай), для этого был выбран TestComplete 7.5. В программировании у меня имеются кое-какие знания, но в целом приходится разбираться по ходу написания тестов. Ранее работала с Selenium на C# (но там мне помогали ещё и программисты). Здесь же я выбрала JScript. По старой памяти хотелось бы и в TestComplete избежать повторения кода и разбить его по максимуму на классы.
Теперь к сути.
В разных тестах часто повторяются одни и те же кнопки и поля. Я решила их вынести в отдельный скриптовый файл Fields. Это позволило бы избежать повторения и длинных строк в самих тестах. По моей задумке при выполнении теста, TestComplete ссылался бы на этот Fields. В случае изменения дерева поля или кнопки - я бы редактировала только одну строку, а не в каждом тесте.
Т.е. раньше было в тесте: Sys.Process...<...>.Keys("1333");
Теперь: в классе Fields: button = Sys.Process...<...>;
А в классе с тестами уже так: button.Click();
В fields я просто создавала глобальные переменные и указывала процесс.
В какой-то момент выяснилось, что так оно не работает. TestCompete теперь перед запуском теста начал искать все процессы из Fields. А некоторые из них были недоступны в данный момент времени (т.е. в программе надо было кликать на какие-то кнопки и вызывать другие формы, которые были скрыты). Я-то полагала, что он будет обращаться к этим переменным только когда в тесте до них дойдёт, а не перед тестом.
Теперь вопрос. Можно ли как-то решить эту проблему? Чтобы он не искал процессы из Fields перед запуском теста? Или же нужно каждое поле прописывать в отдельных function и предусматривать ещё действия с каждой function(то кликнуть, то ввести с клавиатуры, то проверить существование)?