Skip to content

Commit

Permalink
[qatl] added method named 'tl.getTestPlanPlatforms' + tests (#17)
Browse files Browse the repository at this point in the history
* [qatl] addedmethod 'tl.getTestPlanByName' + tests

* [qatl] added method named 'tl.getTestPlanPlatforms'

* [qatl] added method named 'tl.getTestPlanPlatforms' + tests

* [qatl] merge FIX
  • Loading branch information
netzulo committed Dec 25, 2017
1 parent 27d41ab commit 295ca3d
Show file tree
Hide file tree
Showing 4 changed files with 140 additions and 17 deletions.
52 changes: 43 additions & 9 deletions qatestlink/core/models/tl_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ def __repr__(self):
return "TProject: id={}, name={}, is_public={}".format(
self.id,
self.name,
self.is_public
)

self.is_public)


class TPlan(ModelBase):
Expand Down Expand Up @@ -141,10 +139,7 @@ def __repr__(self):
return "TPlan: id={}, name={}, is_public={}".format(
self.id,
self.name,
self.is_public
)


self.is_public)


class TSuite(ModelBase):
Expand Down Expand Up @@ -193,5 +188,44 @@ def __repr__(self):
return "TSuite: id={}, name={}, parent_id={}".format(
self.id,
self.name,
self.parent_id
)
self.parent_id)


class TPlatform(ModelBase):
"""TODO: doc class"""

_res_members = None

# Testlink object properties
id = None
name = None
notes = None


def __init__(self, res_members):
"""TODO: doc method"""
super(TPlatform, self).__init__()
if res_members is None:
raise Exception('Bad param, res_member can\'t be None')
if len(res_members) <= 0:
raise Exception(
'Bad param, res_member can\'t be empty list')
self._res_members = res_members
self._load()

def _load(self):
for res_member in self._res_members:
name = res_member.name
value = res_member.value
if name == 'id':
self.id = value
if name == 'name':
self.name = value
if name == 'notes':
self.notes = value

def __repr__(self):
return "TPlatform: id={}, name={}, notes={}".format(
self.id,
self.name,
self.notes)
25 changes: 18 additions & 7 deletions qatestlink/core/testlink_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,26 @@ def api_tproject_tsuites_first_level(self, tproject_id, dev_key=None):
res.status_code, res.text, as_models=True)
return res_as_models


def api_tplan(self, tproject_name, tplan_name, dev_key=None):
"""Call to method named 'tl.getTestPlanByName'"""
"""Call to method named 'tl.getTestPlanByName'"""
if dev_key is None:
dev_key = self._settings.get('dev_key')
req_data = self._xml_manager.req_tplan_by_name(
dev_key, tproject_name, tplan_name)
res = self._conn.post(self._xml_manager.headers, req_data)
self._xml_manager.parse_errors(res.text)
res_as_model = self._xml_manager.res_tplan_by_name(
res.status_code, res.text, as_model=True)
return res_as_model

def api_tplan_platforms(self, tplan_id, dev_key=None):
"""Call to method named 'tl.getProjectTestPlans'"""
if dev_key is None:
dev_key = self._settings.get('dev_key')
req_data = self._xml_manager.req_tplan_by_name(
dev_key, tproject_name, tplan_name)
req_data = self._xml_manager.req_tplan_platforms(
dev_key, tplan_id)
res = self._conn.post(self._xml_manager.headers, req_data)
self._xml_manager.parse_errors(res.text)
res_as_model = self._xml_manager.res_tplan_by_name(
res.status_code, res.text, as_model=True)
return res_as_model
res_as_models = self._xml_manager.res_tplan_platforms(
res.status_code, res.text, as_models=True)
return res_as_models
50 changes: 50 additions & 0 deletions qatestlink/core/xmls/xmlrpc_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from qatestlink.core.models.tl_models import TProject
from qatestlink.core.models.tl_models import TPlan
from qatestlink.core.models.tl_models import TSuite
from qatestlink.core.models.tl_models import TPlatform



Expand Down Expand Up @@ -299,3 +300,52 @@ def res_tplan_by_name(self, status_code, res_str, as_model=True):
res_members_list = self._response_handler.get_response_struct_members(
xml_str=res)
return TPlan(res_members_list)

def req_tplan_platforms(self, dev_key, tplan_id):
"""
Obtains all platforms asigned to test plan
created on remote testlink database,
can filter by test plan name
:return:
List of TPlan objects containing all database
data loaded
"""
if tplan_id is None:
raise Exception("Can't call XMLRPC without param, tplan_id")
req = self._request_handler.create(
RouteType.TPLAN_PLATFORMS)
req = self._request_handler.create_param(
req, 'struct', 'devKey', dev_key)
req = self._request_handler.add_param(
req, 'testplanid', tplan_id)
return req

def res_tplan_platforms(self, status_code, res_str, as_models=True):
"""
Parse and validate response for method
named 'tl.getTestPlanPlatforms', by default response list
of TPlatform objects, can response xml string too
:return:
if as_models is True
list of objects instanced with
Model classes
if as_models is False
string xml object ready to
parse/write/find/add Elements on it
"""
if status_code != 200:
raise Exception(
"status_code invalid: code={}".format(
status_code))
res = self._response_handler.create(
RouteType.TPLAN_PLATFORMS, res_str)
if not as_models:
return res
res_members_list = self._response_handler.get_response_members(
xml_str=res)
tplatforms = list()
for res_members in res_members_list:
tplatform = TPlatform(res_members)
tplatforms.append(tplatform)
return tplatforms
30 changes: 29 additions & 1 deletion tests/unitaries/suite_002_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from qatestlink.core.models.tl_models import TProject
from qatestlink.core.models.tl_models import TPlan
from qatestlink.core.models.tl_models import TSuite
from qatestlink.core.models.tl_models import TPlatform


API_DEV_KEY = 'ae2f4839476bea169f7461d74b0ed0ac'
Expand All @@ -19,7 +20,7 @@
"tproject_name": "qacode",
"tproject_id" : 11,
"tplan_name" : "v0.3.8",
"tplan_id" : 84
"tplan_id" : 12
}


Expand Down Expand Up @@ -85,6 +86,18 @@ def test_005_method_tplan(self):
self.assertIsInstance(tplan, TPlan)
self.assertEquals(tplan.name, CONFIG['tplan_name'])

@skipIf(SKIP, 'Test SKIPPED')
def test_006_method_tplan_platforms(self):
"""TODO: doc method"""
platforms = self.testlink_manager.api_tplan_platforms(
CONFIG['tplan_id'])
self.assertIsInstance(platforms, list)
self.assertGreater(len(platforms), 0)
for platform in platforms:
self.testlink_manager.log.debug(repr(platform))
self.assertIsInstance(platform, TPlatform)


class TestMethodsRaises(TestCase):
"""TODO: doc class"""

Expand Down Expand Up @@ -173,3 +186,18 @@ def test_010_raises_tplan_emptytnames(self):
ResponseException,
self.testlink_manager.api_tplan,
'', '')

@skipIf(SKIP, 'Test SKIPPED')
def test_011_raises_tplan_platforms_notname(self):
"""TODO: doc method"""
self.assertRaises(
Exception, self.testlink_manager.api_tproject)

@skipIf(SKIP, 'Test SKIPPED')
def test_012_raises_tplan_platforms_emptyname(self):
"""TODO: doc method"""
self.assertRaises(
ResponseException,
self.testlink_manager.api_tproject,
'')

0 comments on commit 295ca3d

Please sign in to comment.