用于在QC测试用例中附加文件的Excel VBA代码

时间:2014-05-26 12:24:38

标签: excel vba excel-vba qc

我有一个工具可以捕获我们在工作场所测试的应用程序的屏幕截图。现在,一旦我完成对特定测试用例或方案的测试,我们就会将手动截屏附加到HP Quality Center。

我想自动执行此操作并使我的工具将word文档上传到QC测试实验室中的测试。这可能吗?如果是,我们如何在Excel VBA中执行此操作?

我们需要执行的操作如下:

  1. 使用登录凭据,域名和域名连接到QC项目。项目详情
  2. 从本地文件夹中选择文件
  3. 将文件上传到QC测试实验室,具体测试用例
  4. 我使用了以下代码,但在该代码中出现错误。我在下面的代码中标记了它,请检查以下内容:

    Dim intTestID, FldPath, TestSetName, i
    Dim TestSetFact, tsTreeMgr, tSetFolder, TestSetsList, theTestSet
    Dim TestSetIdentifier, TSTestFact, TestSetTestsList, testInstanceF, aFilter
    Dim lst, tstInstance
    
    intTestID = "8968"
    
    FldPath = TextBox3.Text '"Root\ProjFold\Release1\BRD"
    TestSetName = ComboBox3.Text '"BRD" '
    
    Set Connection = CreateObject("TDApiOle80.TDConnection")
    Connection.InitConnectionEx Sheet2.Range("B1").Value2
    Connection.Login TextBox1.Text, TextBox2.Text
    Connection.Connect ComboBox1.Text, ComboBox2.Text
    
    Set TestSetFact = Connection.TestSetFactory
    Set tsTreeMgr = Connection.TestSetTreeManager
    
    Set tSetFolder = tsTreeMgr.NodeByPath(FldPath)
    Set TestSetsList = tSetFolder.FindTestSets(TestSetName)
    Set theTestSet = TestSetsList.Item(1)
    TestSetIdentifier = theTestSet.ID
    i = 0
    Set TSTestFact = theTestSet.TSTestFactory
    Set TestSetTestsList = TSTestFact.NewList("")
    
    Set testInstanceF = Connection.TSTestFactory
    Set aFilter = testInstanceF.Filter
    
    aFilter.Filter("TC_TEST_ID") = intTestID
    Set lst = testInstanceF.NewList(aFilter.Text)
    Set tstInstance = lst.Item(1)   <---------------- getting error here
    MsgBox (tstInstance.Field("TS_Name"))
    'tstInstance.Status = "Failed"
    'tstInstance.Field("TC_STATUS") = Item1.Status '"Passed"
    'tstInstance.Post
    Dim RunF, runName, NewRun, runStepF, runlst, Item1, runStep2
    
    MsgBox (tstInstance.Field("TS_Subject"))
    Set RunF = tstInstance.RunFactory
    runName = "Run_" & Month(Date) & "-" & Day(Date) & "_" & Hour(Now) & "-" & Minute(Now) &         "-" & Second(Now)
    Set NewRun = RunF.AddItem(Null)
    NewRun.Status = "Passed"
    NewRun.Name = runName
    NewRun.Post
    NewRun.CopyDesignSteps
    NewRun.Post
    Set runStepF = NewRun.StepFactory
    Set runlst = runStepF.NewList("")
    For Each Item1 In runlst
          Set runStep2 = Item1
          runStep2.Status = "Passed" '
          runStep2.Field("ST_ACTUAL") = "As Expected"
          runStep2.Post
    Next
    'tstInstance.Refresh
    tstInstance.Status = "Failed"
    
    tstInstance.Post
    Connection.DisconnectProject
    Connection.ReleaseConnection
    'Set QC = Nothing
    Set Connection = Nothing
    

1 个答案:

答案 0 :(得分:0)

发生错误是因为对象数组未返回。在假设Filter存在之前,您需要检查lst.Item(1)是否为您提供了结果列表。

例如:

If lst.Count > 0 Then Set tstInstance = lst.Item(1)
相关问题