0

我正在尝试使用 Python 上的 Xray API 执行黄瓜测试的导入,更具体地说,我正在尝试在 Python 端翻译这个 curl(它是一个多部分形式):

curl -u usr:pass -F info=@$xrayResultFilePath -F result=@$pathToCucumberJson $jiraUrl/rest/raven/1.0/import/execution/cucumber/multipart

我尝试了许多不同的方式,我坚持的 python 代码看起来像这样:

response = requests.post(
    atc_xray_url,
    auth=(creds.username, creds.password),
    files={"info": open("cucumber.result.json", "rb"),
            "result": open("xray_result.json", "rb")},
)
response.raise_for_status()

我还尝试更改标签,将它们添加到我在互联网上找到的元组中,在此处找到解决方案,但每次收到此错误时都没有结果:

<status><status-code>404</status-code><message>null for uri:

curl 工作正常,但 Python 代码不工作。我可以使用 subprocess 库,但这应该是一个多平台解决方案,所以如果这可以用 Python 中的东西来完成,那就太好了。

4

1 回答 1

0

我前段时间提供的这个存储库提供了几个代码片段,其中一个正是针对该用例的。您的代码与以下代码类似;如果您的 Jira DC 版本 >= 8.14,您可以使用基本身份验证或个人身份验证令牌。鉴于您获得的结果代码,问题可能出在您使用的 URL 上,不清楚它是否与您在 curl 上的相同。请注意,您也可以使用端点的 v2,如我前面所示。

import requests
import json

jira_base_url = "http://192.168.56.102"
jira_username = "admin"
jira_password = "admin"
personal_access_token = "OTE0ODc2NDE2NTgxOnrhigwOreFoyNIA9lXTZaOcgbNY"

...

files = {
        'result': ('cucumber.json', open(r'cucumber.json', 'rb')),
        'info': ('info.json', json.dumps(info_json) )
        }

# importing results using HTTP basic authentication
# response = requests.post(f'{jira_base_url}/rest/raven/2.0/import/execution/cucumber/multipart', params=params, files=files, auth=(jira_username, jira_password))

# importing results using Personal Access Tokens 
headers = {'Authorization': 'Bearer ' + personal_access_token}
response = requests.post(f'{jira_base_url}/rest/raven/2.0/import/execution/cucumber/multipart', files=files, headers=headers)
于 2022-03-05T08:44:29.513 回答