Finální verze projektu - #208
Conversation
turecekt
left a comment
There was a problem hiding this comment.
Doplnit unit testy aby procházel pytest a opravit formátování aby procházel kontrola flake8
| # Deklarace proměnné typu string, | ||
| # která následně určuje, jestli se má program ukončit | ||
| zadani = " " | ||
|
|
||
| # Cyklus, při kterém program běží, dokud není na konci zadáno A pro ukončení | ||
| while zadani != 'a': | ||
| rimZad = "" | ||
| arZad = 0 | ||
| rim = 0 | ||
|
|
||
| # Cyklus, při kterém běží input do doby, než uživatel zadá validní hodnotu | ||
| while rim < 1 or rim > 3999: | ||
| rimZad = input("Zadej římské: ") | ||
| x = rimZad.isnumeric() | ||
|
|
||
| # Obsahuje-li římské zadání číslo, jedná se o chybu | ||
| if x == 1: | ||
| print("Nezadal jsi římské číslo.") | ||
|
|
||
| # Pokud je vše zadáno správně, program pokračuje dál | ||
| else: | ||
| if rimZad.islower(): | ||
| rimZad = rimZad.upper() | ||
| rim = Prevod().naar(rimZad) | ||
|
|
||
| # Pokud se výsledek nachází v intervalu | ||
| # pro platnost, program vypíše výsledek | ||
| if 0 < rim < 4000: | ||
| print(rimZad + str(" = ") + str(rim)) | ||
|
|
||
| # Je-li výsledná hodnota mimo interval | ||
| # pro platnost, program zahlásí chybu | ||
| else: | ||
| print("Chybné zadání.") | ||
|
|
||
| # Cyklus, který běží po dobu, dokud není správně zadané číslo | ||
| while arZad < 1 or arZad > 3999: | ||
| arZad = str(input("Zadej arabské: ")) | ||
| x = arZad.isnumeric() | ||
|
|
||
| # Kontrola, jestli bylo správně zadáno číslo v zadání | ||
| if x == 1: | ||
| arZad = int(arZad) | ||
| # Převod proměnné typu string na integer | ||
|
|
||
| # Pokud se zadané číslo nenachází v | ||
| # platném rozsahu, program zahlásí chybu | ||
| if arZad < 1 or arZad > 3999: | ||
| print("Chybné zadání.") | ||
|
|
||
| # V opačném případě se provede převod | ||
| else: | ||
| print(str(arZad) + str(" = ") + Prevod().narim(arZad)) | ||
|
|
||
| # Nebylo-li zadáno číslo, program zahlásí chybu | ||
| else: | ||
| print("Nezadal jsi číslo.") | ||
| arZad = 0 | ||
| # Zápis hodnoty, aby při špatném zadání neskončil cyklus | ||
|
|
||
| # Ukončovací dialog programu | ||
| zadani = input("Přejete si ukončit program? (A/N)\n") | ||
|
|
||
| # Podmínka pro not-case-sensitive zadání pro ukončení | ||
| if zadani.isupper(): | ||
| zadani = zadani.lower() | ||
| # Převod velkého písmena na malé |
There was a problem hiding this comment.
Toto dát pod podmínku if __name__ == "__main__"
turecekt
left a comment
There was a problem hiding this comment.
stále nejsou unit testy aby bylo dostatečné pokrytí kódu testy a opravené formátování aby procházela kontrola flake8
|
Dobrý den, nevím co by mohlo být za problém, unit testy mi vždy projdou bez chyby. |
| # Testovací příkazy, je možné přehlédnout.. | ||
| # print(Prevod().narim(3999)) | ||
| # print(Prevod().naar("MMMCMXCIX")) |
There was a problem hiding this comment.
| # Testovací příkazy, je možné přehlédnout.. | |
| # print(Prevod().narim(3999)) | |
| # print(Prevod().naar("MMMCMXCIX")) | |
| def test_prevod(): | |
| """Testovací příkazy.""" | |
| assert Prevod().narim(3999) == "MMMCMXCIX" | |
| assert Prevod().naar("MMMCMXCIX") == 3999 |
|
Jaké jsou přesně kritéria, aby ten pytest prošel? Co všechno to kontroluje? |
turecekt
left a comment
There was a problem hiding this comment.
Obecně pytest volá všechny funkce s podporovanými keywordy v názvu (např. prefix test_), které najde ve zdrojovém kódu projektu.
Funkce test_prevod pomocí dvou assertů kontrolovalo správnost návratů vámi implementovaných funkcí narim a naar pro vybranou hodnotu vstupního parametru.
Funkci test_prevod vraťte zpátky a povolte si provádění workflow Python checker (python_checker.yml) v actions, zde: https://github.com/A21015/vs_project/actions
Při každém odjetí do repozitáře se následně test automaticky spustí a v actions uvidíte průběh/výsledek.
turecekt
left a comment
There was a problem hiding this comment.
Ještě prosím přesunout soubor main.py do kořenového adresáře.
turecekt
left a comment
There was a problem hiding this comment.
Zkuste ještě zrušit tu třídu viz navrhované úpravy, stejně není využito OOP, mohlo by se to už vyjít do limitu pokrytí kódu testy 66% viz Checks/Actions. Pokud ne, tak proveďte ještě nějaký refaktoring kódu na zkrácení počtu řádků mimo funkce, které máte již pokryté testy.
Následně pak upravte chyby, které bude následně vracet flake8.
| class Prevod: | ||
| def __init__(self): | ||
| pass |
There was a problem hiding this comment.
| class Prevod: | |
| def __init__(self): | |
| pass |
| pass | ||
|
|
||
| # Metoda pro převod z arabských čísel na římská | ||
| @staticmethod |
| return " " # Vrátí zpět pouze mezeru | ||
|
|
||
| # Metoda pro převod z římských čísel na arabské | ||
| @staticmethod |
|
|
||
| # Cyklus, při kterém program běží, dokud | ||
| # není na konci zadáno A pro ukončení | ||
| while zadani != 'a': |
There was a problem hiding this comment.
| while zadani != 'a': | |
| while zadani.lower() != 'a': |
|
|
||
| # Podmínka pro not-case-sensitive zadání pro ukončení | ||
| if zadani.isupper(): | ||
| zadani = zadani.lower() | ||
| # Převod velkého písmena na malé |
There was a problem hiding this comment.
| # Podmínka pro not-case-sensitive zadání pro ukončení | |
| if zadani.isupper(): | |
| zadani = zadani.lower() | |
| # Převod velkého písmena na malé |
| assert Prevod().narim(3999) == 'MMMCMXCIX' | ||
| assert Prevod().narim(3888) == 'MMMDCCCLXXXVIII' | ||
| assert Prevod().narim(2421) == 'MMCDXXI' | ||
| assert Prevod().narim(15) == 'XV' |
There was a problem hiding this comment.
| assert Prevod().narim(3999) == 'MMMCMXCIX' | |
| assert Prevod().narim(3888) == 'MMMDCCCLXXXVIII' | |
| assert Prevod().narim(2421) == 'MMCDXXI' | |
| assert Prevod().narim(15) == 'XV' | |
| assert narim(3999) == 'MMMCMXCIX' | |
| assert narim(3888) == 'MMMDCCCLXXXVIII' | |
| assert narim(2421) == 'MMCDXXI' | |
| assert narim(15) == 'XV' |
| assert Prevod().naar("MMMCMXCIX") == 3999 | ||
| assert Prevod().naar("MMMDCCCLXXXVIII") == 3888 | ||
| assert Prevod().naar("MMCDXXI") == 2421 | ||
| assert Prevod().naar("XV") == 15 |
There was a problem hiding this comment.
| assert Prevod().naar("MMMCMXCIX") == 3999 | |
| assert Prevod().naar("MMMDCCCLXXXVIII") == 3888 | |
| assert Prevod().naar("MMCDXXI") == 2421 | |
| assert Prevod().naar("XV") == 15 | |
| assert naar("MMMCMXCIX") == 3999 | |
| assert naar("MMMDCCCLXXXVIII") == 3888 | |
| assert naar("MMCDXXI") == 2421 | |
| assert naar("XV") == 15 |
No description provided.