Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
setup(
name='testrail',
packages=['testrail'],
version='0.3.13',
version='0.5.0',
description='Python library for interacting with TestRail via REST APIs.',
author='Travis Pavek',
author_email='travis.pavek@gmail.com',
Expand All @@ -40,5 +40,6 @@
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
)
17 changes: 11 additions & 6 deletions testrail/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import yaml
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
from retry import retry

from testrail.helper import TestRailError, TooManyRequestsError, ServiceUnavailableError
Expand Down Expand Up @@ -107,10 +108,10 @@ class API(object):
'_timeout': 30,
'_project_id': None}

def __init__(self, email=None, key=None, url=None):
def __init__(self, email=None, key=None, url=None, verify_ssl=True, proxies=None):
self.__dict__ = self._shared_state
if email is not None and key is not None and url is not None:
config = dict(email=email, key=key, url=url)
config = dict(email=email, key=key, url=url, verify_ssl=verify_ssl, proxies=proxies)
self._config = config
elif self._config is not None:
config = self._config
Expand All @@ -119,8 +120,14 @@ def __init__(self, email=None, key=None, url=None):

self._auth = (config['email'], config['key'])
self._url = config['url']
self._session = requests.Session()
self._session.headers.update({'Content-Type': 'application/json'})
self._session.auth=self._auth
self.headers = {'Content-Type': 'application/json'}
self.verify_ssl = config.get('verify_ssl', True)
self.proxies = config.get('proxies', None)
if not self.verify_ssl:
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

def _conf(self):
TR_EMAIL = 'TESTRAIL_USER_EMAIL'
Expand Down Expand Up @@ -627,8 +634,7 @@ def configs(self):
@retry((TooManyRequestsError, ValueError), tries=3, delay=1, backoff=2)
def _get(self, uri, params=None):
uri = '/index.php?/api/v2/%s' % uri
r = requests.get(self._url+uri, params=params, auth=self._auth,
headers=self.headers, verify=self.verify_ssl)
r = self._session.get(self._url+uri, params=params,verify=self.verify_ssl, proxies=self.proxies)

self._raise_on_429_or_503_status(r)

Expand All @@ -651,8 +657,7 @@ def _get(self, uri, params=None):
@retry(TooManyRequestsError, tries=3, delay=1, backoff=2)
def _post(self, uri, data={}):
uri = '/index.php?/api/v2/%s' % uri
r = requests.post(self._url+uri, json=data, auth=self._auth,
verify=self.verify_ssl)
r = self._session.post(self._url+uri, json=data, verify=self.verify_ssl, proxies=self.proxies)

self._raise_on_429_or_503_status(r)

Expand Down
8 changes: 6 additions & 2 deletions testrail/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
unicode = str

class TestRail(object):
def __init__(self, project_id=0, email=None, key=None, url=None):
self.api = API(email=email, key=key, url=url)
def __init__(self, project_id=0, email=None, key=None, url=None, verify_ssl=True, proxies=None):
self.api = API(email=email, key=key, url=url, verify_ssl=verify_ssl, proxies=proxies)
self.api.set_project_id(project_id)
self._project_id = project_id

Expand Down Expand Up @@ -331,6 +331,10 @@ def _results_for_test(self, test):
@methdispatch
def result(self):
return Result()

@result.register(dict)
def _result_for_dict(self, content):
return Result(content)

@add.register(Result)
def _add_result(self, obj):
Expand Down