Python HP ALM新缺陷500

Python HP ALM新缺陷500,python,rest,post,alm,hp-quality-center,Python,Rest,Post,Alm,Hp Quality Center,通过以下代码,我想在hp alm 11.52中创建一个新缺陷 import requests import sys import json def login_alm(alm_url, login_list, header): # GET request @ ALM URL r = requests.get(alm_url + u'authentication-point/authenticate', auth = login_list) if r.status_co

通过以下代码,我想在hp alm 11.52中创建一个新缺陷

import requests
import sys
import json

def login_alm(alm_url, login_list, header):
    # GET request @ ALM URL
    r = requests.get(alm_url + u'authentication-point/authenticate', auth = login_list)

    if r.status_code == 200:
        print 'Login successful'
        header['Cookie'] = r.headers['set-cookie']
    else:
        print'Login Failed'
        sys.exit(0)
    return header

def logout_alm(alm_url, login_list, header):
    if header['Cookie'] is not None:
        r = requests.get(alm_url + u'authentication-point/logout', headers=header, auth=login_list)
        if r.status_code == 200:
            print 'Logout successful'
        else:
            print 'Logout not successful'
    else:
        print 'Logging Error: header = None'
        return 1

def create_defect(alm_url, header, alm_domain, alm_project, daten_xml, login_list):
    if header['Cookie'] is not None:
        print header
        r = requests.post(alm_url + u'rest/domains/' + alm_domain + u'/projects/' + alm_project + u'/defects',
                          headers=header,
                          data=daten_xml)


def main():
    url = u'https://{.......}'
    login = (u'{...}', u'{...}')
    domain = u'{...}'
    project = u'{...}'
    headers = {"Accept":"application/xml",
              "Content-Type":"application/xml",
              "Cookie": None}

    ticket_data_xml = ''' <Entity Type="defect">
                            <Fields>
                                <Field Name="{...}"><Value>{...}</Value></Field>
                                <Field Name="{...}"><Value>{...}</Value></Field>
                                <Field Name="{...}"><Value>{...}</Value></Field>
                                <Field Name="{...}"><Value>{...}</Value></Field>
                                <Field Name="{...}"><Value>{...}</Value></Field>
                            </Fields>
                        </Entity>'''


    headers = login_alm(alm_url=url, login_list=login, header=headers)

    create_defect(alm_url=url, header=headers, alm_domain=domain, alm_project=project, daten_xml=ticket_data_xml, login_list=login)

    logout_alm(alm_url=url, login_list=login, header=headers)

if __name__ == '__main__':
    main()

因此,无法创建新缺陷的主要原因是试图创建id为#703的现有缺陷

最有可能的情况是,您可能无法正确地传递票证数据xml信息,包括带有exist ID的标记。这只是我的假设,因为您没有给出具体数据xml的示例

请看我在ALM 11.52上成功使用的带有默认自定义的空项目上的data_xml示例:

Url:
 http://{your_server:your_port}/qcbin/rest/domains/{your_domain}/projects/{your_project}/defects
Headers:
 Content-Type=application/xml
 Accept= application/xml
Data_xml:

 <Entity Type="defect">
 <Fields>
   <Field Name="severity">
     <Value>1-Low</Value>
   </Field>
   <Field Name="name">
     <Value>Defect3</Value>
   </Field>
   <Field Name="detected-by">
     <Value>sa</Value>
   </Field>
   <Field Name="creation-time">
     <Value>2016-08-16</Value>
   </Field>
 </Fields>
 </Entity>
Url:
http://{your_server:your_port}/qcbin/rest/domains/{your_domain}/projects/{your_project}/defects
标题:
内容类型=应用程序/xml
Accept=application/xml
数据xml:
1-低
缺陷3
sa
2016-08-16

您可以使用此xml作为示例,并针对必填字段等对其进行修改。

因此,无法创建新缺陷的主要原因是试图创建id为703的现有缺陷

最有可能的情况是,您可能无法正确地传递票证数据xml信息,包括带有exist ID的标记。这只是我的假设,因为您没有给出具体数据xml的示例

请看我在ALM 11.52上成功使用的带有默认自定义的空项目上的data_xml示例:

Url:
 http://{your_server:your_port}/qcbin/rest/domains/{your_domain}/projects/{your_project}/defects
Headers:
 Content-Type=application/xml
 Accept= application/xml
Data_xml:

 <Entity Type="defect">
 <Fields>
   <Field Name="severity">
     <Value>1-Low</Value>
   </Field>
   <Field Name="name">
     <Value>Defect3</Value>
   </Field>
   <Field Name="detected-by">
     <Value>sa</Value>
   </Field>
   <Field Name="creation-time">
     <Value>2016-08-16</Value>
   </Field>
 </Fields>
 </Entity>
Url:
http://{your_server:your_port}/qcbin/rest/domains/{your_domain}/projects/{your_project}/defects
标题:
内容类型=应用程序/xml
Accept=application/xml
数据xml:
1-低
缺陷3
sa
2016-08-16

您可以使用此xml作为示例,并针对必填字段等对其进行修改。

执行此代码后,请检查并发布qc日志。你可以从中得到一些提示。我添加了qc日志,但我没有从中得到任何提示…你必须提供用于创建缺陷的完整xml/json。那里可能有问题。另外:在Chrome中,您可以在一个选项卡中尝试此URL进行身份验证:填写凭据后,您将能够使用另一个选项卡中的“Advanced REST Client”插件发送REST调用,而无需再次处理身份验证请求。请在执行此代码后检查并发布qc日志。你可以从中得到一些提示。我添加了qc日志,但我没有从中得到任何提示…你必须提供用于创建缺陷的完整xml/json。那里可能有问题。另外:在Chrome中,您可以在一个选项卡中尝试使用此URL进行身份验证:填写凭据后,您将能够使用另一个选项卡中的“Advanced REST Client”插件发送REST调用,而无需再次处理身份验证请求。
Url:
 http://{your_server:your_port}/qcbin/rest/domains/{your_domain}/projects/{your_project}/defects
Headers:
 Content-Type=application/xml
 Accept= application/xml
Data_xml:

 <Entity Type="defect">
 <Fields>
   <Field Name="severity">
     <Value>1-Low</Value>
   </Field>
   <Field Name="name">
     <Value>Defect3</Value>
   </Field>
   <Field Name="detected-by">
     <Value>sa</Value>
   </Field>
   <Field Name="creation-time">
     <Value>2016-08-16</Value>
   </Field>
 </Fields>
 </Entity>