Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
155 views
in Technique[技术] by (71.8m points)

c# - Can I use a language other than VBScript to programmatically execute QTP Tests?

I have VBScript code which launches QuickTest Professional, executes a series of QTP tests, and emails the results. This works well, but I would prefer to use a language with better tools support (a good IDE for example). I am currently calling .Net libraries from the launch script, so I was wondering if it was possible to use a language like C# to accomplish the same task. If so, are there any good resources which address this? I could find very little on this topic via Google and there do not seem to be any other questions on SO about this topic.

For clarity, I have included the code for the routine that does the bulk of the work. This does not include the .Net declarations, but failedTestsList and allTestsList are instances of System.ArrayList.

EDIT: All the QTP documentation examples use VBScript, but as you can see, the code is just creating the QTP objects. I would assume these would be callable from another language which supported creation of these objects. It just seems from my Google failures that no one is doing it.

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Apologies, but I don't have time to convert your full sample over to C#. I've thrown together a simple demo that should get you going. This just uses C# to open a QTP instance:

using System;
using QTObjectModelLib;

namespace QtpDemo
{
    class QtpDriver
    {
        [STAThread]
        static void Main(string[] args)
        {
            Application app = new Application();
            app.Launch();
            app.Visible = true;
        }
    }
}

You'll need to compile it linking to C:Program FilesMercury InteractiveQuickTest ProfessionalinQTObjectModelLib.dll (which is the .NET interop library for QTObjectModel.dll) and have that and QTObjectModel.dll in your app directory when you run it.

It shouldn't be that hard from here for you to convert any object declarations and function calls from VBScript to C#. Please ask if anything's unclear.

To your other point about samples on the internet - there are plenty of people out there doing more advanced stuff with QTP and QC, but I think any really clever solutions aren't shared. I, for example, would probably be prohibited from sharing such things by my employment contract, but I agree with you - there is a dearth of good QTP API samples out there, at least on Google. Having said that, I heartily recommend the SQA Forums for your QTP and QC needs.

Rich


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...