为什么这没有创建JIRA问题?
from jira.client import JIRA
import requests
import jira.exceptions
import json
import re
class MyJira(JIRA):
def _create_http_basic_session(self, username, password):
url = self._options['server'] + '/rest/auth/1/session'
payload = {
'username': username,
'password': password
}
verify = False
self._session = requests.session(verify=verify,
hooks={'args': self._add_content_type})
r = self._session.post(url, data=json.dumps(payload))
jira.exceptions.raise_on_error(r)
options = {'server':'http://localhost:8080',
'verify': False}
username = 'usrName'
password = 'passWord'
basic_auth =(username,password)
jira = MyJira(options, basic_auth)
issue_dict = {
'project':{'key':'PROJKEY'},
'summary': 'New Issue from jira-python',
'description': 'Test Description for new issue created from jira-python',
'issueType': {'name': 'Bug'}}
new_issue = jira.create_issue(fields=issue_dict,preftech=True)
print new_issue.id
这让我产生了这个错误的堆栈跟踪/日志
/home/ve/bin/python/home/PycharmProjects/RestJira/restjira.py
Traceback (most recent call last):
File "/home/PycharmProjects/RestJira/myrestjira.py", line 81, in <module>
new_issue = jira.create_issue(fields=issue_dict,preftech=True)
File "/home/ve/lib/python2.6/site-packages/jira/client.py", line 369, in create_issue
raise_on_error(r)
File "/home/ve/lib/python2.6/site-packages/jira/exceptions.py", line 29, in raise_on_error
error = errorMessages[0]
IndexError: list index out of range
我哪里做错了?我不明白为什么会提到一个我当前正在使用的文件以外的另一个文件(restjira.py),我现在在用的是(myrestjira.py)。我使用的是Python 2.7,jira-python库,requests 0.14.1,jira-python 0.12,以及PyCharm作为开发环境。有人能帮忙吗?
2 个回答
1
你的问题出在这两行代码上:
r = self._session.post(url, data=json.dumps(payload))
jira.exceptions.raise_on_error(r)
你对 self._session.post
的回应是一个错误,但收到的错误信息似乎也有问题。这引出了几个问题。
- 你能确认你的 Jira 服务器在
localhost:8080
上正常运行吗? - 如果你执行
pprint(r)
会发生什么? - 用户名和密码正确吗?
self._session.verify
是不是设置为False
?
至于为什么会调用 restjira.py
,这可能是加载了这个模块的模块。
还有一些其他的想法:
- 除非你把
import jira.exceptions
改成类似import jira.exceptions as jiraexceptions
,否则不应该把你的变量命名为jira
。这样可以让代码更容易阅读。 verify = False... verify=verify
有点多余。为什么不直接把False
放在参数里呢?
6
试试这个,这个有效...
from jira.client import JIRA
jira_options={'server': 'http://jira-address'}
jira=JIRA(options=jira_options,basic_auth=('user','password'))
#Creating an issue:
new_issue = jira.create_issue(project={'key': 'key'}, summary='New issue from jira- python', description='Look into this one', issuetype={'name': 'Bug'})
# or creating issues using dict:
issue_dict = {
'project': {'key': 'PROJ'},
'summary': 'New issue from jira-python',
'description': 'Look into this one',
'issuetype': {'name': 'Bug'},
}
new_issue = jira.create_issue(fields=issue_dict)