@pytest.fixture def dummy_passengers(): # Based on passenger 2 (high passenger class female) passenger2 = {'PassengerId': 2, 'Pclass': 1, 'Name': ' Mrs. John', 'Sex': 'female', 'Age': 38.0, 'SibSp': 1, 'Parch': 0, 'Ticket': 'PC 17599', 'Fare': 71.2833, 'Embarked': 'C'} return passenger2 def test_dt_invariance(dummy_titanic_dt, dummy_passengers): model = dummy_titanic_dt _, p2 = dummy_passengers # Get original survival probability of passenger 2 test_df = pd.DataFrame.from_dict([p2], orient='columns') X, y = get_feats_and_labels(prep_df(test_df)) p2_prob = model.predict(X)[0] # 1.0 # Change name from John to Berns (without changing gender or title) p2_name = p2.copy() p2_name['Name'] = ' Mrs. Berns' test_df = pd.DataFrame.from_dict([p2_name], orient='columns') X, y = get_feats_and_labels(prep_df(test_df)) p2_name_prob = model.predict(X)[0] # 1.0 # Change ticket number from 'PC 17599' to 'A/5 21171' p2_ticket = p2.copy() p2_ticket['ticket'] = 'A/5 21171' test_df = pd.DataFrame.from_dict([p2_ticket], orient='columns') X, y = get_feats_and_labels(prep_df(test_df)) p2_ticket_prob = model.predict(X)[0] # 1.0 assert p2_prob == p2_name_prob == p2_ticket_prob