def testDeprecatedApi_is_failed(self): report = Report(self.report_name) with self.assertRaises(NotImplementedError): report.is_failed()
class BaseTarget(KittyObject): ''' BaseTarget contains the common logic and behaviour of all target. ''' def __init__(self, name='BaseTarget', logger=None): super(BaseTarget, self).__init__(name, logger) self.controller = None self.monitors = [] self.report = Report(name) self.test_number = None self.fuzzer = None def set_fuzzer(self, fuzzer): self.fuzzer = fuzzer def set_controller(self, controller): ''' Set a controller ''' self.controller = controller def add_monitor(self, monitor): ''' Add a monitor ''' self.monitors.append(monitor) def setup(self): ''' Make sure the target is ready for fuzzing, including monitors and controllers ''' if self.controller: self.controller.setup() for monitor in self.monitors: monitor.setup() def teardown(self): ''' Clean up the target once all tests are completed ''' if self.controller: self.controller.teardown() for monitor in self.monitors: monitor.teardown() def pre_test(self, test_num): ''' Called when a test is started ''' self.test_number = test_num self.report = Report(self.name) if self.controller: self.controller.pre_test(test_number=self.test_number) for monitor in self.monitors: monitor.pre_test(test_number=self.test_number) self.report.add('test_number', test_num) self.report.add('state', 'STARTED') def post_test(self, test_num): ''' Called when test is completed, a report should be prepared now ''' if self.controller: self.controller.post_test() for monitor in self.monitors: monitor.post_test() self.report.add('state', 'COMPLETED') if self.controller: controller_report = self.controller.get_report() self.report.add('controller', controller_report) for monitor in self.monitors: current_report = monitor.get_report() self.report.add(current_report.get('name'), current_report) if self.report.is_failed(): self.report.failed() if self.report.is_failed(): self.logger.warning('!!! Test %d failed !!!' % (test_num)) def get_report(self): return self.report def get_session_data(self): ''' Session related data dictionary to be used by data model. :return: dictionary (str, bytes) ''' return {}