11

我有启动 QuickTest Professional、执行一系列 QTP 测试并通过电子邮件发送结果的 VBScript 代码。这很好用,但我更喜欢使用具有更好工具支持的语言(例如一个好的 IDE)。我目前正在从启动脚本调用 .Net 库,所以我想知道是否可以使用像 C# 这样的语言来完成相同的任务。如果是这样,是否有任何好的资源可以解决这个问题?我可以通过谷歌找到关于这个主题的很少,而且似乎没有关于这个主题的任何其他问题。

为了清楚起见,我已经包含了完成大部分工作的例程的代码。这不包括 .Net 声明,但failedTestsListallTestsList是 .Net 的实例System.ArrayList

编辑:所有 QTP 文档示例都使用 VBScript,但正如您所见,代码只是创建 QTP 对象。我会假设这些可以从另一种支持创建这些对象的语言中调用。从我的谷歌失败看来,没有人这样做。

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
4

4 回答 4

14

抱歉,但我没有时间将您的完整示例转换为 C#。我已经整理了一个简单的演示,应该可以让您继续前进。这只是使用 C# 打开一个 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(这是 QTObjectModel.dll 的 .NET 互操作库),并在您的应用程序目录中包含该和 QTObjectModel.dll当你运行它时。

从这里开始,您应该不难将任何对象声明和函数调用从 VBScript 转换为 C#。请询问是否有任何不清楚的地方。

关于互联网上的样本的另一点 - 有很多人在那里使用 QTP 和 QC 做更高级的东西,但我认为没有共享任何真正聪明的解决方案。例如,我的雇佣合同可能会禁止我分享这些东西,但我同意你的看法——至少在谷歌上,缺乏好的 QTP API 样本。话虽如此,我衷心推荐SQA 论坛以满足您的 QTP 和 QC 需求。

富有的

于 2009-05-23T11:27:25.403 回答
7

是的,你可以使用任何可以“做”COM 的东西,包括 C#。当然还有 VB.NET。

以及 Perl、Python、Javascript 等。

在没有谷歌帮助的情况下,您将不得不跟随您的鼻子,了解如何处理界面,但是当您拥有现有示例时,这并不难。理想情况下,您的供应商也会为您记录 COM 接口。

于 2009-05-22T19:33:57.273 回答
0

如果这对您仍然很重要... QTP 11 允许您在 C# 中编写脚本

于 2011-12-05T13:28:19.417 回答
0

请参阅以下答案,因为它将为您提供您正在寻找的将 C# 应用程序与 QTP/UFT 连接的确切信息:

https://stackoverflow.com/a/19887866/2794121

于 2013-11-25T21:52:23.247 回答