Best Python code snippet using lemoncheesecake
reportportal.py
Source:reportportal.py
...31 self._rp_exc_info = None32 def _handle_rp_error(self, exc_info):33 self._rp_exc_info = exc_info34 return False # stop on error35 def _has_rp_error(self):36 return self._rp_exc_info is not None37 def _show_rp_error(self):38 print(39 "Got the following exception using ReportPortal, "40 "test results have not been properly synced:",41 file=sys.stderr42 )43 traceback.print_exception(*self._rp_exc_info, file=sys.stderr)44 def _end_current_test_item(self, end_time, status):45 self.service.finish_test_item(end_time=make_time(end_time), status=status)46 def _start_test_item(self, item_type, start_time, name, description, wrapped=False):47 if wrapped:48 self.service.start_test_item(49 item_type="SUITE", start_time=make_time(start_time),50 name=name, description=description51 )52 self.service.start_test_item(53 item_type=item_type, start_time=make_time(start_time),54 name=name, description=description55 )56 def _end_test_item(self, end_time, is_successful, wrapped=False):57 status = "passed" if is_successful else "failed"58 if wrapped:59 self._end_current_test_item(end_time, status=status)60 self._end_current_test_item(end_time, status=status)61 def on_test_session_start(self, event):62 if self._has_rp_error():63 return64 self.service.start_launch(65 name=self.launch_name, description=self.launch_description, start_time=make_time(event.time)66 )67 def on_test_session_end(self, event):68 if self._has_rp_error():69 self._show_rp_error()70 else:71 self.service.finish_launch(end_time=make_time(event.time))72 self.service.terminate()73 if self._has_rp_error():74 self._show_rp_error()75 def on_test_session_setup_start(self, event):76 if self._has_rp_error():77 return78 self._start_test_item(79 item_type="BEFORE_CLASS", start_time=event.time,80 name="session_setup", description="Test Session Setup",81 wrapped=True82 )83 def on_test_session_setup_end(self, event):84 if self._has_rp_error():85 return86 self._end_test_item(87 event.time,88 not self.report.test_session_setup or self.report.test_session_setup.is_successful(),89 wrapped=True90 )91 def on_test_session_teardown_start(self, event):92 if self._has_rp_error():93 return94 self._start_test_item(95 item_type="AFTER_CLASS", start_time=event.time,96 name="session_teardown", description="Test Session Teardown",97 wrapped=True98 )99 def on_test_session_teardown_end(self, event):100 if self._has_rp_error():101 return102 self._end_test_item(103 event.time,104 not self.report.test_session_teardown or self.report.test_session_teardown.is_successful(),105 wrapped=True106 )107 def on_suite_start(self, event):108 if self._has_rp_error():109 return110 suite = event.suite111 self.service.start_test_item(112 item_type="SUITE", start_time=make_time(event.time),113 name=suite.name, description=suite.description,114 tags=make_tags_from_test_tree_node(suite)115 )116 def on_suite_end(self, event):117 if self._has_rp_error():118 return119 self._end_current_test_item(event.time, status="passed")120 def on_suite_setup_start(self, event):121 if self._has_rp_error():122 return123 self._start_test_item(124 item_type="BEFORE_CLASS", start_time=event.time,125 name="suite_setup", description="Suite Setup",126 wrapped=len(event.suite.get_suites()) > 0127 )128 def on_suite_setup_end(self, event):129 if self._has_rp_error():130 return131 suite_data = self.report.get_suite(event.suite)132 self._end_test_item(133 event.time,134 not suite_data.suite_setup or suite_data.suite_setup.is_successful(),135 wrapped=len(event.suite.get_suites()) > 0136 )137 def on_suite_teardown_start(self, event):138 if self._has_rp_error():139 return140 self._start_test_item(141 item_type="AFTER_CLASS", start_time=event.time,142 name="suite_teardown", description="Suite Teardown",143 wrapped=len(event.suite.get_suites()) > 0144 )145 def on_suite_teardown_end(self, event):146 if self._has_rp_error():147 return148 suite_data = self.report.get_suite(event.suite)149 self._end_test_item(150 event.time,151 not suite_data.suite_teardown or suite_data.suite_teardown.is_successful(),152 wrapped=len(event.suite.get_suites()) > 0153 )154 def on_test_start(self, event):155 if self._has_rp_error():156 return157 test = event.test158 self.service.start_test_item(159 item_type="TEST", start_time=make_time(event.time),160 name=test.name, description=test.description,161 tags=make_tags_from_test_tree_node(test)162 )163 def on_test_end(self, event):164 if self._has_rp_error():165 return166 test_data = self.report.get_test(event.test)167 self._end_current_test_item(event.time, test_data.status)168 def _bypass_test(self, test, status, time):169 if self._has_rp_error():170 return171 self.service.start_test_item(172 item_type="TEST", start_time=make_time(time),173 name=test.name, description=test.description, tags=test.tags,174 )175 self._end_current_test_item(time, status=status)176 def on_test_skipped(self, event):177 if self._has_rp_error():178 return179 self._bypass_test(event.test, "skipped", event.time)180 def on_disabled_test(self, event):181 # do not log disabled test, moreover it seems that there is not corresponding status in ReportPortal182 pass183 def on_step_start(self, event):184 if self._has_rp_error():185 return186 self.service.log(make_time(event.time), "--- STEP: %s ---" % event.step_description, "INFO")187 def on_log(self, event):188 if self._has_rp_error():189 return190 self.service.log(make_time(event.time), event.log_message, event.log_level.upper())191 def on_check(self, event):192 if self._has_rp_error():193 return194 message = "%s => %s" % (event.check_description, "OK" if event.check_is_successful else "NOT OK")195 if event.check_details is not None:196 message += "\nDetails: %s" % event.check_details197 self.service.log(make_time(event.time), message, "INFO" if event.check_is_successful else "ERROR")198 def on_log_attachment(self, event):199 if self._has_rp_error():200 return201 abspath = os.path.join(self.report_dir, event.attachment_path)202 with open(abspath, "rb") as fh:203 self.service.log(make_time(event.time), event.attachment_description, "INFO", attachment={204 "name": osp.basename(event.attachment_path),205 "data": fh.read(),206 "mime": mimetypes.guess_type(abspath)[0] or "application/octet-stream"207 })208 def on_log_url(self, event):209 if self._has_rp_error():210 return211 if event.url_description and event.url_description != event.url:212 message = "%s: %s" % (event.url_description, event.url)213 else:214 message = event.url215 self.service.log(make_time(event.time), message, "INFO")216class ReportPortalReportingSessionParallelized(ReportingSession):217 def __init__(self, *args):218 self._session = ReportPortalReportingSession(*args)219 def on_test_session_end(self, _):220 event_manager = SyncEventManager.load()221 event_manager.add_listener(self._session)222 replay_report_events(self._session.report, event_manager)223class ReportPortalBackend(ReportingBackend, ReportingSessionBuilderMixin):...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!