def test_aggregation(self): reader = self.get_reader() obj = FunctionalAggregator() obj.prepare() obj.add_underling(reader) obj.process_readers() tree = obj.cumulative_results self.assertEqual({"Tests2", "Tests1"}, set(tree.test_suites())) self.assertEqual(len(tree.test_cases("Tests1")), 8) self.assertEqual(len(tree.test_cases("Tests2")), 3) obj.post_process()
def test_report_transactions_as_failed(self): self.configure({ "execution": [{ "test-mode": "apiritif", "iterations": 1, "scenario": { "default-address": "http://httpbin.org", "requests": [{ "label": "failure by 404", "url": "/status/404", }] } }] }) self.obj.engine.aggregator = FunctionalAggregator() self.obj.prepare() try: self.obj.startup() while not self.obj.check(): time.sleep(self.obj.engine.check_interval) finally: self.obj.shutdown() self.obj.post_process() self.assertNotEquals(self.obj.process, None) reader = LoadSamplesReader( os.path.join(self.obj.engine.artifacts_dir, "apiritif.0.ldjson"), self.obj.log) samples = list(reader._read(last_pass=True)) self.assertEqual(len(samples), 1) tstmp, label, concur, rtm, cnn, ltc, rcd, error, trname, byte_count = samples[ 0] self.assertIsNotNone(error)
def test_setup_exception(self): """ Do not crash when test's setUp/setUpClass fails :return: """ self.obj.execution.merge({"scenario": { "script": RESOURCES_DIR + "selenium/python/test_setup_exception.py" }}) self.obj.engine.aggregator = FunctionalAggregator() self.obj.prepare() self.obj.startup() while not self.obj.check(): time.sleep(self.obj.engine.check_interval) diagnostics = "\n".join(self.obj.get_error_diagnostics()) self.assertIn("Nothing to test", diagnostics)
def test_func_mode(self): self.obj.engine.aggregator = FunctionalAggregator() self.obj.execution.merge({ "iterations": 10, "scenario": {"script": RESOURCES_DIR + "selenium/invalid/SimpleTest.java"}, }) self.obj.settings.merge({"junit-version": 5}) self.obj.prepare() self.obj.engine.aggregator.prepare() self.obj.startup() while not self.obj.check(): time.sleep(self.obj.engine.check_interval) self.obj.shutdown() self.obj.post_process() self.obj.engine.aggregator.post_process() self.assertTrue(self.obj.has_results()) self.assertTrue(self.obj.report_file.endswith(".ldjson")) self.assertIsInstance(self.obj.reader, FuncSamplesReader)
def test_func_mode(self): self.obj.engine.aggregator = FunctionalAggregator() self.obj.execution.merge({ "iterations": 10, "scenario": {"script": RESOURCES_DIR + "selenium/invalid/SimpleTest.java"}, }) self.obj.settings.merge({"junit-version": 5}) self.obj._compile_scripts = lambda: None self.obj.prepare() self.obj.engine.aggregator.prepare() self.obj.engine.start_subprocess = lambda **kwargs: None self.obj.startup() self.obj.post_process() self.obj.engine.aggregator.post_process() self.obj.reader.report_reader.json_reader.file.close() self.assertTrue(self.obj.report_file.endswith(".ldjson")) self.assertIsInstance(self.obj.reader, FuncSamplesReader)
def test_status_skipped(self): self.configure({ "execution": [{ "iterations": 1, "scenario": { "script": RESOURCES_DIR + "functional/test_all.py" } }] }) self.obj.engine.aggregator = FunctionalAggregator() self.obj_prepare() try: self.obj.startup() while not self.obj.check(): time.sleep(self.obj.engine.check_interval) finally: self.obj.shutdown() self.obj.post_process() reader = FuncSamplesReader(os.path.join(self.obj.engine.artifacts_dir, "apiritif.0.ldjson"), self.obj.engine, self.obj.log) samples = list(reader.read(last_pass=True)) self.assertEqual(len(samples), 4) self.assertIsNotNone(samples[-1].status)
def test_listeners(self): listener = MockFunctionalListener() obj = FunctionalAggregator() obj.prepare() obj.add_underling(self.get_reader()) obj.add_listener(listener) obj.check() obj.post_process() self.assertEqual(len(listener.results), 1)