MarekSuchanek / labelord_tests

Tests for MI-PYT Labelord homework https://github.com/cvut/MI-PYT
Creative Commons Zero v1.0 Universal
3 stars 2 forks source link

test_no_repos #18

Closed vanclmil closed 6 years ago

vanclmil commented 6 years ago

Ahoj, jak prosím funguje tenhle test test_bad_config.test_no_repos? Háže mi to:

    def test_no_repos(client_maker, capsys):
        # Test exit code and message for config without repos
        with pytest.raises(SystemExit) as info:
>           client_maker('config_norepos')
E           Failed: DID NOT RAISE <class 'SystemExit'>

ale přitom nikde v debugu neodchytím kde to běží (pouze ) inject_session a reload_config. Díky, Milan

hroncok commented 6 years ago

Asi tuším, kde je problém. Testy předpokládají, že aplikace zařve s příslušným exit codem už při vytvoření testovacího klienta, tedy že se všechny podstatné věci stanou hned na začátku. Je to proto, že předpokládá využití určitých mechanismů, které zajistí načítání konfigurace ještě před prvním requestem (do aplikace).

Dle zadání je ale třeba načíst konfiguraci předtím, než provádíme první request (na GitHub), proto je asi v testu chyba (špatný předpoklad).

Pomůže, když test mírně změníš na:

    with pytest.raises(SystemExit) as info:
        client_maker('config_norepos')
        client.get('/')
    ...

?

MarekSuchanek commented 6 years ago

V client_maker se volá reload_config, v rámci kterého by měla proběhnout kontrola konfigurace (když explicitně voláme, že chceme načíst konfiguraci).

V reálném případě stačí konfiguraci kontrolovat stylem lazy (až je to potřeba) nebo před prvním požadavkem ("implicitní" načtení při inicializaci app).

vanclmil commented 6 years ago

Ok, to bylo ono, díky

hroncok commented 6 years ago

Je třeba to v testech opravit.