Tutorial 1: Quality Center

QC interface supports operations with defects and test entities (test, folder, set, instance). You can read, create, update and delete them.

Command line

It is controlled via command track with following options.

Mandatory:

  • –tr-app <name>: application, use qc
  • –tr-action <name>: action, read|create|update|delete

Optional:

  • –tr-type <name>: entity type, default defect, defect|test-folder|test|test-set-folder|test-set|test-instance
  • –tr-input <path>: filename, content is written to defect description, supported for actions: create|update
  • –tr-output <path>: filename, action output is written, supported for action: read
  • –tr-url <string>: url, configurable
  • –tr-user <string>: username, configurable
  • –tr-passw <string>: password, configurable
  • –tr-domain <string>: domain, configurable
  • –tr-project <string>: project, configurable
  • –tr-id <num>: record id, optional for action: read, mandatory for actions: update|delete
  • –tr-fields <list>: request record fields, configurable, list form - name1,name2, supported for action: read
  • –tr-query <string>: query, QC specific expression, supported for action: read
  • –tr-order-by <dict>: record ordering, dictionary form - name1:direction|name2:direction, direction asc|desc, supported for action: read
  • –tr-limit <num>: record limit, supported for action: read
  • –tr-offset <num>: record offset, supported for action: read
  • –tr-params <dict>: record params, dictionary form - name1:value,name2:value, supported for actions create|update
  • –tr-path <string>: directory path, dir1/di2, mandatory for use cases: read/create test folder|read/create test set, create test

Configuration

Use section qc in configuration file.

  • url: QC server url, used as –tr-url option
  • user: username, used as –tr-user option
  • passw: password, used as –tr-passw option
  • domain: domain, used as –tr-domain option
  • project: project, used as –tr-project option
  • return_fields: record fields returned within read (all by default), used as –tr-fields option, use list form, name1,name2,name3
  • required_fields: required fields to create new record, user will be asked if not provided in –tr-params option, use list form, name1,name2,name3
  • default_values: default field values to create new record, used both for required and optional fields, use dictionary form, name: value
  • lov: list of values for required fields, list will be offered to user within create, use dictionary form, name: value1,value2,value3

QC interface supports multiple entities, entity must be specified within parameter. Entities defect|test|test-set|test-instance are configurable.

Note

Parameters provided as command options override configured values.

Example

TrackApps:
  qc:
    url: url
    user: username
    passw: password
    domain: RELEASE
    project: SimpleOnlineCompany
    return_fields:
      defect: name,owner,project,status,description
      test: name,subtype-id,owner,user-04,user-01,user-05,description
    required_fields:
      defect:
      test: name,subtype-id,owner,user-04,user-01,user-05,description,name
      test-set: subtype-id
      test-instance: cycle-id,test-id,test-order,subtype-id
    default_values:
      defect:
      test: subtype-id%MANUAL#owner%x0549396#user-05%xxx
      test-set: subtype-id:hp.qc.test-set.default
      test-instance: test-order%1#subtype-id%hp.qc.test-instance.MANUAL
    lov:
      defect:
      test: user-04%31604_PoP CRM,31413_UDR User Data Repository#user-01%1-Urgent,2-Very High,3-High,4-Medium,5-Low

Examples

Some parameters are configured to make command examples shorter.

Defects

# read defect
# id=8594, two fields are returned
$ htk --tr-app qc --tr-action read --tr-id 8594 --tr-fields "summary,project" track

[{u'summary': u'hydra test', u'project': u'SimpleOnlineCompany'}]

# read defects
# query name starts with CRM, output is written to text file
$ htk --tr-app qc --tr-action read --tr-query "{name[CRM*]}" --tr-output defects.txt track

# read defect
# id=8594, connection parameters are provided
# they are mandatory, if they are missing and not configured, user will be prompted
$ htk --tr-app qc --tr-action read --tr-url --tr-user user --tr-passw passw --tr-domain dom --tr-project proj --tr-id 8594 track

# create defect
# required fields are provided or have configured default value
# if some required field is missing and configured, user will be prompted (including lov if configured)
$ htk --tr-app qc --tr-action create --tr-params "name:hydra,description:hydra desc" track

Record 8595 created

# create defect
# description is read from text file
# required fields are provided or have configured default value
$ htk --tr-app qc --tr-action create --tr-params "name:hydra" --tr-input defect.txt track

Record 8595 created

# update defect
# id=8595, id is mandatory, user will be prompted if missing
$ htk --tr-app qc --tr-action update --tr-id 8595 --tr-params "status:Closed" track

Record 8595 updated

# delete defect
# id=8595, id is mandatory, user will be prompted if missing
$ htk --tr-app qc --tr-action delete --tr-id 8595 track

Record 8595 deleted

Test entities

# read test folder
# returns test under folder (test plan), output is printed
# type=test-folder
# path is mandatory, user will be prompted if missing
$ htk --tr-app qc --tr-action read --tr-type test-folder --tr-path "Subject/.Trash/VAS" track

# read test
# id=1234, type=test
$ htk --tr-app qc --tr-action read --tr-type test --tr-id 1234 track

# create test folder
# type=test-folder
# path contains also new folder name (Subject/.Trash/VAS/ is existing folder, hydra is new folder)
$ htk --tr-app qc --tr-action create --tr-type test-folder --tr-path "Subject/.Trash/VAS/hydra" track

Record 1238 created

# create test
# type=test
# required fields are provided or have configured default values
$ htk --tr-app qc --tr-action create --tr-type test --tr-path "Subject/.Trash/VAS/hydra" --tr-params "name:test,subtype-id:MANUAL" track

Record 1235 created

# update test
# type=test
$ htk --tr-app qc --tr-action update --tr-type test --tr-id 1235 --tr-params "name:test 2" track

Record 1235 updated

# read test set folder
# type=test-set-folder
# returns test sets under folder (test lab), output is written to text file
# path is provided (folder id is not used)
$ htk --tr-app qc --tr-action read --tr-type test-set-folder --tr-path "Root/.Trash/VAS" --tr-output sets.txt track

# create test set folder
# type=test-set-folder
# path contains also new folder name (Root/.Trash/VAS is existing folder, hydra is new folder)
$ htk --tr-app qc --tr-action create --tr-type test-set-folder --tr-path "Root/.Trash/VAS/hydra" track

Record 1239 created

# create test set
# type=test-set
# path is provided
# required fields are provided or have configured default values
$ htk --tr-app qc --tr-action create --tr-type test-set --tr-qc-path "Root/.Trash/VAS/hydra" --tr-params "name:set1,'subtype-id:hp.qc.test-set.default'" track

Record 1236 created

# create test instance
# type=test-instance
# assign test 1235 to test set 1236
# required fields are provided or have configured default values
$ htk --tr-app qc --tr-action create --tr-type test-instance --tr-params "cycle-id:1236,test-id:1235,test-order:1,subtype-id:hp.qc.test-instance.MANUAL" track

Record 1237 created

# update test instance
# type=test-instance (test run)
# id=1237, close it
$ htk --tr-app qc --tr-action update --tr-type test-instance --tr-id 1237 --tr-params "status:Closed" track

Record 1237 updated

.. note::

   Use option --type carefully. If not provided, defect is used by default.

API

This section shows several examples how to use QC interface as API in your extensions/libraries. API uses HydraTK core functionalities so it must be running.

Methods

  • connect: connect to QC, params: url, user, passw, domain, project
  • disconnect: disconnect from QC
  • read: read entities, params: id, entity, fields, query, order_by, limit, offset
  • create: create entity, params: entity, params
  • update: update entity, params: id, entity, params
  • delete: delete entity, params: id, entity
  • read_test_folder: read tests under test folder, params: path, entity
  • create_test_folder: create test folder, params: path, name, entity
  • read_test_set: read test sets under test set, params: id
  • create_test_set: create test set in test folder, params: path, params

Examples

# import client
from hydratk.extensions.trackapps.qc import Client
c = Client()

# connect
res = c.connect(url, user, passw, domain, project)

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

# create 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(entity, params)

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

# delete defect
res = c.delete(id, entity)

# disconnect
res = c.disconnect()

Test entities

# import client
from hydratk.extensions.trackapps.qc import Client
c = Client()

# connect
res = c.connect(url, user, passw, domain, project)

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

# read test folder
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
id = c.create_test_folder('Subject/.Trash/VAS', 'test')

# create 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)

# disconnect
res = c.disconnect()