robotframework-robotlog2rqm 1.4.1__py3-none-any.whl → 1.4.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
RobotLog2RQM/CRQM.py CHANGED
@@ -147,7 +147,7 @@ Resource type mapping:
147
147
  "testresult" : "Execution result: {testcase}",
148
148
  "testsuite" : "{testsuite}",
149
149
  "tser" : "TSER: {testsuite}",
150
- "suiteresult" : "Testsuite result: {testsuite}"
150
+ "suiteresult" : "Testsuite result: {testsuite}"
151
151
  }
152
152
 
153
153
  def __init__(self, user, password, project, host):
@@ -309,7 +309,7 @@ Disconnect from RQM.
309
309
  self.session.close()
310
310
 
311
311
  def config(self, plan_id, build_name=None, config_name=None,
312
- createmissing=False, updatetestcase=False, suite_id=None,
312
+ createmissing=False, updatetestcase=False, suite_id=None,
313
313
  stream=None, baseline=None, naming_convention=None):
314
314
  """
315
315
  Configure RQMClient with testplan ID, build, configuration, createmissing, ...
@@ -371,7 +371,7 @@ Configure RQMClient with testplan ID, build, configuration, createmissing, ...
371
371
  self.updatetestcase = updatetestcase
372
372
  self.testplan.id = plan_id
373
373
  self.testsuite.id = suite_id
374
-
374
+
375
375
  # Add Configuration-Context header information due to given stream or baseline
376
376
  if stream:
377
377
  res = self.getAllByResource('stream')
@@ -386,7 +386,7 @@ Configure RQMClient with testplan ID, build, configuration, createmissing, ...
386
386
  self.headers['Configuration-Context'] = stream_id
387
387
  self.session.headers = self.headers
388
388
  break
389
-
389
+
390
390
  if not bFoundStream:
391
391
  raise Exception(f"Cannot found given stream '{stream}'")
392
392
  else:
@@ -404,7 +404,7 @@ Configure RQMClient with testplan ID, build, configuration, createmissing, ...
404
404
  self.headers['Configuration-Context'] = baseline_id
405
405
  self.session.headers = self.headers
406
406
  break
407
-
407
+
408
408
  if not bFoundBaseline:
409
409
  raise Exception(f"Cannot found given baseline '{baseline}'")
410
410
  else:
@@ -454,7 +454,7 @@ Configure RQMClient with testplan ID, build, configuration, createmissing, ...
454
454
 
455
455
  # get all team-areas for testcase template
456
456
  self.getAllTeamAreas()
457
-
457
+
458
458
 
459
459
  except Exception as error:
460
460
  raise Exception('Configure RQMClient failed: %s'%error)
@@ -1096,7 +1096,7 @@ Return testcase execution record template from provided information.
1096
1096
  nsmap = root.nsmap
1097
1097
  # prepare required data for template
1098
1098
  TCERTittle = self.__genResourceName('tcer', testcaseName)
1099
-
1099
+
1100
1100
 
1101
1101
  # Check tcid is internalid or externalid
1102
1102
  testcaseURL = self.integrationURL('testcase', testcaseID)
@@ -1462,7 +1462,7 @@ Return testsuite execution record (TSER) template from provided configuration na
1462
1462
 
1463
1463
  def createTestsuiteResultTemplate(self, testsuiteID, testsuiteName, TSERID,
1464
1464
  lTCER, lTCResults, resultState, startTime='',
1465
- endTime='', duration='', sOwnerID=''):
1465
+ endTime='', duration='', sOwnerID='', buildrecordID=''):
1466
1466
  """
1467
1467
  Return testsuite execution result template from provided configuration name.
1468
1468
 
@@ -1581,7 +1581,7 @@ Return testsuite execution result template from provided configuration name.
1581
1581
  oState.text = prefixState + 'inconclusive'
1582
1582
  if resultState.lower() in self.RESULT_STATES:
1583
1583
  oState.text = prefixState +resultState.lower()
1584
-
1584
+
1585
1585
  for idx, sTCER in enumerate(lTCER):
1586
1586
  sTCERURL = self.integrationURL('executionworkitem', sTCER)
1587
1587
  oSuiteElem = etree.Element('{http://jazz.net/xmlns/alm/qm/v0.1/tsl/v0.1/}suiteelement', nsmap=nsmap)
@@ -1599,6 +1599,12 @@ Return testsuite execution result template from provided configuration name.
1599
1599
  oExecutionResult.set('href', sTCResultURL)
1600
1600
  root.append(oExecutionResult)
1601
1601
 
1602
+ if buildrecordID:
1603
+ oBuildRecord = etree.Element('{http://jazz.net/xmlns/alm/qm/v0.1/}buildrecord', nsmap=nsmap)
1604
+ buildrecordURL = self.integrationURL('buildrecord', buildrecordID)
1605
+ oBuildRecord.set('href', buildrecordURL)
1606
+ root.append(oBuildRecord)
1607
+
1602
1608
  # return xml template as string
1603
1609
  sTSResultxml = etree.tostring(oTree)
1604
1610
  return sTSResultxml
Binary file
@@ -319,7 +319,7 @@ Parse and validate content of configuration file
319
319
  fatal_error=True)
320
320
 
321
321
  if not is_valid_config(dConfig, bExitOnFail=False):
322
- Logger.log_error(f"Error in naming configuration file '{path_file}'.",
322
+ Logger.log_error(f"Error in naming configuration file '{path_file}'.",
323
323
  fatal_error=True)
324
324
  return dConfig
325
325
 
@@ -441,7 +441,7 @@ Avalable arguments in command line:
441
441
  cmdParser.add_argument('password', type=str, help='password for RQM login.')
442
442
  cmdParser.add_argument('testplan', type=str,
443
443
  help='testplan ID for this execution.')
444
- cmdParser.add_argument('--testsuite', type=str,
444
+ cmdParser.add_argument('--testsuite', type=str,
445
445
  help="testsuite ID for this execution. If 'new', then create a new testsuite for this execution.")
446
446
  cmdParser.add_argument('--recursive',action="store_true",
447
447
  help='if set, then the path is searched recursively for log files to be imported.')
@@ -744,7 +744,7 @@ Process robot test for importing to RQM.
744
744
  # Append lTestcaseIDs (for linking testplan/testsuite)
745
745
  if _tc_id not in RQMClient.lTestcaseIDs:
746
746
  RQMClient.lTestcaseIDs.append(_tc_id)
747
-
747
+
748
748
  # Collect starttime and endtime for testsuite log creation
749
749
  RQMClient.lStartTimes.append(_tc_start_time)
750
750
  RQMClient.lEndTimes.append(_tc_end_time)
@@ -844,7 +844,7 @@ Flow to import Robot results to RQM:
844
844
  Logger.log()
845
845
  Logger.log(f"Login RQM as user '{args.user}' successfully!")
846
846
  else:
847
- Logger.log_error("Could not login to RQM: 'Unkown reason'.")
847
+ Logger.log_error("Could not login to RQM: 'Unknown reason'.")
848
848
  except Exception as reason:
849
849
  Logger.log_error(f"Could not login to RQM: '{str(reason)}'.")
850
850
 
@@ -860,7 +860,7 @@ Flow to import Robot results to RQM:
860
860
  metadata_info['version_sw'] = None
861
861
  metadata_info['project'] = None
862
862
  RQMClient.config(args.testplan, metadata_info['version_sw'],
863
- metadata_info['project'], args.createmissing, args.updatetestcase,
863
+ metadata_info['project'], args.createmissing, args.updatetestcase,
864
864
  args.testsuite, stream=args.stream, baseline=args.baseline,
865
865
  naming_convention=dNamingConvention)
866
866
 
@@ -906,10 +906,11 @@ Flow to import Robot results to RQM:
906
906
  sTSERID,
907
907
  RQMClient.lTCERIDs,
908
908
  RQMClient.lTCResultIDs,
909
- DRESULT_MAPPING[result.suite.status]
909
+ DRESULT_MAPPING[result.suite.status],
910
+ buildrecordID=RQMClient.build.id
910
911
  )
911
912
  res_TSLog = RQMClient.createResource('testsuitelog', testsuite_result_data)
912
- sSuiteResultID = res_TSLog['id']
913
+ sSuiteResultID = res_TSLog['id']
913
914
  if res_TSLog['success']:
914
915
  Logger.log(f"Created testsuite result with id {sSuiteResultID} successfully.", indent=2)
915
916
  else:
@@ -939,7 +940,7 @@ Flow to import Robot results to RQM:
939
940
  Logger.log(f"Link all imported test cases with testplan {args.testplan} successfully.")
940
941
  except Exception as reason:
941
942
  Logger.log_error(f"Link all imported test cases with testplan failed.\nReason: {reason}", fatal_error=True)
942
-
943
+
943
944
  # Update testcase(s) with generated ID(s)
944
945
  # Under developing
945
946
 
RobotLog2RQM/version.py CHANGED
@@ -18,6 +18,5 @@
18
18
  #
19
19
  # Version and date of RobotLog2RQM
20
20
  #
21
- VERSION = "1.4.1"
22
- VERSION_DATE = "20.09.2024"
23
-
21
+ VERSION = "1.4.2"
22
+ VERSION_DATE = "18.02.2025"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: robotframework-robotlog2rqm
3
- Version: 1.4.1
3
+ Version: 1.4.2
4
4
  Summary: Imports robot result(s) to IBM Rational Quality Manager (RQM)
5
5
  Home-page: https://github.com/test-fullautomation/robotframework-robotlog2rqm
6
6
  Author: Tran Duy Ngoan
@@ -21,8 +21,7 @@ Requires-Dist: requests
21
21
  Requires-Dist: colorama
22
22
  Requires-Dist: robotframework
23
23
 
24
- RobotLog2RQM Description
25
- ========================
24
+ # RobotLog2RQM Description
26
25
 
27
26
  The Python package **RobotLog2RQM** provides ability to import [Robot
28
27
  Framework test
@@ -42,14 +41,13 @@ Manager](https://www.ibm.com/support/knowledgecenter/SSYMRC_6.0.2/com.ibm.ration
42
41
  **RobotLog2RQM** tool is operating system independent and only works
43
42
  with Python 3.
44
43
 
45
- How to install
46
- --------------
44
+ ## How to install
47
45
 
48
46
  **RobotLog2RQM** can be installed in two different ways.
49
47
 
50
48
  1. Installation via PyPi (recommended for users)
51
49
 
52
- ``` {.}
50
+ ```
53
51
  pip install RobotLog2RQM
54
52
  ```
55
53
 
@@ -61,7 +59,7 @@ How to install
61
59
  - Clone the **robotframework-robotlog2rqm** repository to your
62
60
  machine.
63
61
 
64
- ``` {.}
62
+ ```
65
63
  git clone https://github.com/test-fullautomation/robotframework-robotlog2rqm.git
66
64
  ```
67
65
 
@@ -76,7 +74,7 @@ How to install
76
74
  packages you can find in the file `requirements.txt` in the
77
75
  repository root folder. Use pip to install them:
78
76
 
79
- ``` {.}
77
+ ```
80
78
  pip install -r ./requirements.txt
81
79
  ```
82
80
 
@@ -95,7 +93,7 @@ How to install
95
93
  to find **LaTeX**. This is defined in the **GenPackageDoc**
96
94
  configuration file
97
95
 
98
- ``` {.}
96
+ ```
99
97
  packagedoc\packagedoc_config.json
100
98
  ```
101
99
 
@@ -107,7 +105,7 @@ How to install
107
105
 
108
106
  - Use the following command to install **RobotLog2RQM**:
109
107
 
110
- ``` {.}
108
+ ```
111
109
  python setup.py install
112
110
  ```
113
111
 
@@ -118,8 +116,7 @@ be available (under *Scripts* folder of Python on Windows and
118
116
  In case above location is added to **PATH** environment variable then
119
117
  you can run it directly as operation system\'s command.
120
118
 
121
- How to use
122
- ----------
119
+ ## How to use
123
120
 
124
121
  **RobotLog2RQM** tool requires the Robot Framework `output.xml` result
125
122
  file(s) which will be imported, RQM information(e.g. host url, project,
@@ -223,8 +220,7 @@ cases and their results are reflected on RQM, please refer to
223
220
  [RobotLog2RQM tool's
224
221
  Documentation](https://github.com/test-fullautomation/robotframework-robotlog2rqm/blob/develop/RobotLog2RQM/RobotLog2RQM.pdf).
225
222
 
226
- Feedback
227
- --------
223
+ ## Feedback
228
224
 
229
225
  To give us a feedback, you can send an email to [Thomas
230
226
  Pollerspöck](mailto:Thomas.Pollerspoeck@de.bosch.com).
@@ -232,15 +228,13 @@ Pollerspöck](mailto:Thomas.Pollerspoeck@de.bosch.com).
232
228
  In case you want to report a bug or request any interesting feature,
233
229
  please don\'t hesitate to raise a ticket.
234
230
 
235
- Maintainers
236
- -----------
231
+ ## Maintainers
237
232
 
238
233
  [Thomas Pollerspöck](mailto:Thomas.Pollerspoeck@de.bosch.com)
239
234
 
240
235
  [Tran Duy Ngoan](mailto:Ngoan.TranDuy@vn.bosch.com)
241
236
 
242
- Contributors
243
- ------------
237
+ ## Contributors
244
238
 
245
239
  [Nguyen Huynh Tri Cuong](mailto:Cuong.NguyenHuynhTri@vn.bosch.com)
246
240
 
@@ -250,8 +244,7 @@ Contributors
250
244
 
251
245
  [Holger Queckenstedt](mailto:Holger.Queckenstedt@de.bosch.com)
252
246
 
253
- License
254
- -------
247
+ ## License
255
248
 
256
249
  Copyright 2020-2024 Robert Bosch GmbH
257
250
 
@@ -1,9 +1,9 @@
1
- RobotLog2RQM/CRQM.py,sha256=fyuU9F2e4RCZzkxOb3bShKrWEjPcXDwzi1HGbUmWjxQ,64123
2
- RobotLog2RQM/RobotLog2RQM.pdf,sha256=sRhG1vvBX00YwBR2V9pKhMBpJH5AMniLHtPf9rQdK6Q,336238
1
+ RobotLog2RQM/CRQM.py,sha256=sL7IsFOhzRVvV2n_g2PFDjL3Ej8YChUl3PDTv3LCIN0,64363
2
+ RobotLog2RQM/RobotLog2RQM.pdf,sha256=utfSCdhRtw6mtljc-WMaG4GqRn7yggyZNcOeCota40Y,337295
3
3
  RobotLog2RQM/__init__.py,sha256=YKDTJjDsnQkr5X-gjjO8opwKUVKm6kc8sIUpURYMk48,596
4
4
  RobotLog2RQM/__main__.py,sha256=JabttEncy80antJWeGVmjoXyiF1DyXxkxdW4xLuHzT0,681
5
- RobotLog2RQM/robotlog2rqm.py,sha256=bhPaj43LazYO58mhchMt7ammaf6Qerxq7z2_aq8qesY,33437
6
- RobotLog2RQM/version.py,sha256=lTcM8gNMLdiczaZBwoctKVZ7UBQ1h8jjocuoi3Qoc9A,917
5
+ RobotLog2RQM/robotlog2rqm.py,sha256=Q35lrrDDv3skXJO6IH9hRRoU0Ua0kSKOuBdpNeF_v5s,33531
6
+ RobotLog2RQM/version.py,sha256=XS3UlCLUKUcaTFjKhJ6Pj4bN04WACmWEz7cmWTadZ1A,916
7
7
  RobotLog2RQM/RQM_templates/buildrecord.xml,sha256=uGot7pNOjPR8do0JsJi0Lz3OCU9NMhODRd428QgvHh4,1498
8
8
  RobotLog2RQM/RQM_templates/configuration.xml,sha256=NrFDv51fuGhgeMiZuRhQ5q_UJ0u_pWzdxisIF5AJs74,1378
9
9
  RobotLog2RQM/RQM_templates/executionresult.xml,sha256=WTp4qDk29peBc0ll6GHVXX_kF_YBsOVjy9vBzoz7_2k,2160
@@ -12,9 +12,9 @@ RobotLog2RQM/RQM_templates/suiteexecutionrecord.xml,sha256=9GAs2WqZMkFJSNEZULm9B
12
12
  RobotLog2RQM/RQM_templates/testcase.xml,sha256=zovFKj-37QHn2S8mMA_9RnAJ3zBmDJkJj31yelsnFFI,2167
13
13
  RobotLog2RQM/RQM_templates/testsuite.xml,sha256=r2ijEsyPoE7qzCtUxgIHDOEcqUveDN4SMf9HSE9b0ZU,1326
14
14
  RobotLog2RQM/RQM_templates/testsuitelog.xml,sha256=l-NlaCyk6Ben76PElXKOHfMlEvyQ-e9MOZ6-F9HvwDQ,1920
15
- robotframework_robotlog2rqm-1.4.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
- robotframework_robotlog2rqm-1.4.1.dist-info/METADATA,sha256=c_3TNFwH0GFeklIBKGmgJoYhnhXSVL1sNMiaw8IqorA,9951
17
- robotframework_robotlog2rqm-1.4.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
18
- robotframework_robotlog2rqm-1.4.1.dist-info/entry_points.txt,sha256=-Xug2kDJW2LtcSADEVPtCwa337twCy2iGh5aK7xApHA,73
19
- robotframework_robotlog2rqm-1.4.1.dist-info/top_level.txt,sha256=jb_Gt6W44FoOLtGfBe7RzqCLaquhihkEWvSI1zjXDHc,13
20
- robotframework_robotlog2rqm-1.4.1.dist-info/RECORD,,
15
+ robotframework_robotlog2rqm-1.4.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
+ robotframework_robotlog2rqm-1.4.2.dist-info/METADATA,sha256=JEeig_C3ceOdSoP9UauelzVEHm6l6S7gvd8S6Us8zO4,9863
17
+ robotframework_robotlog2rqm-1.4.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
18
+ robotframework_robotlog2rqm-1.4.2.dist-info/entry_points.txt,sha256=-Xug2kDJW2LtcSADEVPtCwa337twCy2iGh5aK7xApHA,73
19
+ robotframework_robotlog2rqm-1.4.2.dist-info/top_level.txt,sha256=jb_Gt6W44FoOLtGfBe7RzqCLaquhihkEWvSI1zjXDHc,13
20
+ robotframework_robotlog2rqm-1.4.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.44.0)
2
+ Generator: bdist_wheel (0.45.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5