UFT 12.02 QTP与TFS的集成

时间:2016-05-20 06:09:07

标签: tfs hp-uft

我正在寻找UFT和TFS集成(从TFS运行测试,就像我们使用HPQC一样) 我搜索谷歌但没有帮助。如果有人知道该怎么做,请让我知道步骤。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用Generic Test在TFS测试期间调用QTP。确保在测试代理上安装了QTP。请参阅此处的代码以供参考: QTP TFS Generic Test Integration

另一个参考链接:Executing remote QTP scripts via Test Agents and Test Controllers

答案 1 :(得分:0)

答案 2 :(得分:0)

看看这段代码:

将QTObjectModelLib dll从C:\ Program Files(x86)\ HP \ Unified Functional Testing \ bin位置导入到您的解决方案中。

public void Fn_QTP()
{
qtApp.Launch(); 
qtApp.Visible = true; 
qtApp.Options.Run.RunMode = "Fast"; 
qtApp.Options.Run.StepExecutionDelay = 0; 
qtApp.Options.Run.ViewResults = false;  
qtApp.Test.Settings.Run.OnError = "Stop";
//iterate for all test cases under selected module
// oTestSuiteDict : this dictionary conatins all the testsuites from TFS which meant to be executed. 
//keys have their ID's 
foreach (var item in oTestSuiteDict.Keys)
{
    foreach (var TestCase in oTestSuiteDict[item].Keys)
    {
        Console.WriteLine("Executing TestCase  : {0}", TestCase);
        //update the XML file and upload in QTP
        //this XML file is used to provide the data to QTP as a environment variables.
        Fn_UpdateXMLFile(item, TestCase);

        //Open the test Case
        string scriptPath = @"path of script that will be opened in QTP (Action)";
        qtApp.Open(scriptPath, true, false);
        // Get a reference to the test object
        qtTest = qtApp.Test;  // Get reference to test object opened/created by application
        qtTest.Settings.Run.OnError = "NextStep"; 
        //check if the library is already associated.
        if (qtTest.Settings.Resources.Libraries.Find(@"library path") == 1)
        {
            qtTest.Settings.Resources.Libraries.RemoveAll();
        }
        qtTest.Settings.Resources.Libraries.Add(@"Library Path");
        //Console.WriteLine("Library is associated with Test");

        // Get a reference to the Results Object for  test results location
        QTObjectModelLib.RunResultsOptions qtRRO = new QTObjectModelLib.RunResultsOptions();

        // Run the test
        //creates and start the instance of Stopwatch just to track the time period of testcase execution.
        Stopwatch stopwatch = Stopwatch.StartNew(); 
        qtTest.Run(qtRRO, true, null);  // run the test
        stopwatch.Stop();
        string oTime = stopwatch.Elapsed.ToString();
        oTestCaseTime.Add(TestCase, oTime);
        string ostatus = qtTest.LastRunResults.Status;
        oResults.Add(TestCase, ostatus);
        qtTest.Close();  // Close the test
    }
}

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(qtTest);  // Cleanly release COM object
qtTest = null; // set object to null
//break;
//qtApp.Quit();  // Quit QTP
GC.Collect();  // Garbage collect
GC.WaitForPendingFinalizers();  // Wait for GC
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(qtApp);  // Cleanly release COM Object
qtApp = null;  // set to null
}

// Fn_UpdateXMLFile:更新qtp的环境变量的函数 //模块名称:testsuite名称(包含测试用例列表); testcasename:modulename(测试套件)中列出的测试用例

public void Fn_UpdateXMLFile(string modulename,string testcasename)
{
    string oPath = @"path of xml file";
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(oPath);
    XmlNodeList nodes = xmlDoc.SelectNodes("Environment/Variable/Value");
    nodes[0].InnerText = modulename;
    nodes[1].InnerText = testcasename;
    xmlDoc.Save(oPath);
}

// XML文件格式:

<Environment>
  <Variable>
    <Name>ModuleName</Name>
    <Value>ToolsMenu</Value>
  </Variable>
  <Variable>
    <Name>""</Name>
    <Value>""</Value>
  </Variable>
</Environment>