11import logging
22from time import time
33from six import with_metaclass
4- from reportportal_client import (
5- ReportPortalService , FinishExecutionRQ , StartLaunchRQ , StartTestItemRQ ,
6- FinishTestItemRQ , SaveLogRQ )
4+ from reportportal_client import ReportPortalServiceAsync
75
86
97def timestamp ():
@@ -26,45 +24,40 @@ class PyTestServiceClass(with_metaclass(Singleton, object)):
2624
2725 def __init__ (self ):
2826 self .RP = None
29- self .TEST_ITEM_STACK = []
30- self .launch_id = None
3127
3228 def init_service (self , endpoint , project , uuid ):
33-
3429 if self .RP is None :
3530 logging .debug (
3631 msg = "ReportPortal - Init service: "
3732 "endpoint={0}, project={1}, uuid={2}" .
3833 format (endpoint , project , uuid ))
39- self .RP = ReportPortalService (
34+ self .RP = ReportPortalServiceAsync (
4035 endpoint = endpoint ,
4136 project = project ,
4237 token = uuid )
4338 else :
4439 logging .debug ("The pytest is already initialized" )
4540 return self .RP
4641
42+ def terminate_service (self ):
43+ if self .RP is not None :
44+ self .RP .terminate ()
45+
4746 def start_launch (
4847 self , launch_name = None , mode = None , tags = None , launch = None ):
4948 # In next versions launch object(suite, testcase)
5049 # could be set as parameter
51- sl_pt = StartLaunchRQ (
50+ sl_pt = dict (
5251 name = launch_name ,
5352 start_time = timestamp (),
5453 description = 'Pytest Launch' ,
5554 mode = mode ,
5655 tags = tags )
57- logging .debug (msg = "ReportPortal - Start launch: "
58- "request_body={0}" .format (sl_pt .data ))
59- req_data = self .RP .start_launch (sl_pt )
60- logging .debug (msg = "ReportPortal - Launch started: "
61- "response_body={0}" .format (req_data .raw ))
62- self .launch_id = req_data .id
63-
64- self .TEST_ITEM_STACK .append ((None , "SUITE" ))
65- logging .debug (
66- msg = "ReportPortal - Stack: {0}" .
67- format (self .TEST_ITEM_STACK ))
56+ logging .debug ("ReportPortal - Start launch: "
57+ "request_body={0}" .format (sl_pt ))
58+ req_data = self .RP .start_launch (** sl_pt )
59+ logging .debug ("ReportPortal - Launch started: "
60+ "response_body={0}" .format (req_data ))
6861
6962 def start_pytest_item (self , test_item = None ):
7063 try :
@@ -73,78 +66,46 @@ def start_pytest_item(self, test_item=None):
7366 except AttributeError :
7467 # doctest has no `function` attribute
7568 item_description = test_item .reportinfo ()[2 ]
76- start_rq = StartTestItemRQ (
69+ start_rq = dict (
7770 name = test_item .name ,
7871 description = item_description ,
7972 tags = ['PyTest Item Tag' ],
8073 start_time = timestamp (),
81- launch_id = self .launch_id ,
8274 type = "TEST" )
8375
84- parent_item_id = self ._get_top_id_from_stack ()
85-
8676 logging .debug (
87- msg = "ReportPortal - Start TestItem: "
88- "request_body={0}, parent_item={1}" .format (
89- start_rq .data , parent_item_id ))
90-
91- req_data = self .RP .start_test_item (
92- parent_item_id = parent_item_id , start_test_item_rq = start_rq )
77+ "ReportPortal - Start TestItem: "
78+ "request_body={0}" .format (start_rq ))
9379
94- self .TEST_ITEM_STACK .append ((req_data .id , "TEST" ))
95- logging .debug (
96- msg = "ReportPortal - Stack: {0}" .
97- format (self .TEST_ITEM_STACK ))
80+ self .RP .start_test_item (** start_rq )
9881
9982 def finish_pytest_item (self , status , issue = None ):
100- fta_rq = FinishTestItemRQ (end_time = timestamp (),
101- status = status ,
102- issue = issue )
83+ fta_rq = dict (end_time = timestamp (),
84+ status = status ,
85+ issue = issue )
10386
104- test_item_id = self ._get_top_id_from_stack ()
105- logging .debug (
106- msg = "ReportPortal - Finish TetsItem:"
107- " request_body={0}, test_id={1}" .
108- format (fta_rq .data , test_item_id ))
109- self .RP .finish_test_item (
110- item_id = test_item_id ,
111- finish_test_item_rq = fta_rq )
112- self .TEST_ITEM_STACK .pop ()
11387 logging .debug (
114- msg = "ReportPortal - Stack: {0}" .
115- format (self .TEST_ITEM_STACK ))
88+ "ReportPortal - Finish TestItem:"
89+ " request_body={0}" .format (fta_rq ))
90+ self .RP .finish_test_item (** fta_rq )
11691
11792 def finish_launch (self , launch = None , status = "rp_launch" ):
11893 # TO finish launch session str parameter is needed
119- fl_rq = FinishExecutionRQ (
94+ fl_rq = dict (
12095 end_time = timestamp (),
12196 status = status )
122- launch_id = self .launch_id
12397 logging .debug (msg = "ReportPortal - Finish launch: "
124- "request_body={0}, launch_id={1}" .format (fl_rq .data ,
125- launch_id ))
126- self .RP .finish_launch (launch_id , fl_rq )
127- self .TEST_ITEM_STACK .pop ()
128- logging .debug (
129- msg = "ReportPortal - Stack: {0}" .
130- format (self .TEST_ITEM_STACK ))
131-
132- def _get_top_id_from_stack (self ):
133- try :
134- return self .TEST_ITEM_STACK [- 1 ][0 ]
135- except IndexError :
136- return None
98+ "request_body={0}" .format (fl_rq ))
99+ self .RP .finish_launch (** fl_rq )
137100
138101 def post_log (self , message , loglevel = 'INFO' ):
139102 if loglevel not in self ._loglevels :
140103 logging .warning ('Incorrect loglevel = {}. Force set to INFO. Avaliable levels: '
141104 '{}.' .format (loglevel , self ._loglevels ))
142105 loglevel = 'INFO'
143106
144- sl_rq = SaveLogRQ (item_id = self ._get_top_id_from_stack (),
145- time = timestamp (), message = message ,
146- level = loglevel )
147- self .RP .log (sl_rq )
107+ sl_rq = dict (time = timestamp (), message = message , level = loglevel )
108+ self .RP .log (** sl_rq )
148109
149110
150111PyTestService = PyTestServiceClass ()
0 commit comments