1
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

私は何が間違っているのですか?現在作業しているファイル(myrestjira.py)以外の別のファイル(restjira.py)への参照がある理由がわかりませんPython 2.7、jira-pythonライブラリ、リクエスト0.14.1、jira-を使用していますpython 0.12とIDEとしてのpycharm誰か?

4

2 に答える 2

1

問題は次の 2 行にあります。

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は、このモジュールをロードしたモジュールである可能性が高いです。


その他の考え:

  • のような名前jiraに変更しない限り、変数に名前を付けないでください。コードが読みやすくなります。import jira.exceptionsimport jira.exceptions as jiraexceptions
  • verify = False... verify=verify少し異質です。Falsekwargsに配置しないのはなぜですか?
于 2013-02-21T04:23:36.647 に答える