Ahoj,
Můžeš prosím posílat radši kód (textové soubory) než obrázky? Program z obrázků se nedá spustit, a tak se z nich nedá dobře zjistit co je špatně.
A taky nevím který z tvých souborů je "test_blabla".

Každopádně funkce které používají `input` se testují špatně. Jde to, ale je na to potřeba použít trochu pokročilejší možnosti pytestu. Stejně tak se blbě testuje co program vypíše pomocí "print". Doporučuju se do toho pustit až po začátečnickém kurzu, ale se na to chceš vrhnout hned, tady je pár odkazů:

https://naucse.python.cz/course/mi-pyt/intro/testing/
https://projekty.pyladies.cz/static/tasks/handout_files/2019-autumn/test_piskvorky.py
https://docs.pytest.org/en/latest/fixture.html

On 2020-05-09 09:03, Helena Zubčeková wrote:
Nejako to vzalo bez obrázkov, skúšam ešte raz:

Dne sobota 9. května 2020 9:01:33 UTC+2 Helena Zubčeková napsal(a):

    Díky vám obom, tá zátvorka naozaj všetko vyriešila :D
    Zároveň som to ale opravila viac popythonovsky a mám tam to "not
    in". Už to funguje!
    Takže... v test_piskvorky mám funkciu, ktorá overuje, že ten
    nevalidný vstup naozaj vyvolá ValueError:
    A v ai.py, kde tá pôvodná funkcia je, si potrebujem tú exception
    raisnúť a povedať mu, za akých okolností sa to má stať:

    Ešte ma napadá, ako by som skombinovala test_blabla s tým, keď mám v
    tom core.py nejakú chybu ošetrené cez try: except: ....
    napr.:
    Je možné toto ošetrenie tiež nejako overiť v tom mojom test_blabla
    file?
    Ak aj áno, tak mi uniká, čo tým dosiahnem... možno akurát overím, že
    tá funkcia je ošetrená? Povedala by som, že v tomto prípade
    test_blabla file je zbytočný a nemá čo overiť... mám pravdu?

    Ďakujem :)
    Heli



    Dne pátek 8. května 2020 22:03:19 UTC+2 Krystof Pilnacek napsal(a):

        Ahoj,

        z nejakeho duvodu ta podminka ("-" in pole == False)nevypada,
        ze by fungovala jak popisuje Petr. Jejim vysledkem je totiz
        False a proto se ten program cykli. True (coz je hodnota, kterou
        je potreba dostat) se mi povedla dostat, pokud jsem dal zavorku
        kolem "-" in pole, tedy if ("-" in pole) == False:. Pak to
        zacne fungovat.

        Jen mi to neprijde jako spravne Python reseni. Jednak se v
        Pythonu pro porovnavani jestli je neco True/False nepouziva ==
        ale is (stejne jako pro None). A pak jeste v ifech neni potreba
        to porovnani s False, ale pred dany vyraz staci dat not. A aby
        to bylo uplne nej, tak not se v tomto pripade dava pred in (to
        aby to bylo co nejpodobnejsi anglictine). Takze radek if "-" in
        pole == False:by mel vypadat: if "-" not in pole:.

        Doufam, ze to pomuze.
        Hezky vecer
        Krystof

        On Fri, May 8, 2020 at 7:21 PM Helena Zubčeková
        <[email protected]> wrote:

            To dáva zmysel... skúsila som teda to upraviť:
            čiže:
            Ak pole neobsahuje "-", tak vyvolaj Value Error.
            Ale cyklí sa mi to veselo naďalej...

            Moc díky :)
            Heli




            Dne pátek 8. května 2020 19:03:35 UTC+2 Petr Viktorin napsal(a):

                `On 2020-05-08 18:40, Helena Zubčeková wrote:
                 > Ahoj,
                 >
                 > Myslím, že som pohopila, čo myslíš, ale stále neviem,
                ako opraviť svoj
                 > kód...
                 > Mala by som teda v ai.py, kde mám funkciu
                tah_pocitace, pridať nejaké
                 > ošetrenie situácie, keď v "pole" nemám žiadnu "-", čo
                znamená, že už tam
                 > nie sú voľné miesta. Napísala som toto:

                 > try:
                 >     "-" in pole == True
                 > except Value:
                 >     print("Pole je plné")
                 > (zbytek programu)



                Řekněme že jsem Python a jdu udělat co mi tenhle program
                přikazuje.
                Řekněme že pole je 'oxoxoxoxoxoxoxoxoxox', tedy
                neobsahuje pomlčku.

                `try:` -- hmm, tady asi nastane nějaká výjimka, budu na
                to připravený!

                `"-" in pole == True` -- to je složitý výraz, vyhodnotím
                ho postupně.
                žádá pomlčka v `pole` není, takže `"-" in pole` neplatí;
                můžu za to
                dosadit False. Z `"-" in pole == True` se stane `False
                == True`. To
                neplatí, takže hodnota celého výrazu je False.
                S výrazem `"-" in pole == True` nemám nic dělat, tak na
                výsledek `False`
                zapomenu.

                `except Value:` -- žádná výjimka nenastala, tak celý
                `except` blok
                přeskočím.

                A teď  Python dostane ke zbytku programu, který se, jak
                víme z
                dřívějška, zacyklí.



                Když tenhle kousek programu přeložím z Pythonu do
                češtiny, dostanu:

                zkus:
                      spočítat jestli "pole obsahuje pomlčku" je rovno
                "pravdě"
                a když se to nepovede:
                      napiš "pole je plné!"

                Tady je možná líp vidět, proč to nedělá co má. Tenhle
                program reaguje na
                případné výjimky (try/except), ale žádné výjimky
                nezpůsobuje! Přitom
                právě vyvolání výjimky je správná reakce na nekorektní
                vstup jako
                pole='oxoxoxoxoxoxoxoxoxox'.


                 > Ale keď skúšam zavolať test_piskvorky.py, tak sa mi
                to stále zacyklí,
                 > rovnako, ako predtým... Myslím, že nerozumiem, ako
                spolu komunikujú
                 > súbory text_piskvorky.py a ai.py, aký je medzi nimi
                vzťah. Ak
                 > test_piskorky raisuje chybu za určitých okolností,
                tak ai.py má mať
                 > try:except blok? Alebo vôbec nie?
                 > Zatiaľ tomu rozumiem tak, že test_piskvorky skúša
                funkciu s použitím
                 > nesprávneho vstupu, a raisuje chybu, ak tam je, a
                potom ten core súbor
                 > (v tomto prípade ai.py) potrebuje mať takúto chybu
                nejako ošetrenú?
                 > takže try-except? Až na to, že toto to nefunguje,
                možno to bude tým, že
                 > ak "-" in pole == True nie je pravdivé, tak tá chyba
                nie je ValueError...
                 >
                 > Som hodne zmätená. Díky za radu,
                 > Heli
                 >
                 >
                 > Dne úterý 5. května 2020 12:58:52 UTC+2 Petr Viktorin
                napsal(a):
                 >
                 >     On 2020-05-01 15:58, Helena Zubčeková wrote:
                 >      > Ahoj,
                 >      >
                 >      > Som v kapitole
                 >      >
                https://naucse.python.cz/course/pyladies/beginners/testing/
                <https://naucse.python.cz/course/pyladies/beginners/testing/>

> <https://naucse.python.cz/course/pyladies/beginners/testing/
                <https://naucse.python.cz/course/pyladies/beginners/testing/>>,
                a
                 >      > nerozumiem, prečo mi test_tah_chyba nefunguje...
                 >      > V príkazovom riadku sa mi program zasekne na
                modro podčiarknutej
                 >     časti,
                 >      > a musím to ukončiť ctrl+C...
                 >      >
                 >      >
                 >      > Chýba mi niečo v piskvorky.py? Nakoniec som
                tam doplnila túto
                 >     časť (aj
                 >      > keď v materiáloch to vyslovene povedané nie
                je, ale naznačené to
                 >     asi je):
                 >      > Ale nepomohlo to. Nedáva mi to aj tak moc
                zmysel, pretože vtedy,
                 >     keď je
                 >      > na rade počítač, nemôže mať plné pole...
                pretože najprv hrá hráč,
                 >     potom
                 >      > počítač, obaja doplňujú po jednom písmene, a
                pole má párny počet
                 >     polí...
                 >      >
                 >      > Moc díky za radu :) snažím sa to pochopiť, a z
                materiálov mi nie je
                 >      > jasné, čo je zle a prečo sa mi to cyklí/zasekáva.
                 >      >
                 >      > Heli
                 >
                 >     Ahoj!
                 >     Zkus tu funkci zavolat, tak jak ji volá test:
                 >
                 >     piskvorky.tah_pocitace('oxoxoxoxoxoxoxoxoxox')
                 >
                 >     V téhle situaci funkce tah_pocitace nemůže nic
                rozumného vrátit.
                 >     Správná
                 >     reakce na tuhle situaci je tedy vyvolání výjimky,
                třeba ValueError.
                 >     Místo toho to vypadá, že se tvoje funkce zacyklí:
                vybírá pořád dokola
                 >     náhodné pozice, a nikdy nevybere volnou pozici na
                kterou jde hrát.
                 >     Je tedy potřeba změnit funkci tah_pocitace: když
                v hracím poli není
                 >     volné místo, vyhoď výjimku.
                 >
                 >     Je pravda, že když správně napíšeš program který
                tuhle funkci volá, tak
                 >     k téhle situaci nedojde. Ale co když ho napíšeš
                špatně? Co když budeš
                 >     pracovat v týmu, a jeden z tvých kolegů bude
                chtít tah_pocitace
                 >     použít v
                 >     jiném programu?
                 >     `test_tah_chyba` testuje funkci jako takovou, ne
                jen způsob jak ji
                 >     Piškvorky volají.
                 >
                 > --
                 > --
                 > E-mailová skupina [email protected]
                 > Správa: http://groups.google.cz/group/django-cs
                <http://groups.google.cz/group/django-cs>
                 > ---
                 > Tuto zprávu jste obdrželi, protože jste přihlášeni k
                odběru skupiny
                 > „django-cs“ ve Skupinách Google.
                 > Chcete-li zrušit odběr skupiny a přestat dostávat
                e‑maily ze skupiny,
                 > zašlete e-mail na adresu [email protected]
                 > <mailto:[email protected]>.
                 > Chcete-li tuto diskusi zobrazit na webu, navštivte
                 >
                
https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com
                
<https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com>

                 >
                
<https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com?utm_medium=email&utm_source=footer
                
<https://groups.google.com/d/msgid/django-cs/66df6009-4404-4159-ac90-1cc76bce5519%40googlegroups.com?utm_medium=email&utm_source=footer>>.


-- -- E-mailová skupina [email protected]
            Správa: http://groups.google.cz/group/django-cs
            <http://groups.google.cz/group/django-cs>
            ---
            Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru
            skupiny „django-cs“ ve Skupinách Google.
            Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze
            skupiny, zašlete e-mail na adresu [email protected].
            Chcete-li tuto diskusi zobrazit na webu, navštivte
            
https://groups.google.com/d/msgid/django-cs/c05edfb0-ea9b-4eef-9d2a-38dfa1faaf18%40googlegroups.com
            
<https://groups.google.com/d/msgid/django-cs/c05edfb0-ea9b-4eef-9d2a-38dfa1faaf18%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu [email protected] <mailto:[email protected]>. Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/69b9ca2f-4f02-487f-8b1d-ad3dfed76bfe%40googlegroups.com <https://groups.google.com/d/msgid/django-cs/69b9ca2f-4f02-487f-8b1d-ad3dfed76bfe%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
--- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete 
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/0934d96d-0d53-1ed6-c503-3f1f9518bc25%40gmail.com.

Reply via email to