""" Testlink API Sample Python Client implementation """ import xmlrpclib class TestlinkAPIClient: # substitute your server URL Here SERVER_URL = "http://localhost/testlink/lib/api/xmlrpc.php" def __init__(self, devKey): self.server = xmlrpclib.Server(self.SERVER_URL) self.devKey = devKey print "devKey in init: %s" %devKey def getTestCaseIDByName(self,devKey): data = {"devKey":devKey, "testcasename":"Test Case 1", "testsuitename":"Test Suite 1"} return self.server.tl.getTestCaseIDByName(data) def reportTCResult(self, tcid, tpid, status): data = {"devKey":self.devKey, "tcid":tcid, "tpid":tpid, "status":status} return self.server.tl.reportTCResult(data) def getInfo(self): return self.server.tl.about() def sayHello (self): return self.server.tl.sayHello() def getProjects (self, devKey): print "DevKey: %s" %devKey data = {"devKey":devKey} return self.server.tl.getProjects(data) if __name__ == '__main__': devKey = "abc04556463cd813a1ea05caf042d42f" # substitute your Dev Key Here client = TestlinkAPIClient (devKey) # get info about the server print client.getInfo() # retval = client.sayHello() #retval = client.getProjects(devKey) retval = client.getTestCaseIDByName(devKey) print 'retval: ', retval
Please note, you will need to generate a devKey for this to work from within your Testlink installation.
Steps to enable Testlink API via xmlrpc and generate dev key:
- Open config.inc.php
- Search for /** XML-RPC API availability (disabled by default) */ $tlCfg->api->enabled = FALSE;
- Change FALSE to TRUE $tlCfg->api->enabled = TRUE;
- Save config.inc.php
- Login to Testlink UI as admin
- Go to 'My Settings'
- Under API interface, click 'Generate new key'
- Copy the key generated
- Substitute your newly generated devKey in the client program Example: client = TestlinkAPIClient(devKey="abc04556463cd813a1ea05caf042d42f")
This should be sufficient for a test the Testlink xmlrpc API client server communication. You can then go ahead and use the client program as a library to be called from within your python test scripts (talking from a Selenium python user perspective). You could do similar implementation with other scripts.
Hope you find this useful.