5 from onaptests.steps.base import BaseStep
6 from onaptests.utils.exceptions import OnapTestException
10 class TestStep(BaseStep):
14 return super().execute()
16 @BaseStep.store_state(cleanup=True)
17 def cleanup(self) -> None:
18 return super().cleanup()
21 def description(self):
22 return "Test pass step"
25 def component(self) -> str:
29 class TestFailStep(BaseStep):
34 raise OnapTestException
36 @BaseStep.store_state(cleanup=True)
37 def cleanup(self) -> None:
38 raise OnapTestException
41 def description(self):
42 return "Test fail step"
45 def component(self) -> str:
49 class TestOneSecStep(BaseStep):
57 def description(self):
58 return "One second test step"
61 def component(self) -> str:
65 class TestStepNoSuperExecute(BaseStep):
72 def description(self):
73 return "One second test step - no super execute call"
76 def component(self) -> str:
80 class TestCleanupStepA(BaseStep):
84 return super().execute()
86 @BaseStep.store_state(cleanup=True)
88 return super().cleanup()
91 def description(self):
92 return "Test cleanup step A"
95 def component(self) -> str:
99 class TestCleanupStepB(TestCleanupStepA):
102 def description(self):
103 return "Test cleanup step B"
106 class TestCleanupStepC(TestCleanupStepA):
109 def description(self):
110 return "Test cleanup step C"
113 class TestCleanupStepD(TestCleanupStepA):
116 def description(self):
117 return "Test cleanup step D"
120 def test_store_state():
123 assert len(ts.reports_collection.report) == 1
124 rep = ts.reports_collection.report[0]
125 assert rep.step_description == "[Test] TestStep: Test pass step"
126 assert rep.step_execution_status.value == "PASS"
127 assert rep.step_execution_duration != 0
130 fs.add_step(TestStep())
131 with pytest.raises(Exception):
133 rep_f, rep_s = fs.reports_collection.report
134 assert rep_f.step_description == "[Test] TestFailStep: Test fail step"
135 assert rep_f.step_execution_status.value == "FAIL"
136 assert rep_f.step_execution_duration != 0
138 assert rep_s.step_description == "[Test] TestStep: Test pass step"
139 assert rep_s.step_execution_status.value == "PASS"
140 assert rep_s.step_execution_duration != 0
142 ts = TestStep(cleanup=True)
143 ts.add_step(TestFailStep(cleanup=True))
144 with pytest.raises(Exception):
146 with pytest.raises(Exception):
148 assert len(ts.reports_collection.report) == 4
149 cln_rep_f, cln_rep_s, rep_s, rep_f = ts.reports_collection.report
150 assert rep_f.step_description == "[Test] TestFailStep: Test fail step"
151 assert rep_f.step_execution_status.value == "FAIL"
152 assert rep_f.step_execution_duration != 0
154 assert rep_s.step_description == "[Test] TestStep: Test pass step"
155 assert rep_s.step_execution_status.value == "NOT EXECUTED"
156 assert rep_s.step_execution_duration != 0
158 assert cln_rep_s.step_description == "[Test] TestStep cleanup: Test pass step"
159 assert cln_rep_s.step_execution_status.value == "PASS"
160 assert cln_rep_s.step_execution_duration != 0
162 assert cln_rep_f.step_description == "[Test] TestFailStep cleanup: Test fail step"
163 assert cln_rep_f.step_execution_status.value == "FAIL"
164 assert cln_rep_f.step_execution_duration != 0
166 ts = TestStep(cleanup=True)
167 tsf = TestFailStep(cleanup=True)
168 tsf.add_step(TestStep(cleanup=True))
170 ts.add_step(TestStep(cleanup=True))
171 with pytest.raises(Exception):
173 with pytest.raises(Exception):
176 assert len(ts.reports_collection.report) == 5
177 cln_2, cln_1, exec_3, exec_2, exec_1 = ts.reports_collection.report
179 assert exec_1.step_description == "[Test] TestStep: Test pass step"
180 assert exec_1.step_execution_status.value == "PASS"
181 assert exec_1.step_execution_duration != 0
183 assert exec_2.step_description == "[Test] TestFailStep: Test fail step"
184 assert exec_2.step_execution_status.value == "FAIL"
185 assert exec_2.step_execution_duration != 0
187 assert exec_3.step_description == "[Test] TestStep: Test pass step"
188 assert exec_3.step_execution_status.value == "NOT EXECUTED"
189 assert exec_3.step_execution_duration != 0
191 assert cln_1.step_description == "[Test] TestStep cleanup: Test pass step"
192 assert cln_1.step_execution_status.value == "PASS"
193 assert cln_1.step_execution_duration != 0
195 assert cln_2.step_description == "[Test] TestFailStep cleanup: Test fail step"
196 assert cln_2.step_execution_status.value == "FAIL"
197 assert cln_2.step_execution_duration != 0
200 def test_store_state_time_measurement():
202 ts = TestOneSecStep()
204 assert len(ts.reports_collection.report) == 1
205 rep = ts.reports_collection.report[0]
206 assert rep.step_execution_duration > 1
208 ts = TestOneSecStep()
209 ts.add_step(TestOneSecStep())
211 assert len(ts.reports_collection.report) == 2
212 rep_one, rep_two = ts.reports_collection.report
213 assert rep_one.step_execution_duration > 1 and rep_one.step_execution_duration < 2
214 assert rep_two.step_execution_duration > 1 and rep_two.step_execution_duration < 2
216 ts = TestStepNoSuperExecute()
218 assert len(ts.reports_collection.report) == 1
219 rep = ts.reports_collection.report[0]
220 assert rep.step_execution_duration < 1
223 def test_store_state_with_cleanup():
225 ts = TestCleanupStepA(cleanup=True)
226 ts_b = TestCleanupStepB(cleanup=True)
227 ts_b.add_step(TestCleanupStepC(cleanup=True))
229 ts.add_step(TestCleanupStepD(cleanup=True))
232 assert len(ts.reports_collection.report) == 8
233 (rep_cleanup_step_4, rep_cleanup_step_3, rep_cleanup_step_2, rep_cleanup_step_1,
234 rep_exec_step_4, rep_exec_step_3, rep_exec_step_2, rep_exec_step_1) = ts.reports_collection.report
235 assert rep_exec_step_1.step_description == "[Test] TestCleanupStepC: Test cleanup step C"
236 assert rep_exec_step_2.step_description == "[Test] TestCleanupStepB: Test cleanup step B"
237 assert rep_exec_step_3.step_description == "[Test] TestCleanupStepD: Test cleanup step D"
238 assert rep_exec_step_4.step_description == "[Test] TestCleanupStepA: Test cleanup step A"
239 assert rep_cleanup_step_1.step_description == "[Test] TestCleanupStepA cleanup: Test cleanup step A"
240 assert rep_cleanup_step_2.step_description == "[Test] TestCleanupStepB cleanup: Test cleanup step B"
241 assert rep_cleanup_step_3.step_description == "[Test] TestCleanupStepC cleanup: Test cleanup step C"
242 assert rep_cleanup_step_4.step_description == "[Test] TestCleanupStepD cleanup: Test cleanup step D"