2015-11-24 59 views
1

用下面的代码,我想在hp alm 11.52中创建一个新的缺陷。HP ALM新缺陷500

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() 

登录和注销工作正常,但函数create_defect()中的requests.post是问题。每次我执行的代码,它会引发以下500错误:

<QCRestException> 
<Id>qccore.entity-not-found</Id> 
<Title>No entity of type defect with id 703 exists.</Title> 
<ExceptionProperties/> 
<StackTrace> 

的XML是正确的(每个需要提交包含),以及网址了。我也试过Json。

此外,我尝试在高级休息客户端的Chrome相同的过程,但它仍然抛出相同的错误。是否有人知道获取后获取请求的顺序是否正确?

QC登录后,执行:

at org.hp.qc.impl.services.ReadServiceImpl.read(ReadServiceImpl.java:68) 
at org.hp.qc.web.restapi.entities.AbstractBaseResource.readEntity(AbstractBaseResource.java:325) 
at org.hp.qc.web.restapi.entities.AbstractBaseResource.performPOSTEntity(AbstractBaseResource.java:169) 
at org.hp.qc.web.restapi.entities.FirstLevelResource.create(FirstLevelResource.java:144) 
at sun.reflect.GeneratedMethodAccessor296.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.wink.server.internal.handlers.InvokeMethodHandler.handleRequest(InvokeMethodHandler.java:51) 
at org.apache.wink.server.handlers.AbstractHandler.handleRequest(AbstractHandler.java:33) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.hp.qc.web.restapi.cache.CacheRequestHandler.handleRequest(CacheRequestHandler.java:46) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.CreateInvocationParametersHandler.handleRequest(CreateInvocationParametersHandler.java:54) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleResourceMethod(FindResourceMethodHandler.java:151) 
at org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:65) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:93) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.HeadMethodHandler.handleRequest(HeadMethodHandler.java:53) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.OptionsMethodHandler.handleRequest(OptionsMethodHandler.java:46) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.internal.handlers.SearchResultHandler.handleRequest(SearchResultHandler.java:33) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26) 
at org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22) 
at org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:61) 
at org.apache.wink.server.handlers.AbstractHandlersChain.run(AbstractHandlersChain.java:48) 
at org.apache.wink.server.internal.RequestProcessor.handleRequestWithoutFaultBarrier(RequestProcessor.java:163) 
at org.apache.wink.server.internal.RequestProcessor.handleRequest(RequestProcessor.java:137) 
at org.apache.wink.server.internal.servlet.RestServlet.service(RestServlet.java:116) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359) 
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:77) 
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:181) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
at org.hp.qc.web.restapi.filters.RESTApiFilter.doFilter(RESTApiFilter.java:128) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
at org.hp.qc.web.restapi.performance.PerformanceMonitorRESTFilter.doFilter(PerformanceMonitorRESTFilter.java:45) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) 
at com.hp.sw.bto.ast.security.lwsso.authenticator.springSecurity.SpringSecurity2LWSSOIntegrationFilter.doFilter(SpringSecurity2LWSSOIntegrationFilter.java:182) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at org.hp.qc.web.restapi.sessionmanagement.ImplicitSessionFilter.doFilter(ImplicitSessionFilter.java:76) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at com.hp.sw.bto.ast.security.lwsso.authenticator.springSecurity.LWSSO2SpringSecurityIntegrationFilter.doFilter(LWSSO2SpringSecurityIntegrationFilter.java:299) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) 
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) 
at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 
at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) 
at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) 
at org.hp.qc.web.restapi.authentication.FilterChainProxyWrapper.doFilter(FilterChainProxyWrapper.java:80) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
at com.mercury.optane.core.state.ServerStatusFilter.doFilter(ServerStatusFilter.java:35) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) 
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) 
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:312) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) 
at org.eclipse.jetty.server.Server.handle(Server.java:345) 
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) 
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224) 
at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:50) 
at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:245) 
at org.eclipse.jetty.server.ssl.SslSocketConnector$SslConnectorEndPoint.run(SslSocketConnector.java:663) 
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598) 
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533) 
at java.lang.Thread.run(Thread.java:662) 
+0

可否请您在执行此代码后检查并发布qc日志。你将能够得到一些提示。 – Gaurav

+0

我添加了qc日志,但是我没有得到它的提示... – kgkrae

+0

您必须提供用于创建缺陷的完整xml/json。那里可能有问题。此外:在Chrome中,您可以在一个标签中尝试此网址进行身份验证:http://176.31.122.172:8888/qcbin/rest/is-authenticated?login-form-required=y填写完凭证后,您将能够在另一个选项卡中使用“高级休息客户端”附件发送REST呼叫,而无需再次打扰验证请求。 – GlennV

回答

0

那么,为什么你不能创建一个新的缺陷的主要原因是企图已经创建一个ID#703存在缺陷。

很可能你可以通过ticket_data_xml那么不正确的信息,包括带有ID的标签。这只是我的假设,因为你没有给出具体的data_xml的例子。

看看到我data_xml,我成功地应用于ALM 11.52的空白项目,默认定制的例子:

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> 

您可以使用此XML作为例子,并修改了它关于必填字段等