2010-04-13 14 views
7

के साथ एचपी गुणवत्ता केंद्र स्वचालित करना हमारे पास एक परियोजना है जो एचपी गुणवत्ता केंद्र का उपयोग करती है और हमारे सामने आने वाले नियमित मुद्दों में से एक है कि लोग दोष पर टिप्पणियां अपडेट नहीं कर रहे हैं।पायथन या जावा

तो मैं सोच रहा था कि हम एक छोटी सी स्क्रिप्ट या टूल के साथ आ सकते हैं जिसका उपयोग समय-समय पर अनुस्मारक को फेंकने और उपयोगकर्ता को टिप्पणियों को अपडेट करने के लिए मजबूर करने के लिए किया जा सकता है।

मैं ओपन टेस्ट आर्किटेक्चर एपीआई में आया और यह सोच रहा था कि क्या कोई अच्छा पायथन या जावा उदाहरण हैं जो मैं देख सकता हूं।

धन्यवाद हरि

उत्तर

5

मैं क्योंकि ओटीए सीधे जावा से भस्म नहीं किया जा सकता, सुनिश्चित करें कि जावा के लिए किसी भी अच्छे नमूने देखते हैं नहीं कर रहा हूँ, यह JIntegra तरह कॉम bridnge करने के लिए एक जावा की जरूरत है।

पायथन के बारे में, अच्छी तरह से आप Python COM api का उपयोग कर सकते हैं। और फिर कोई ओटीए उदाहरण करेगा। ओटीए के क्यूसी दस्तावेज में आपको बहुत कुछ मिला।

लेकिन मुझे लगता है कि असली सवाल यह है कि आप इसे पायथन या जावा में क्यों करना चाहते हैं। वर्कफ़्लो सुविधा का उपयोग करके क्यूसी में आपको सीधे क्या लिखना चाहिए, उसे क्यों न लिखें। जो आपको वीबीस्क्रिप्ट में अपना तर्क लिखने की अनुमति देगा, और इसे उपयोगकर्ता क्रियाओं पर क्यूसी यूआई के अंदर शामिल किया जाएगा। उदाहरण के लिए आप किसी दोष/बग की पोस्ट इवेंट से जुड़ सकते हैं और जांच कर सकते हैं कि कोई टिप्पणी है या नहीं और उपयोगकर्ता को सीधे संदेश के साथ संकेत नहीं दिया जाता है।

+0

धन्यवाद, वीबीस्क्रिप्ट विकल्प को आजमाएं और देखें कि यह कैसा चल रहा है। – Hari

0

आप एक नया टेस्ट और चयन प्रकार (VPXP_API) का उपयोग कर सकते हैं जो स्क्रिप्ट को चलाने की अनुमति देता है। अच्छी बात यह है कि आपके पास डॉक पर भरोसा करने के बजाय क्यूसी के भीतर से फंक्शन परिभाषा तैयार की जाएगी। मैंने पाइथन में कुछ एपीआई का उपयोग कर क्यूसी के भीतर से कुछ स्क्रिप्ट चलाया है, लेकिन एक क्यूसी परीक्षण के माध्यम से जो सीधे परिणाम (आउटपुट) आदि को पुनः प्राप्त करने के लिए आसान है .. कुछ खोल कमांड के माध्यम से जा रहा है जो किसी भी स्क्रिप्ट को कॉल कर सकता है किसी भी सर्वर आदि ...

+0

मुझे वीपीएक्सपी_एपीआई (VAPI_XP_TEST मुझे लगता है?) का उपयोग करने के तरीके के बारे में अधिक जानकारी चाहिए। मैंने पाइथन और सी # के साथ ओटीएक्लिएंट का उपयोग किया है, लेकिन क्यूसी से लॉन्च करने के लिए मेरे परीक्षण (उदाहरण के लिए सेलेनियम) प्राप्त करना अभी भी मुझे बढ़ाता है। – fijiaaron

12

अजगर का उपयोग कर का उदाहरण (win32com) ओटीए

के माध्यम से हिमाचल प्रदेश गुणवत्ता केंद्र से कनेक्ट करने के

हिमाचल प्रदेश गुणवत्ता केंद्र को उजागर करता एक कॉम आधारित एपीआई ओटीए कहा जाता है। इस पर

प्रलेखन एक QC सर्वर (OTA_API_Reference.chm) से डाउनलोड है

प्रलेखन VBScript (QC के लिए आधिकारिक तौर पर समर्थित आंतरिक भाषा) का उपयोग करता है (अजीब तरह से यह ऑनलाइन खोजने के लिए बहुत कठिन है) और आप करेंगे मानसिक रूप से पायथन में अनुवाद करने की आवश्यकता है। यह आमतौर पर बहुत ही सरल है, लेकिन कुछ गॉचेस मौजूद हैं।

आपको अपनी मशीन पर गुणवत्ता केंद्र स्थानीय कोड स्थापित करने की आवश्यकता होगी, यह आपके विंडोज पीसी पर है यदि आप वेब इंटरफ़ेस के माध्यम से क्यूसी प्राप्त करने में सक्षम हैं।

आपको सर्वर के यूआरएल और यूजरनेम और पासवर्ड और क्यूसी प्रोजेक्ट के डोमेन डोमेन पर भी जाना होगा।

from win32com.client import Dispatch 

conn = get_QCConnection() 

for bug in get_bugs(qcConn): 
    print bug.Title 

put_QCConnection(conn) 

#below code needs to be in seperate module or at least above the fold but here 
# for clarity 

def get_QCConnection(): 
    '''Get the hardcoded connection to the server and domain. 
    Can be made a "real" engine if you try hard. 
    Use makepy utility to determine if the version number has changed (TDApiOle80) 
    but this works to current version''' 

    QCConnection = Dispatch("TDApiOle80.TDConnection") 
    url = "http://qc.example.com/qcbin" 
    QCConnection.InitConnectionEx(url) 
    QCConnection.login("USER", "PASS") 
    QCConnection.Connect("google_projects", "Google_Chrome")  
    return QCConnection 

def put_QCConnection(qcConn): 
    #If one person logged in to QC changes *anything* on a bug, 
    # they hold a global lock on writing to that bug till 
    # thier session times out, so really really remember to logout 
    # its painful to wait for your own session to time out 

    qcConn.Logout() 

def get_bugs(qcConn): 
    '''just following boiler plate from vbscript 
    PS the SetFilter is not in QTA API, it uses Filter. 
    But due to the workarounds in 
    the very brilliant pythoncom code it supplies a virtual wrapper class 
    called SetFilter - this is one of those gotchas ''' 

    BugFactory = qcConn.BugFactory 
    BugFilter = BugFactory.Filter 

    BugFilter.SetFilter(u"Status", "New") 
    #NB - a lot of fields in QC are malleable - and vary from site to site. 
    #COntact your admins for a real list of fields you can adjust 
    buglist = BugFilter.NewList() 
    return buglist  

यह, आगे जाने के लिए एक बुरा आधार नहीं है लेकिन मैं दोष के लिए एक डमी वर्ग बना सकते हैं और की तरह कुछ चलाएँ:

dfcts = [defect(b) for b in buglist] 

तो मैं दोष वर्ग में कार्यकर्ता कोड डाल दिया और बातें neater रख सकते । एक चीज जो आप करना चाहते हैं वह पाइथन रैपर वर्ग में कच्चे क्यूसी बग आंतरिक तक पहुंच रखती है।

+0

हाय और उत्तर के लिए धन्यवाद। यह एक महान प्रारंभिक बिंदु है! हालांकि मैं जानना चाहता हूं कि इस इंटरफ़ेस के लिए कोई संदर्भ (दस्तावेज़ीकरण) है या नहीं? –

6

अन्य लोगों के लिए जानकारी जो इस धागे को देख सकते हैं।

यह सब आप को स्थापित करने की आवश्यकता होगी pywin32 प्रारंभ करने के लिए की तरह यहां से http://sourceforge.net/projects/pywin32/files/pywin32/Build216/

सब आप pywin32 आयात करने के लिए की आवश्यकता होगी सबसे पहले

'''@author: www.qcintegration.com @mailto:[email protected]''' 
import pywintypes 
import win32com.client as w32c 
from win32com.client import gencache, DispatchWithEvents, constants 

फिर दूसरे ऑपरेशन के रूप में मैं यहाँ करने के लिए प्रवेश पर कार्रवाई शामिल सर्वर सभी विधि के

def connect_server(qc, server): 
     '''Connect to QC server 
     input = str(http adress) 
     output = bool(connected) TRUE/FALSE ''' 
     try: 
      qc.InitConnectionEx(server); 
     except: 
      text = "Unable connect to Quality Center database: '%s'"%(server); 
     return qc.Connected; 

def connect_login(qc, username, password): 
    '''Login to QC server 
    input = str(UserName), str(Password) 
    output = bool(Logged) TRUE/FALSE ''' 
    try: 
     qc.Login(username, password); 
    except pywintypes.com_error, err: 
     text = unicode(err[2][2]); 
    return qc.LoggedIn; 

def connect_project(qc, domainname, projectname): 
    '''Connect to Project in QC server 
    input = str(DomainName), str(ProjectName) 
    output = bool(ProjectConnected) TRUE/FALSE ''' 

    try: 
     qc.Connect(domainname, projectname) 
    except pywintypes.com_error, err: 
     text = "Repository of project '%s' in domain '%s' doesn't exist or is not accessible. Please contact your Site Administrator"%(projectname, domainname); 
    return qc.ProjectConnected; 

दूसरा जो OTAapi DLL

012,351 फाइल शामिल होंगे
def qc_instance(): 
     '''Create QualityServer instance under variable qc 
     input = None 
     output = bool(True/False)''' 
     qc= None; 
     try: 
      qc = w32c.Dispatch("TDApiole80.TDConnection"); 
      text = "DLL QualityCenter file correctly Dispatched" 
      return True, qc; 
     except: 
      return False, qc; 

तब मुख्य विधि QCserver को

def qcConnect(server, username, password, domainname, projectname): 
    print("Getting QC running files"); 

    status, qc = qc_instance(); 
    if status: 
     print("Connecting to QC server"); 
     if connect_server(qc, server): 
      ##connected to server 
      print("Checking username and password"); 
      if connect_login(qc, username, password): 
       print("Connecting to QC domain and project"); 
       if connect_project(qc, domainname, projectname): 
        text = "Connected" 
        connected = True; 
        return connected, text; 
       else: 
        text = "Not connected to Project in QC server.\nPlease, correct DomainName and/or ProjectName"; 
        connected = False; 
        return connected, text; 
      else: 
       text = "Not logged to QC server.\nPlease, correct UserName and/or Password"; 
       connected = False; 
       return connected, text; 
     else: 
      text = "Not connected to QC server.\nPlease, correct server http address"; 
      connected = False; 
      return connected, text; 
    else: 
     connected = False; 
     text = "Unable to find QualityCenter installation files.\nPlease connect first to QualityCenter by web page to install needed files" 
     return connected, text; 

कनेक्ट करने के लिए और अंत में कैसे उपयोग

if __name__ == "__main__": 
    server= r"http://qualitycenterServer:8080/qcbin" 
    username= "alex_qc" 
    password= "" 
    domainname= "DEFAULT" 
    projectname= "QualityCenter_Demo" 

    connection_status, text = qcConnect(server, username, password, domainname, projectname); 
    print "connection_status:", connection_status 

के उदाहरण के साथ एक ही स्थान पर उन तरीकों के सभी निष्पादित करने के लिए किसी भी मामले में अधिक प्रश्न mailto: [email protected] या सीधे वेब पक्ष पर: http://www.qcintegration.com

1

एक REST API to HPQC (ALM11 और नया) है यदि आप इसे विंडोज COM घटक चलाने के बिना लिनक्स से एक्सेस करना चाहते हैं।

यहां एक उदाहरण है जो प्रमाणीकरण के बाद "आवश्यकता" रिकॉर्ड (# 1202) में खींचता है।

import requests 
session = requests.session() 
user='hpqc' 
password='xxxxx' 
r = session.get("http://hpqc-server:8080/qcbin/authentication-point/authenticate",auth=(user,password)) 

r = session.get("http://hpqc-server:8080/qcbin/rest/domains/Foo/projects/Bar/requirements/1202") 
print(r.text) 

एक्सएमएल से r.text की पार्स एक व्यायाम के रूप में छोड़ दिया जाता है।

1

हालांकि आपने पाइथन या जावा आधारित समाधान के लिए कहा है, तो निम्नलिखित वीबीए कोड साझा करना जो आप लक्ष्य को पूरा करने के लिए एचपीक्यूसी/एएलएम के स्क्रिप्ट संपादक (दोष मॉड्यूल स्क्रिप्ट) का उपयोग कर सकते हैं।

Function Bug_FieldCanChange(FieldName, NewValue) 

On Error Resume Next 

if not changed then 
strCommentBeforeUpdate = Bug_Fields("BG_DEV_COMMENTS").Value 
end if 

If FieldName = "BG_DEV_COMMENTS" and blnAddCommentClicked = False Then 
    Msgbox "Cannot update the comments." & Chr(13)& "Changes made will not be saved."&Chr(13)& "Please use 'Add comment' button to insert new comment." &Chr(13)& " Or click Cancel without saving." 
    blnUpdateCommentError = true 
    blnAddCommentClicked = False 
    changed = true 
    End If 
Bug_FieldCanChange = DefaultRes 

End Function 
संबंधित मुद्दे