Excel VBA代码附加QCtesting用例中的文件

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

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

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

  1. 连接到QC项目与login凭据,域名和项目的详细信息
  2. 从本地文件夹中select一个或多个文件
  3. 上传一个文件到QCtesting实验室,具体的testing案例

我使用了下面的代码,但在代码中出现错误。 我在下面的代码中标记了它,请检查以下内容:

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 

发生错误的原因是对象数组没有返回。 在假定lst.Item(1)存在之前,您需要检查Filter给出了结果列表。

例如:

 If lst.Count > 0 Then Set tstInstance = lst.Item(1)