SPB Git
1.9 KB · 37 lines python
1import pytest2from traite import comparables as cp34def test_additif_et_multiplicatif():5    assert cp.prix_ajuste_additif(400_000, {"sup": 12_000, "garage": -8_000}) == 404_0006    assert cp.prix_ajuste_multiplicatif(400_000, [0.03, -0.02]) == pytest.approx(400_000 * 1.03 * 0.98)7    m = cp.prix_ajuste_mixte(400_000, [0.03], {"garage": -8_000})8    assert m["prix_ajuste"] == pytest.approx(412_000 - 8_000)910def test_ajustement_temps():11    assert cp.ajustement_temps(400_000, 120, 126) == pytest.approx(20_000)12    assert cp.ajustement_temps_taux(400_000, 0.06, 12) == pytest.approx(24_000)13    assert cp.ajustement_temps_taux(400_000, 0.06, 6) == pytest.approx(400_000 * (1.06 ** 0.5 - 1))1415def test_ventes_appariees():16    r = cp.ventes_appariees([410_000, 425_000, 398_000], [395_000, 412_000, 380_000])17    assert r["n"] == 3 and r["moyenne"] == pytest.approx(15_333.333) and r["mediane"] == 15_0001819def test_brut_net_et_reconciliation():20    comps = [cp.ComparableAjuste("A", 400_000, {"t": 8_000, "s": -4_000}),21             cp.ComparableAjuste("B", 420_000, {"t": -10_000, "s": 2_000}),22             cp.ComparableAjuste("C", 390_000, {"t": 0, "s": 20_000})]23    assert comps[0].brut_pct == pytest.approx(0.03) and comps[0].net_pct == pytest.approx(0.01)24    w = cp.poids_inverse_brut(comps)25    assert sum(w) == pytest.approx(1.0) and w[0] > w[2]   # A a le plus petit ajustement brut26    r = cp.reconciliation(comps, w)27    assert r["min"] <= r["valeur_ponderee"] <= r["max"]28    assert r["mediane"] == 410_00029    with pytest.raises(ValueError):30        cp.reconciliation(comps, [0.5, 0.5, 0.5])3132def test_distance_et_log():33    d = cp.distance_attributs({"s": 150, "a": 20}, {"s": 170, "a": 10}, {"s": 20, "a": 10})34    assert d == pytest.approx((1 + 1) ** 0.5)35    assert cp.ajustement_depuis_coefficient_log(0.0953) == pytest.approx(0.10, abs=1e-3)36    assert cp.ajustement_depuis_coefficient_log_sans_biais(0.0953, 0.0) == pytest.approx(0.10, abs=1e-3)37
Files · 185d04a62ff66f3d004407340590d377c512efce
Menu

Theme