def test_run_test_false_outcome2(self, progress): model_test = ModelTest() model_test.outcomes = [self.true_outcome1, self.false_outcome1] results = run_tests((model_test, ), Model(), progress) status, _ = results[model_test] assert status is False
def test_run_test_infeasible_solution(self, mock_optimize_infeasible, progress): model_test = ModelTest() model_test.outcomes = [self.true_outcome1, self.false_outcome1] results = run_tests((model_test, ), Model(), progress) status, solution = results[model_test] assert solution is mock_optimize_infeasible assert status is False
def test_restore_initial_get_original_called(self, mock_get_original_settings, progress): original_settings = mock_get_original_settings assert GEMEditor.analysis.model_test._get_original_settings.called is False model_test = ModelTest() model_test.outcomes = [self.true_outcome1] results = run_tests((model_test, ), Model(), progress) status, _ = results[model_test] assert GEMEditor.analysis.model_test._get_original_settings.called is True for x in original_settings: assert x.do.called is True
def test_value_restored(self, progress): model_test = ModelTest() self.setting2.do = Mock() model_test.reaction_settings = [self.setting1, self.setting2] assert self.setting2.do.called is False assert self.reaction1 is self.setting1.reaction results = run_tests((model_test, ), Model(), progress) status, _ = results[model_test] assert self.setting2.do.called is True assert self.reaction1.upper_bound == self.r1_init_setting.upper_bound assert self.reaction1.lower_bound == self.r1_init_setting.lower_bound assert self.reaction1.objective_coefficient == self.r1_init_setting.objective_coefficient
def run_tests(self, selected=()): if not self.model.tests: return elif not selected: # Run all tests if no selection specified selected = self.model.tests with ProgressDialog(title="Running tests..") as progress: try: test_results = run_tests(selected, self.model, progress) except Exception as e: LOGGER.exception("Error running tests") QMessageBox().critical(None, "Error", "The following error occured " "while running the tests:\n{}".format(str(e))) return mapping = self.dataTable.get_item_to_row_mapping() num_passed = 0 self.dataTable.blockSignals(True) for testcase, result in test_results.items(): row = mapping[testcase] status, solution = result if status: num_passed += 1 self.dataTable.set_status(row, solution, status) self.dataTable.blockSignals(False) self.dataTable.all_data_changed() if num_passed == 0: self.statusBar.setStyleSheet("color: red; font-weight: bold;") elif num_passed == len(test_results): self.statusBar.setStyleSheet("color: green; font-weight: bold;") else: self.statusBar.setStyleSheet("color: orange; font-weight: bold;") self.statusBar.showMessage("{0!s} out of {1!s} tests passed!".format(num_passed, len(test_results)), 4000)