Quality Center

This sections contains module documentation of qc module.

qc

Module provides class Client. It uses hydratk.lib.network.rest.client.RESTClient for communication with server. Unit tests are not available now.

Attributes :

  • _mh - MasterHead reference
  • _client - RPCClient object instance
  • _url - server url
  • _user - username
  • _passw - password
  • _domain - application domain
  • _project - project name
  • _cookie - cookie set by server
  • _return_fields - list of returned fields
  • _default_values - dictionary of default values
  • _is_connected - bool, connection status

Properties (Getters) :

  • client - returns _client
  • url - returns _url
  • user - returns _user
  • passw - returns _passw
  • domain - returns _domain
  • project - returns _project
  • cookie - returns _cookie
  • return_fields - returns _return_fields
  • default_values - returns _default_values
  • is_connected - returns _is_connected

Methods:

  • __init__

Method initializes RESTClient. Sets _url, _user, _passw, _domain, _project, _return_fields, _default_values if configured.

  • connect

Method connects to server. First it fires event track_before_connect where parameters (url, user, passw, domain, project) can be rewritten. It sends POST request to URL /authentication-point/authenticate with Basic authentication. Server replies with cookie in HTTP headers. After that it fires event track_after_connect and returns bool.

from hydratk.extensions.trackapps.qc import Client

c = Client()
res = c.connect(url, user, passw, domain, project)
  • disconnect

Method disconnects from server. It sends POST request to URL /authentication-point/logout. After that returns bool.

res = c.disconnect()
  • read

Method reads record from server. First it fires event track_before_read where parameters (id, entity, fields, query, order_by, limit, offset) can be rewritten. query must match QC format (see documentation for more detail). order_by is dictionary (key - fields, value - direction asc|desc). Default entity is defect. It sends GET request to URL /rest/domains/domain/projects/project/entity+s (plural). Input parameters are sent within URL.

Server replies with XML, list of element Entity with embedded list of element Field. After that it fires event track_after_read and returns tuple of bool, list of dictionary.

# defect
entity, query = 'defect', '{ID[=100]}'
fields = ['name', 'owner', 'user-04', 'user-05']
res, records = c.read(entity=entity, fields=fields, query=query)

# test
id, entity = 49528, 'test'
res, records = c.read(id=id, entity=entity)
  • create

Method creates record on server. First it fires event track_before_create where parameters (entity, params) can be rewritten. It prepares xml request from parameters. Default entity is defect. It sends POST request to URL /rest/domains/domain/projects/project/entity+s. Server replies with XML containing id (HTTP status 200, 201). After that it fires event track_after_create and returns id of created record.

# defect
params = {'name': 'test', 'owner': 'x0549396', 'user-04': 'General', 'Status': 'New',
          'Detected on Date': '2016-03-07', 'Environment': 'Preproduction', 'Detected By': 'x0549396',
          'Defect Reason': '6 - Others', 'Severity': '5-Low', 'user-05': 'Other application',
          'Test Type': 'Sys-int Test', 'Description': 'Test'}
id = c.create('defect', params)
  • update

Method updates record on server. First it fires event track_before_update where parameters (id, entity, params) can be rewritten. It prepares xml request from parameters. Default entity is defect. It sends PUT request to URL /rest/domains/domain/projects/project/entity+s/id. Server replies with XML (HTTP status 200). After that it fires event track_after_update and returns bool.

# defect
params = {'name': 'test 2', 'Status': 'Closed'}
res = c.update(id, 'defect', params)
  • delete

Method deletes record on server. First it fires event track_before_delete where parameters (id, entity) can be rewritten. Default entity is defect. It sends DELETE request to URL /rest/domains/domain/projects/project/entity+s/id. Server replies with XML (HTTP status 200). After that it fires event track_after_delete and returns bool.

# defect
res = c.delete(id, 'defect')
  • read_test_folder

Method gets test cases under test folder. First it fires event track_before_read_folder where parameters (path, entity) can be rewritten. Entity can be test-folder (default), test-set-folder. It gets the folder using method _get_folder. It reads (using method read) all tests using query with hierarchical-path (reference to folder id) and prepares directory tree.

Then it reads details of each test (fields id, name) using method read. After that it fires event track_after_read_folder and returns tuple of bool, list of dictionary.

path = 'Subject/02 SYSINTTEST/31604_PoP_CRM/01_Drop_1/03 Customer mngt/CUSTM001 Authentication'
res, tests = c.read_test_folder(path)
  • create_test_folder

Method creates new test folder. Parameters are path, name, entity. Entity can be test-folder (default), test-set-folder. It gets parent folder from path using method _get_folder. It calls method create and returns id of created folder.

id = c.create_test_folder('Subject/.Trash/VAS', 'test')
  • read_test_set

Method gets test cases under test set folder. First it fires event track_before_read_set where parameter id can be rewritten. It reads (using method read, entity test-instance) all tests using query with cycle-id (test set id) and gets fields test-id, status, exec-date, actual-tester. After that it fires event track_after_read_set and returns tuple of bool, list of dictionary.

  • create_test_set

Method creates new test set. Parameters are path, params. It calls method create (entity test-set) and returns id of created set.

  • create_test

Method creates new test. Parameters are path, params. It calls method create (entity test) and returns id of created test.

params = {'name': 'test', 'subtype-id': 'MANUAL', 'owner': 'x0549396', 'user-04': '31604_PoP CRM',
          'user-01': '5-Low', 'user-05': 'xxx'}
id = c.create_test('Subject/.Trash/VAS/test', params)
  • _get_folder

Auxiliary method to get folder id from path. Parameters are path, entity (test-folder default, test-set-folder). It goes through directory tree (using method read) till it finds requested folder.