Могу ли я использовать язык, отличный от 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/...