QTP: Универсальный класс для работы с даннымиИсточник: software-testing Сергей Талалаев
Влияние мирового кризиса, к сожалению, сказалось и на моей персоне и мне потребовалось срочно и по возможности глубоко изучить новый для себя фреймворк - Quick Test Professional. И душа рвется поведать о результатах, которые надеюсь буду полезны не только мне одному. Двойное название статьи как-бы говорит о том, что материала накопилось достаточно для небольшой серии статей и если силы и желание не иссякнут еще на первой статье, то есть шанс увидеть продолжение ... 1. ВведениеУ меня уже был опыт работы с продуктами HP Mercury, но он относился к предыдущей линейке, я имею в виду WinRunner. Естественно я ожидал некоторого сходства в процессах скриптостроения и организации самого фреймворка. Поэтому по свежим следам постараюсь изложить замеченные мною интересные моменты и привести свои примеры реализации некоторых функций. 2. Работа с Excel-даннымиЕще работая с WinRunner, я убедился, что встроенная реализация Excel хранилища не настолько гибка, как мне бы хотелось. Поэтому, как всегда, я приготовился к миграции своих процедур для работы с Excel. И был немного удивлен отсутствию встроенных средств работы с БД. Но эта задача вполне по силам, когда за плечами вся мощь VB :) 2.1. Основные задачиИтак, для начала определимся, зачем нам это нужно. Эти трудносовместимые вещи отлично реализуются посредством встроенной в Excel валидации входных данных и также прекрасно уничтожаются попыткой редактирования Excel таблицы напрямую из QTP. Было до вмешательства из QTP: Стало после редактирования из QTP: Чтобы избежать подобных казусов я давно применяю прямую вычитку из Excel файлов в массивы, используя для этого стандартные ODBC источники. Данная техника успешно прижилась уже на следующих тестовых фреймворках: Rational Robot, IBM Rational Functional Tester, WinRunner и надеюсь QTP Помимо решения вышеперечисленных проблем мы избегаем также серьезного, на мой взгляд, ограничения по использованию одной таблицы для одного Excel sheet. 2.2. Предварительные шагиВ Excel документах имеется функциональность которая позволяет выделять значимые для пользователя подмножества ячееек в специальные структуры. Такие структуры называемые "именованными диапазонами" обеспечивают возможность обращаться к ним к ним через логические имена. Итак, для оформления требуемой совокупности ячеек в качестве "именованного диапазона" необходимо выполнить следющую последовательность действий:
или напрямую введя имя диапазона в Navigation Bar. Для проверки корректности вновь созданного именованного диапазона - выделите все ячейки диапазона и проверьте значение в Navigation Bar. Он должен содержать логическое имя вместо A1 нотации. Важно отметить одно требование обязательно при использовании именованных диапазонов в качестве источника данных: 2.3. Со стороны функциональной библиотекиПосле всех подготовительных шагов осталось совсем немного поработать руками, а точнее пописать код. Раз уж QTP 9.5 предоставил нам замечательную возможность работать c "почти" объектами - грех было бы ей не воспользоваться. Поэтому весь наш функционал мы гордо завернем в класс с благозвучным названием TestData. Стоит напомнить, что QTP не видит напрямую классы, объявленные во внешних библиотеках, поэтому для каждого класса должна присутствовать функция создания экземпляра класса, в данном случае - CreateTestData Кроме того мы должны иметь возможность инициировать наш класс не только через загрузку из Excel источника но и напрямую из кода. Именно для этих целей появились два метода: SetData и GetData |