def test_fitness_values_two_fitness_functions(chromosome, fitness_function): chromosome.add_fitness_function(fitness_function) chromosome._update_fitness_values(fitness_function, ff.FitnessValues(0.42, 0.1)) fitness_func2 = MagicMock(ff.FitnessFunction) fitness_func2.is_maximisation_function.return_value = False chromosome.add_fitness_function(fitness_func2) chromosome._update_fitness_values(fitness_func2, ff.FitnessValues(0.23, 0.5)) assert len(chromosome.fitness_values) == 2
def test_fitness_two_fitness_functions(chromosome, fitness_function): chromosome.add_fitness_function(fitness_function) chromosome._update_fitness_values(fitness_function, ff.FitnessValues(0.42, 0.1)) fitness_func2 = MagicMock(ff.FitnessFunction) fitness_func2.is_maximisation_function.return_value = False chromosome.add_fitness_function(fitness_func2) chromosome._update_fitness_values(fitness_func2, ff.FitnessValues(0.23, 0.5)) chromosome.set_changed(False) assert chromosome.get_fitness() == 0.65 assert chromosome.get_coverage() == 0.3
def test_values_for_fitness_function(chromosome, fitness_function): chromosome.add_fitness_function(fitness_function) chromosome._update_fitness_values(fitness_function, ff.FitnessValues(5, 0.5)) chromosome.set_changed(False) assert chromosome.get_fitness_for(fitness_function) == 5 assert chromosome.get_coverage_for(fitness_function) == 0.5
def chromosome(): chrom = tsc.TestSuiteChromosome() fitness_func = MagicMock(ff.FitnessFunction) chrom.add_fitness_function(fitness_func) chrom._update_fitness_values(fitness_func, ff.FitnessValues(0, 0)) chrom.set_changed(False) return chrom
def compute_fitness_values( self, individual: tcc.TestCaseChromosome) -> ff.FitnessValues: result = self._run_test_case_chromosome(individual) merged_trace = analyze_results([result]) tracer: ExecutionTracer = self._executor.tracer return ff.FitnessValues( compute_branch_distance_fitness(merged_trace, tracer.get_known_data()), compute_branch_coverage(merged_trace, tracer.get_known_data()), )
def compute_fitness_values( self, individual: tsc.TestSuiteChromosome, ) -> ff.FitnessValues: results = self._run_test_suite(individual) _, merged_trace = self.analyze_traces(results) tracer: ExecutionTracer = self._executor.get_tracer() return ff.FitnessValues( self._compute_fitness(merged_trace, tracer.get_known_data()), self._compute_coverage(merged_trace, tracer.get_known_data()), )
def test_illegal_values(chromosome, fitness_function): fitness_function.compute_fitness_values.return_value = ff.FitnessValues( -1, 1.5) chromosome.add_fitness_function(fitness_function) with pytest.raises(RuntimeError): chromosome.get_fitness()
def test_validation_both_wrong(): values = ff.FitnessValues(-1, 5) assert len(values.validate()) == 2
def test_validation_wrong_coverage(): values = ff.FitnessValues(0, 5) assert len(values.validate()) == 1
def test_validation_wrong_fitness(): values = ff.FitnessValues(-1, 0) assert len(values.validate()) == 1
def test_validation_ok(): values = ff.FitnessValues(0, 0) assert len(values.validate()) == 0
def compute_fitness_values( self, individual: tcc.TestCaseChromosome) -> ff.FitnessValues: result = self._run_test_case_chromosome(individual) return ff.FitnessValues(fitness=self._get_fitness(result), coverage=0.0)
def non_zero_fitness_function() -> ff.FitnessFunction: fitness_function = MagicMock(ff.FitnessFunction) result = ff.FitnessValues(fitness=42.0, coverage=0.0) fitness_function.compute_fitness_values.return_value = result return fitness_function