【问题标题】:Lookup Fields in HP Quality CenterHP Quality Center 中的查找字段
【发布时间】:2016-12-29 15:05:21
【问题描述】:

我正在通过 Open Test Architecture API 与 Quality Center 交互。

我想确定链接到查找表的错误字段的允许值。

这些可通过标准前端中的下拉菜单获得。

谢谢

编辑:更详细的解释

我们有一些字段只允许在其中放置特定值。

例如: NextAction 可以是以下之一 { "1. Specify", "2. Analysis", "3. Design" }

但我一直无法找到以编程方式确定这些允许值的方法。

【问题讨论】:

    标签: hp-quality-center


    【解决方案1】:

    使用 BugFactory 对象,您可以访问字段及其属性。这是从 OTA API 参考帮助文件中直接复制/粘贴的 Visual Basic。如果您需要更多帮助,请尝试提供更有针对性的问题,例如您要完成的任务、哪些字段以及您尝试使用哪种语言访问。

    Public Sub CheckValidValue(Optional TableName As String = "BUG")
        Dim BugFact As BugFactory 
        Dim BugList As list 
        Dim aField As TDField 
        Dim fieldList As list 
        Dim rc, ErrCode As Long 
        Dim aBug As Bug 
        Dim msg$ 
        Dim okCnt%, noNodeCnt%, errorCnt%, unknownCnt% 
        Dim dataType As Long 
    
    '------------------------------------------------ 
    ' User BugFactory.Fields to get a list of TDField 
    ' objects in the bug table. 
    ' This example uses the BugFactory, but this can 
    ' be done with any class that implements IBaseFactory 
        'tdc is the global TDConnection object. 
        Set BugFact = tdc.BugFactory 
        Set fieldList = BugFact.Fields 
    
    '------------------------------------------ 
    ' Use List.Count to check how many items. 
        Debug.Print: Debug.Print 
        Debug.Print "There are " & fieldList.Count & _
            " fields in this table." 
        Debug.Print "----------------------------------" 
    'Get any bug. To look at field attributes we 
    ' need a valid object and since this example is 
    ' not interested in the particular values of the object, 
    ' it doesn't matter which bug. 
        Set BugList = BugFact.NewList("") 
        Set aBug = BugList(0) 
    
    'Walk through the list 
        For Each aField In fieldList 
    
            With aField 
            'Quit when we have enough for this example 
            If InStr(aField.Name, "BG_USER_10") > 0 Then Exit For 
    
            ' For the DataTypeString() code, 
            ' see example "Convert data types to string" 
            Debug.Print .Name & ", " & .Property & ", Data type is " _
                & DataTypeString(.Type) 
            On Error Resume Next 
    '---------------------------------------------------- 
    'Use TDField.IsValidValue to confirm that a value can 
    'be used for a field. 
    ' Get the correct data type and check validity of an 
    ' arbitrary value. 
    ' Save the error code immediately after IsValidValue call 
    ' before another call can change the err object. 
            dataType = aField.Type 
            Select Case dataType 
                Case TDOLE_LONG, TDOLE_ULONG 
                    aField.IsValidValue 5, aBug 
                    ErrCode = err.Number 
                Case TDOLE_FLOAT 
                    aField.IsValidValue 5.5, aBug 
                    ErrCode = err.Number 
                Case TDOLE_STRING 
                    aField.IsValidValue "Joe", aBug 
                    ErrCode = err.Number 
                Case Else 
                'These will be errors: 
                    aField.IsValidValue _
                        "String to non-string value", aBug 
                    ErrCode = err.Number 
    
            End Select 
    
    'Output an error code message 
            If ErrCode = 0 Then 'S_OK 
                msg = "Valid Value" 
                okCnt = okCnt + 1 
            Else 
                 rc = ErrCode - vbObjectError 
                 Select Case rc 
                    Case FIELD_E_VERIFIED 
                        msg = "Error: Invalid value for field" 
                        errorCnt = errorCnt + 1 
                    Case TDOLE_NONODE 
                        msg = "Error: Field can not be set to this value" 
                        noNodeCnt = noNodeCnt + 1 
                    Case Else 
                        msg = "Unrecognized error: " & rc _
                            & " , HRESULT = " & ErrCode 
                        unknownCnt = unknownCnt + 1 
                End Select 
            End If 
            Debug.Print vbTab & msg 
            ' 
            End With 'aField 
        Next aField 
    
        Debug.Print "----------------------------------" 
        Debug.Print "Number of fields with valid value = " & okCnt 
        Debug.Print "Number of fields with invalid type = " & errorCnt 
        Debug.Print "Number of fields with invalid value= " & noNodeCnt 
        Debug.Print "Number of fields with unknown error = " & unknownCnt 
        Debug.Print "----------------------------------" 
    End Sub 
    

    【讨论】:

      【解决方案2】:

      您可以通过从“自定义”对象中查找列表来完成此操作。以下是我使用 ruby​​ 的方法:

      qc = WIN32OLE.new('TDApiOle80.TDConnection')        
      qcserver = 'http://testdirector/qcbin/'
      qc.InitConnectionEx(qcserver)                      
      qc.Login($username, $password)                       
      qc.Connect("$domain", "$project")                  
      customization = @qc.Customization
      list = custom.Lists.List("NextAction")
      node = list.RootNode
      children = node.Children
      children.each do |child| 
        puts "#{child.Name} \n"
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-25
        • 1970-01-01
        • 1970-01-01
        • 2015-09-21
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多