def test_z_score_when_control_and_alternative_have_perfect_conversion(self): experiment = Experiment.find_or_create( self.redis, 'link_color', 'blue', 'red') experiment.save() control = Alternative(self.redis, 'blue', 'link_color') control.completed_count = 10 control.participant_count = 10 alternative = Alternative(self.redis, 'red', 'link_color') alternative.completed_count = 8 alternative.participant_count = 8 assert alternative.z_score is None
def test_z_score_when_control_and_alternative_have_perfect_conversion( self): experiment = Experiment.find_or_create(self.redis, 'link_color', 'blue', 'red') experiment.save() control = Alternative(self.redis, 'blue', 'link_color') control.completed_count = 10 control.participant_count = 10 alternative = Alternative(self.redis, 'red', 'link_color') alternative.completed_count = 8 alternative.participant_count = 8 assert alternative.z_score is None
def test_reset_an_experiment(self): Experiment.find_or_create(self.redis, 'link_color', 'blue', 'red') red = Alternative(self.redis, 'red', 'link_color') blue = Alternative(self.redis, 'blue', 'link_color') red.participant_count = 5 blue.participant_count = 6 response = self.client.post('/split/link_color/reset') assert_redirects(response, '/split/') assert red.participant_count == 0 assert blue.participant_count == 0
def test_can_be_reset(self): alternative = Alternative(self.redis, 'Basket', 'basket_text') alternative.participant_count = 10 alternative.completed_count = 4 alternative.reset() assert alternative.participant_count == 0 assert alternative.completed_count == 0
def test_reset_an_experiment_if_loaded_with_different_alternatives(self): experiment = Experiment(self.redis, 'link_color', 'blue', 'red', 'green') experiment.save() blue = Alternative(self.redis, 'blue', 'link_color') blue.participant_count = 5 blue.save() same_experiment = Experiment.find_or_create(self.redis, 'link_color', 'blue', 'yellow', 'orange') alternative_names = [a.name for a in same_experiment.alternatives] assert alternative_names == ['blue', 'yellow', 'orange'] new_blue = Alternative(self.redis, 'blue', 'link_color') assert new_blue.participant_count == 0
def test_reset_an_experiment_if_loaded_with_different_alternatives(self): experiment = Experiment( self.redis, 'link_color', 'blue', 'red', 'green') experiment.save() blue = Alternative(self.redis, 'blue', 'link_color') blue.participant_count = 5 blue.save() same_experiment = Experiment.find_or_create( self.redis, 'link_color', 'blue', 'yellow', 'orange') alternative_names = [a.name for a in same_experiment.alternatives] assert alternative_names == ['blue', 'yellow', 'orange'] new_blue = Alternative(self.redis, 'blue', 'link_color') assert new_blue.participant_count == 0
def test_z_score(self): Experiment.find_or_create(self.redis, 'Treatment', 'Control', 'Treatment A', 'Treatment B', 'Treatment C') control = Alternative(self.redis, 'Control', 'Treatment') control.participant_count = 182 control.completed_count = 35 treatment_a = Alternative(self.redis, 'Treatment A', 'Treatment') treatment_a.participant_count = 180 treatment_a.completed_count = 45 treatment_b = Alternative(self.redis, 'Treatment B', 'Treatment') treatment_b.participant_count = 189 treatment_b.completed_count = 28 treatment_c = Alternative(self.redis, 'Treatment C', 'Treatment') treatment_c.participant_count = 188 treatment_c.completed_count = 61 assert control.z_score is None assert round(treatment_a.z_score, 2) == 1.33 assert round(treatment_b.z_score, 2) == -1.13 assert round(treatment_c.z_score, 2) == 2.94
def test_conversion_rate_does_something(self): alternative = Alternative(self.redis, 'Basket', 'basket_text') alternative.participant_count = 10 alternative.completed_count = 4 assert alternative.conversion_rate == 0.4