Skip to content

Commit

Permalink
[qatl] added method name 'tl.getTestCaseIDByName'
Browse files Browse the repository at this point in the history
  • Loading branch information
crypto netzulo committed Mar 18, 2018
1 parent a8f67f5 commit 9979af1
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.rst
Expand Up @@ -230,3 +230,9 @@ Usage ( *XMLRPC* )

* **XMLRPC**: *call to method named* '*tl.getTestCase*'
* **Description** : get test case filtered by id or external id

**api_tcase_by_name**
+++++++++++++++++++++++

* **XMLRPC**: *call to method named* '*tl.getTestCaseIDByName*'
* **Description** : get test case filtered by name
1 change: 1 addition & 0 deletions qatestlink/configs/settings.json
Expand Up @@ -19,6 +19,7 @@
"tplan_id" : 2,
"tcase_id" : 8,
"tcase_full_external_id": "qalab-1",
"tcase_name": "tox -e py27",
"tsuite_id": 3,
"tsuite_name": "qacode",
"build_id_one": 1,
Expand Down
14 changes: 14 additions & 0 deletions qatestlink/core/testlink_manager.py
Expand Up @@ -412,3 +412,17 @@ def api_tcase(self, tcase_id=None, external_id=None, dev_key=None):
properties = res_param.get(
'array')['data']['value']['struct']['member']
return TCase(properties)

def api_tcase_by_name(self, tcase_name, dev_key=None):
"""TODO: doc"""
if dev_key is None:
dev_key = self._settings.get('dev_key')
req_data = self._xml_manager.req_tcase_by_name(
dev_key, tcase_name)
res = self._conn.post(self._xml_manager.headers, req_data)
res_dict = self._xml_manager.parse_response(res)
res_param = res_dict.get(
'methodResponse')['params']['param']['value']
properties = res_param.get(
'array')['data']['value']['struct']['member']
return TCase(properties)
34 changes: 34 additions & 0 deletions qatestlink/core/xmls/xmlrpc_manager.py
Expand Up @@ -590,3 +590,37 @@ def req_tcase_by_id_or_external(self, dev_key,
xml = dicttoxml(
self.req_dict, custom_root='methodCall', attr_type=False)
return xml

def req_tcase_by_name(self, dev_key, tcase_name):
"""Obtains one test case created on remote testlink database, can
filter by test case name (str)
Arguments:
dev_key {str} -- string of developer key provided by Testlink
(default: {value obtained from JSON settings file})
tcase_name {str} -- NAME of Testlink Test Case data
Raises:
Exception -- Bad params
Returns:
str -- string xml object ready to use on API call
"""
if not tcase_name:
raise Exception("Can't call XMLRPC without param, tcase_name")
self.req_dict.update({
"methodName": RouteType.TCASE_ID_BY_NAME.value
})
self.req_dict.update({
"params": {
"struct": {
"member": [
{"name": "devKey", "value": dev_key},
{"name": "testcasename", "value": tcase_name}
]
}
}
})
xml = dicttoxml(
self.req_dict, custom_root='methodCall', attr_type=False)
return xml
9 changes: 9 additions & 0 deletions tests/unitaries/suite_002_methods.py
Expand Up @@ -193,6 +193,15 @@ def test_015_method_tcase_byexternalid(self):
self.assertEquals(
tcase.external_id, DATA['tcase_full_external_id'])

@skipIf(SKIP, SKIP_MESSAGE)
def test_016_method_tcase_byname(self):
"""TODO: doc method"""
tcase = self.testlink_manager.api_tcase_by_name(
DATA['tcase_name'])
self.assertIsInstance(tcase, TCase)
self.assertEquals(
tcase.name, DATA['tcase_name'])


class TestMethodsRaises(TestCase):
"""Test suite for tests methods
Expand Down

0 comments on commit 9979af1

Please sign in to comment.