Skip to content

Commit 3b5d023

Browse files
committed
Move enable check to a decorator
1 parent da58c92 commit 3b5d023

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

pytest_reportportal/service.py

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import os.path
44
import sys
55
import threading
6+
from functools import wraps
67
from os import curdir
78
from time import time, sleep
89
from typing import List, Any, Optional, Set, Dict, Tuple
@@ -96,6 +97,19 @@ class ExecStatus(Enum):
9697
FINISHED = auto()
9798

9899

100+
def check_rp_enabled(func):
101+
"""Verify is RP is enabled in config."""
102+
103+
@wraps(func)
104+
def wrap(*args, **kwargs):
105+
if args and isinstance(args[0], PyTestServiceClass):
106+
if not args[0].rp:
107+
return
108+
func(*args, **kwargs)
109+
110+
return wrap
111+
112+
99113
class PyTestServiceClass:
100114
"""Pytest service class for reporting test results to the Report Portal."""
101115

@@ -165,14 +179,13 @@ def _build_start_launch_rq(self):
165179
}
166180
return start_rq
167181

182+
@check_rp_enabled
168183
def start_launch(self) -> Optional[str]:
169184
"""
170185
Launch test items.
171186
172187
:return: item ID
173188
"""
174-
if self.rp is None:
175-
return
176189
sl_pt = self._build_start_launch_rq()
177190
log.debug('ReportPortal - Start launch: request_body=%s', sl_pt)
178191
self._launch_id = self.rp.start_launch(**sl_pt)
@@ -336,15 +349,13 @@ def _build_item_paths(self, leaf, path):
336349
elif leaf['type'] != LeafType.ROOT:
337350
self._tree_path[leaf['item']] = path + [leaf]
338351

352+
@check_rp_enabled
339353
def collect_tests(self, session):
340354
"""
341355
Collect all tests.
342356
343357
:param session: pytest.Session
344358
"""
345-
if self.rp is None:
346-
return
347-
348359
# Create a test tree to be able to apply mutations
349360
test_tree = self._build_test_tree(session)
350361
self._remove_root_package(test_tree)
@@ -428,10 +439,8 @@ def _create_suite(self, leaf):
428439
leaf['item_id'] = item_id
429440
leaf['exec'] = ExecStatus.IN_PROGRESS
430441

442+
@check_rp_enabled
431443
def _create_suite_path(self, item):
432-
if self.rp is None:
433-
return
434-
435444
path = self._tree_path[item]
436445
for leaf in path[1:-1]:
437446
if leaf['exec'] != ExecStatus.CREATED:
@@ -669,14 +678,15 @@ def __unique_id(self):
669678
def __started(self):
670679
return self.__unique_id() in self._start_tracker
671680

681+
@check_rp_enabled
672682
def start_pytest_item(self, test_item=None):
673683
"""
674684
Start pytest_item.
675685
676686
:param test_item: pytest.Item
677687
:return: item ID
678688
"""
679-
if self.rp is None or test_item is None:
689+
if test_item is None:
680690
return
681691

682692
if not self.__started():
@@ -771,16 +781,14 @@ def _finish_parents(self, leaf):
771781
self._lock(leaf['parent'], lambda p: self._proceed_suite_finish(p))
772782
self._finish_parents(leaf['parent'])
773783

784+
@check_rp_enabled
774785
def finish_pytest_item(self, test_item):
775786
"""
776787
Finish pytest_item.
777788
778789
:param test_item: pytest.Item
779790
:return: None
780791
"""
781-
if self.rp is None:
782-
return
783-
784792
path = self._tree_path[test_item]
785793
leaf = path[-1]
786794
self._process_metadata_item_finish(leaf)
@@ -824,18 +832,17 @@ def _finish_launch(self, finish_rq):
824832
log.debug('ReportPortal - Finish launch: request_body=%s', finish_rq)
825833
self.rp.finish_launch(**finish_rq)
826834

835+
@check_rp_enabled
827836
def finish_launch(self):
828837
"""
829838
Finish tests launch.
830839
831840
:return: None
832841
"""
833-
if self.rp is None:
834-
return
835-
836842
# To finish launch session str parameter is needed
837843
self._finish_launch(self._build_finish_launch_rq())
838844

845+
@check_rp_enabled
839846
def post_log(self, test_item, message, log_level='INFO', attachment=None):
840847
"""
841848
Send a log message to the Report Portal.
@@ -847,9 +854,6 @@ def post_log(self, test_item, message, log_level='INFO', attachment=None):
847854
:param attachment: attachment file
848855
:return: None
849856
"""
850-
if self.rp is None:
851-
return
852-
853857
if log_level not in self._log_levels:
854858
log.warning('Incorrect loglevel = %s. Force set to INFO. '
855859
'Available levels: %s.', log_level, self._log_levels)

0 commit comments

Comments
 (0)