Автоматизация запуска QTP тестов
В QTP есть интерфейс для обращения к его объектной модели QuickTest
Данный интерфейс реализован .dll библиотекой. В документации написано, что обертку для запуска QTP тестов можно писать на различных языках. Но наиболее удобным будет писать в среде разработки при подключенной библиотеки. Как оно и предполагается, будут доступны возможности IntelliSense. Также в QuickTest Professional Automation Object Model Reference написано, что в качестве библиотеки в reference надо указывать QTObjectModel.dll.
В данном посте я опишу свои впечатления о знакомстве с данной библиотекой
- Запуск QTP Application используя javascript
Для начала можно написать простенький javascript код
function QTP() // объявляем функцию
{
debugger ; // это сделано для того, что бы при запуске в браузере выскочило окно с предложением о дебаге.
var qtApp = new ActiveXObject("QuickTest.Application"); // Создаем объект application
while (qtApp.Launched == false ) // Проверяем запущен или не запущен QTP и если false, то запускаем
{
qtApp.Launch();
};
qtApp.Visible = true // Делаем объект видимым
setTimeout(function() { qtApp.Quit() }, 10000); // через 10 секунд после того как QTP станет видимым он закроется
}
Для запуска данного скрипта осталось только сделать html файлик в котором на какой-нить элемент повесить событие onclick или onload.
В данном случае для отладки удобно использовать Visual studio. Не пробуйте запускать данный скрипт в firefox т.к. он официально не поддерживает ActiveX.
Вот, что можно получить в случае отладки скриптов в студии.
- Запуск QTP используя C#
И так студия Visual Studio 2008. Тип создаваемого проекта C# console Application (на выходе получаем .dll и .exe файл для запуска приложения).
Сразу скажу, что то как описано ниже отличается от тех примеров создания объекта QTP Application из справки к QTP.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QTObjectModelLib; // здесь я использую библиотеку QTObjectModelLib.dll , вместо QTObjectModel.dll. Вроде как эту библиотеку лучше использовать , если обертка пишется на c#, но официального подтверждения этой информации я не видел.
namespace TestRunner
{
class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += (s1, e1) => { Console.WriteLine((e1.ExceptionObject as Exception).ToString()); Console.ReadLine(); }; // это нужно для того, что бы если вдруг на компе, где запускается вдруг не окажется нужной dll
try
{
Testrunner(); // запуск метода в котором идет запуск QTP
}
catch (Exception e) // отлов возникающих ошибок и вывод их в консоль
{
Console.WriteLine(e.ToString());
Console.ReadKey();
}
}
public static void Testrunner()
{
ApplicationClass app = new ApplicationClass(); // собственно создается объект класса в котором реализованы все методы интерфейсов объекта Application
app.Launch(); // запуск QTP
app.Visible = true; // Делаем видимым
Console.ReadKey(); // Ждем нажатия кнопки в Console
app.Quit(); // После нажатия кнопки в консоли мы закрываем QTP
// Вкратце суть строчек ниже это очистка памяти. Метод FinalReleaseComObject Освобождает все ссылки на вызываемую оболочку CLR, устанавливая счетчик ссылок соответствующей оболочки среды CLR равным 0. Далее вызываем garbage collector , т.е. сборщик мусора. Я думаю это все делать не обязательно , но т.к. по сути мы используем не управляемый код используя dll. У меня возникали различные ошибки связанные с тем, что где то, видимо не подчищалось.
while( System.Runtime.InteropServices.Marshal.FinalReleaseComObject( app ) > 0 );
app = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
}
}
Кстати в случае использования QTObjectModelLib.dll , вместо QTObjectModel.dll, можно также создавать объект Application следующим образом:
Application app = new Application();
И это не смотря на то, что Application интерфейс.
Теперь совет, если вы при попытке запуска QTP через скрипт получаете ошибку "сервер rpc недоступен", то зайдите в Task Manager и прибейте процесс QTAutomation Agent.
И попробуйте снова.
1 комментарий:
CASINO, CA 93328 - Mapyro
› casino 논산 출장안마 › harrahs-casino › casino › harrahs-casino Find the BEST 충청북도 출장샵 CASINO in 당진 출장마사지 CA (CA) with reviews, 계룡 출장마사지 photos & 용인 출장안마 ratings - Mapyro - Official CA Hotels Casino. $$$.
Отправить комментарий