我在QC进行了大约800次奇数测试。我有一个运行的vbscript,并在运行脚本时将测试实验室中的所有测试用例标记为PASS。唯一的担心是,脚本总是从第一次测试开始运行到我指定的最后一次(比如从第一次测试到第700次测试或从第一次测试到第140次测试)。我想更改代码,以便我可以从中间运行脚本,例如从第500个测试到第600个或从第430个测试到第450个测试,依此类推。我尝试在代码中编辑所有可能的值,但没有用。 有人可以帮我解决它吗?
发布代码
Option Explicit
Dim j
Dim qcServer
Dim tdc
Dim testset
Dim TSetFact
Dim tsTreeMgr
Dim npath
Dim tsFolder
Dim tsList
Dim tSetName
qcServer = "http://testdirector.mot.com/qcbin"
'nPath = "Root\Execution\Build_1.0"
nPath = "Root\Execution\Build_1.0"
tSetName = "Test Folder"
WScript.Echo qcserver
Set tdc = CreateObject("tdapiole80.tdconnection")
tdc.InitConnectionEx qcServer
tdc.Login "username", "password"
tdc.Connect "DEFAULT", "TEAMMate"
If tdc.ProjectConnected = True Then
WScript.Echo "Connected to the Project Columbus"
End If
WScript.Echo "Logged in ??"
WScript.Echo tdc.LoggedIn
WScript.Echo "Connected ??"
WScript.Echo tdc.Connected
WScript.Echo "Server name"
WScript.Echo tdc.ServerName
WScript.Echo "Domain name"
WScript.Echo tdc.DomainName
WScript.Echo "Project name"
WScript.Echo tdc.ProjectName
WScript.Echo "username"
WScript.Echo tdc.UserName
Set TSetFact = tdc.TestSetFactory
Set tsTreeMgr = tdc.TestSetTreeManager
Set tsFolder = tsTreeMgr.NodeByPath(nPath)
If tsFolder Is Nothing Then
WScript.Echo "Testset folder not found"
End If
WScript.Echo "Test set folder exists"
Set tsList = tsFolder.FindTestSets(tSetName)
If tsList Is Nothing Then
WScript.Echo "Testset not found"
End If
If tsList.Count > 1 Then
WScript.Echo "Multiple Testsets found with same name"
End If
If tsList.Count < 1 Then
WScript.Echo "Testset not found"
End If
WScript.Echo "Testset exists"
Set testset = tsList.Item(1)
WScript.Echo testSet.Name
Dim TSTestFact
Dim TestSetTestsList
Dim thetest
Set TSTestFact = testSet.TSTestFactory
Set TestSetTestsList = TSTestFact.NewList("")
j = 0
Dim sID
Dim sName
For Each thetest In TestSetTestsList
j = j + 1
If j > 737 Then **j > 737 indicates run up to 737th test in the test lab) **
Exit For
End If
'sID = thetest.ID
sName = thetest.Name
'WScript.Echo sID
If j > 0 Then
WScript.Echo "testcase found for execution"
Dim runName
Dim RunF
Dim theRun
Dim runStepF
Dim lst
Dim Item
Dim runtitle
'Set runtitle = "Run"
runName = thetest.ID
Set RunF = thetest.RunFactory
Set theRun = RunF.AddItem(runName)
theRun.Status = "Passed"
theRun.Post
theRun.CopyDesignSteps
theRun.Post
Set runStepF = theRun.StepFactory
Set lst = runStepF.NewList("")
For Each Item In lst
Item.Status = "Passed"
Item.Post
Next
End If
WScript.Echo sName
Next
'Set ObjRun = QCUtil.CurrentRun
'Dim sf1 as StepFactory
'Dim s1 as step
'Set sf1 = ObjRun.StepFactory
'Set s1 = sf1.NewList("")
'For i = 1 To s1.count
's1.Item(i).Field("ST_EXPECTED") = "Your Expected"
's1.Item(i).Field("ST_ACTUAL") = "Your Actual"
'Next
's1.Post
'Disconnect
If tdc.Connected Then
tdc.Disconnect
WScript.Echo "Disconnected QC session successfully"
End If
'Log off the server
If tdc.LoggedIn Then
tdc.Logout
WScript.Echo "Logged off from the Server successfully"
End If
'Release the TDConnection object.
tdc.ReleaseConnection
WScript.Echo "Released the connection"
'Check status
Set tdc = Nothing
答案 0 :(得分:1)
看起来代码应该适用于737或更高的测试用例。另请查看Quality Center帮助以获取可能有用的OTA参考。您可以下载Mercury Quality Center Open Test Architecture API参考(OTA_API_Reference.chm)&amp; 站点管理API参考(Site_Admin_API_Reference.chm)文件来自此处: http://technologicaguru.blogspot.com.au/2008/03/quality-center-open-test-architecture.html
在没有尝试过的情况下,乍一看,您可以尝试使用以下内容替换部分代码来指定要查询的较低和较高的测试用例编号范围:
Dim sID
Dim sName
Dim testCaseStart
Dim testCaseEnd
'Change testCaseStart and testCaseEnd to required test case range
testStartVal = 500
testEndVal = 600
For Each thetest In TestSetTestsList
If j >= testCaseStart And j <= testCaseEnd then
'sID = thetest.ID
sName = thetest.Name
'WScript.Echo sID
If j > 0 Then
WScript.Echo "testcase found for execution"
Dim runName
Dim RunF
Dim theRun
Dim runStepF
Dim lst
Dim Item
Dim runtitle
'Set runtitle = "Run"
runName = thetest.ID
Set RunF = thetest.RunFactory
Set theRun = RunF.AddItem(runName)
theRun.Status = "Passed"
theRun.Post
theRun.CopyDesignSteps
theRun.Post
Set runStepF = theRun.StepFactory
Set lst = runStepF.NewList("")
For Each Item In lst
Item.Status = "Passed"
Item.Post
Next
End If
WScript.Echo sName
End If
j = j + 1
Next