Могу ли я использовать язык, отличный от VBScript, для программного выполнения QTP-тестов?
У меня есть код VBScript, который запускает QuickTest Professional, выполняет серию QTP-тестов и отправляет результаты по электронной почте. Это хорошо работает, но я бы предпочел использовать язык с лучшей поддержкой инструментов (например, хорошая IDE). В настоящее время я вызываю библиотеки .Net из запуска script, поэтому мне было интересно, можно ли использовать такой язык, как С#, для выполнения той же задачи. Если да, есть ли хорошие ресурсы, которые это касаются? Я мог бы найти очень мало по этой теме через Google, и, похоже, нет никаких других вопросов по поводу этой темы.
Для ясности я включил код для подпрограммы, который выполняет основную часть работы. Это не включает декларации .Net, но failedTestsList
и allTestsList
являются экземплярами System.ArrayList
.
EDIT. Все примеры документации QTP используют VBScript, но, как вы можете видеть, код просто создает объекты QTP. Я бы предположил, что они будут вызываться с другого языка, который поддерживал бы создание этих объектов. По моим ошибкам Google просто кажется, что никто этого не делает.
Sub ExecuteQTPTest(name)
Dim App, resultsPath
Dim testPath, testResults
testPath = name
allTestsList.Add(name)
Set App = CreateObject("QuickTest.Application")
App.Launch
App.Visible = False
App.Open testPath
SetQTPTestOptions(App)
SetQTPRunOptions(App)
SetQTPWebOptions(App)
App.Folders.RemoveAll
Dim qtpTest, qtpResultsOpt
Set qtpTest = App.Test
Set qtpResultsOpt = CreateObject("QuickTest.RunResultsOptions")
resultsPath = testPath & "\RES1"
qtpResultsOpt.ResultsLocation = resultsPath
qtpTest.Run qtpResultsOpt ''// Run the test
testResults = "Test Status: " & qtpTest.LastRunResults.Status & vbCrLf & _
"Last Error: " & qtpTest.LastRunResults.LastError & vbCrLf & _
"Detailed Results located at " & qtpTest.LastRunResults.Path & _
" can be viewed with the QTP Results Viewer Tool " & vbCrLf
If qtpTest.LastRunResults.Status <> "Passed" Then
g_testRunPassed = False
failureCount = failureCount + 1
failedTestsList.Add(name)
LogResults testResults, name
End If
qtpTest.Close
Set qtpResultsOpt = Nothing
Set qtpTest = Nothing
App.Quit
Set App = Nothing
End Sub
Ответы
Ответ 1
Извините, но у меня нет времени, чтобы преобразовать ваш полный образец в С#. Я собрал простую демоверсию, которая заставит вас идти. Это просто использует С# для открытия экземпляра QTP:
using System;
using QTObjectModelLib;
namespace QtpDemo
{
class QtpDriver
{
[STAThread]
static void Main(string[] args)
{
Application app = new Application();
app.Launch();
app.Visible = true;
}
}
}
Вам нужно будет скомпилировать его, связав его с C:\Program Files\Mercury Interactive\QuickTest Professional\bin\QTObjectModelLib.dll(который является библиотекой intertext.NET для QTObjectModel.dll) и имеет это и QTObjectModel.dll в ваш каталог приложений при запуске.
Вам не должно быть так сложно конвертировать любые объявления объектов и вызовы функций из VBScript в С#. Пожалуйста, спросите, не ясно ли что-то.
К вашему другому вопросу о образцах в Интернете - есть много людей, которые делают более продвинутые вещи с QTP и QC, но я думаю, что любые действительно умные решения не разделяются. Например, мне, вероятно, запретили бы делиться такими вещами моим трудовым договором, но я согласен с вами - у вас есть недостаток хороших образцов QTP API, по крайней мере, в Google. Сказав это, я сердечно рекомендую SQA Forums для ваших QTP и QC потребностей.
Рич
Ответ 2
ДА, вы можете использовать все, что может "сделать" COM, и это включает в себя С#.
Также VB.NET, конечно.
и Perl, Python, Javascript и другие.
Без помощи Google вы должны будете следить за своим носом, как работать с интерфейсом, но это не так сложно, когда у вас есть существующий пример. Также ваш поставщик, в идеале, задокументирует COM-интерфейс для вас.
Ответ 3
если это все еще имеет значение для вас... QTP 11 позволяет вам script в С#
Ответ 4
См. следующий ответ, поскольку он даст вам точную информацию, которую вы ищете для подключения приложения С# с QTP/UFT:
fooobar.com/info/461353/...