Python unit test – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Python unit test – Python – Fórum – Programujte.comPython unit test – Python – Fórum – Programujte.com

 

Paragoon20
Newbie
10. 12. 2022   #1
-
0
-

   

Připojen obrázek.

Připojen obrázek.

Dobrý den, potřeboval bych poradit. Mám projekt v pythonu morseovku a potřebuji udělat unit testy aby prošly, ale prošlo to zatim na 11% a errror kdyby někdo věděl jak to napsat. 

Nahlásit jako SPAM
IP: 178.20.142.–
gna
~ Anonymní uživatel
1891 příspěvků
10. 12. 2022   #2
-
0
-

Ve funkci `decoding` máš pracovat s parametrem `s`, ne s globální proměnnou `a`.

Tu interaktivní smyčku spouštěj jen při přímém spuštění skriptu, ne při jeho importu odjinud (z testu). Přímé spuštění poznáš tak, že proměnná `__name__` má hodnotu "__main__".

V tom testu ve funkci `test_coding` budeš testovat funkci `coding` (ne test_coding). A `coding` tedy nebude výsledek vypisovat, ale bude ho vracet jako návratovou hodnotu (příkaz return). To samé pro `decoding`.

`pytest.raises` testuje jestli někde (kdekoliv) v tom bloku dojde k uvedené vyjímce. Ty asi chceš testovat, že všechny ty varianty tu vyjímku vyhodí (a tam mi není jasné proč by "r" mělo házet TypeErrror).

Nahlásit jako SPAM
IP: 213.211.51.–
Paragoon20
Newbie
11. 12. 2022   #3
-
0
-

Popravdě v pythonu moc neumím a musí udělat úkol do školy tak spíš střílím naprázdno

takže expamle by měl vypadat takhle ?

dictionary={'A':'.-', 'B':'-...',
            'C':'-.-.', 'D':'-..', 'E':'.','F':'..-.', 'G':'--.', 'H':'....',
            'I':'..', 'J':'.---', 'K':'-.-','L':'.-..', 'M':'--', 'N':'-.',
            'O':'---', 'P':'.--.', 'Q':'--.-','R':'.-.', 'S':'...', 'T':'-',
            'U':'..-', 'V':'...-', 'W':'.--','X':'-..-', 'Y':'-.--', 'Z':'--..',}
 
dictionary2={'.-':'A','-...':'B','-.-.':'C','-..':'D', '.':'E','..-.':'F','--.':'G','....':'H',
             '..':'I','.---':'J', '-.-':'K','.-..':'L', '--':'M', '-.':'N',
             '---':'O', '.--.':'P', '--.-':'Q','.-.':'R', '...':'S', '-':'T',
             '..-':'U', '...-':'V', '.--':'W','-..-':'X', '-.--':'Y', '--..':'Z',}
 
 
def coding(s):
    void=" "
    for i in s: #indexování
        if i != ' ':
            void+=dictionary[i]+" "
        else:
            void += ' '
 
    print(void)
 
     
def decoding(s):
    void = ""
    splitstring = a.split(" ") #rozdělení podle mezer
    for i in splitstring: #indexování
            void += dictionary2[i]
    print(void)
 
c = 1
while(c!="0"):
    d=int(input("1. Z ČEŠTINY DO MORSEOVKY || 2. Z MORESOVKY DO ČEŠTINY ")) # menu
    a=input("ZADEJ TEXT NA ŠIFROVÁNÍ: ")
    a=a.upper()
 
    sifra="" # nevyužívá se ale bez ní program nelze spustit
 
 
 
 
    if d==1: # šifrování
        coding(a)
 
 
 
    else: # dešifrování
        decoding(a)
 
   
    c = input(("POKUD CHCTE PROGRAM UKONČIT, ZADEJTE 0 || PRO POKRAČOVÁNÍ ZADEJTE LIBOVOLNÝ ZNAK : "))
if __name__ == "__main__

a unit test vubec netusim jak napsat vim ze mam testovat funkci coding a decoding ale nevím jak

Nahlásit jako SPAM
IP: 178.20.142.–
gna
~ Anonymní uživatel
1891 příspěvků
11. 12. 2022   #4
-
0
-

   

# === example.py
def coding(s):
    ...
    return void  # nazev `void` je hodne blby

def decoding(s):
    ...
    return void

def main():
    while ...:
        ...
        if d==1:
            print(coding(vstup))
        else:
            print(decoding(vstup))

if __name__ == "__main__":
    main()

# === test.py
def test_coding():
    assert coding("A") == ".-"
    ...
Nahlásit jako SPAM
IP: 213.211.51.–
Paragoon20
Newbie
12. 12. 2022   #5
-
0
-

#4 gna
 example

"""Morse code."""

dictionary = {'A': '.-', 'B': '-...',
              'C': '-.-.', 'D': '-..', 'E': '.',
              'F': '..-.', 'G': '--.', 'H': '....',
              'I': '..', 'J': '.---', 'K': '-.-',
              'L': '.-..', 'M': '--', 'N': '-.',
              'O': '---', 'P': '.--.', 'Q': '--.-',
              'R': '.-.', 'S': '...', 'T': '-',
              'U': '..-', 'V': '...-', 'W': '.--',
              'X': '-..-', 'Y': '-.--', 'Z': '--..', }

dictionary2 = {'.-': 'A', '-...': 'B', '-.-.': 'C',
               '-..': 'D', '.': 'E', '..-.': 'F',
               '--.': 'G', '....': 'H',
               '..': 'I', '.---': 'J',
               '-.-': 'K', '.-..': 'L',
               '--': 'M', '-.': 'N',
               '---': 'O', '.--.': 'P', '--.-': 'Q',
               '.-.': 'R', '...': 'S', '-': 'T',
               '..-': 'U', '...-': 'V', '.--': 'W',
               '-..-': 'X', '-.--': 'Y', '--..': 'Z', '': ' ', }


def coding(s):
    """Coding."""
    void = ""
    for i in s:  # indexování
        if i != ' ':
            void += dictionary[i]+' '
        else:
            void += ' '

    print(void)


def decoding(s):
    """Coding."""
    void = ""
    splitstring = s.split("  ")
    splitstring = s.split(" ")  # rozdělení podle mezer

    for i in splitstring:  # indexování
        void += dictionary2[i]

    print(void)


def selection(f):
    """Return the pathname of the KOS root directory."""
    f = int(input("1.ČEŠTINA > MORSEOVKA || 2.MORESOVKA > ČEŠTINA "))  # menu
    return f


c = 1
d = 0
while (c != "0"):
    d = selection(d)
    a = input("ZADEJ TEXT NA ŠIFROVÁNÍ: ")
    a = a.upper()

    startUp = ""  # nevyužívá se ale bez ní program nelze spustit

    if d == 1:  # šifrování
        coding(a)

    else:  # dešifrování
        decoding(a)

c = input(("PROGRAM SE UKONČI=0 || POKRAČOVÁNÍ=LIBOVOLNÝ ZNAK : "))
from example import coding
from example import decoding
import pytest


def test_coding_edge_cases():
    assert coding('HELLO') == '.... . .-.. .-.. ---'
    assert coding('Hello,World') == KeyError
    assert coding('1') == KeyError
    assert coding('HELLO world') == '.... . .-.. .-.. ---  .-- --- .-. .-.. -..'
    
test_coding_edge_cases()





def test_decoding_edge_cases():
    assert decoding('.... . .-.. .-.. ---') == 'HELLO'
    assert decoding('.-- --- .-. .-.. -..') == 'WORLD'
    assert decoding('.... . .-.. .-.. ---  .-- --- .-. .-.. -..') == 'HELLO WORLD'
    assert decoding('.... . .-.. .-.. ---  -- .-. .. ... - / .-- .-. .. -. ..-.') == KeyError
    assert decoding('1 2 3 ') == KeyError
    

test_decoding_edge_cases()

Pokrytí testu je 23 procent a test potrebuje -s aby to fungovalo šlo by to bez toho -s? protoze na gitu to nefunguje pres checker

Nahlásit jako SPAM
IP: 178.20.142.–
gna
~ Anonymní uživatel
1891 příspěvků
12. 12. 2022   #6
-
0
-

Nepoužil jsi nic z toho, co jsem ti poradil a máš to ještě blběji než předtím.

Nahlásit jako SPAM
IP: 213.211.51.–
Paragoon20
Newbie
12. 12. 2022   #7
-
0
-

#6 gna
mohl bych vám napsat email?

Nahlásit jako SPAM
IP: 178.20.142.–
Paragoon20
Newbie
12. 12. 2022   #8
-
0
-

   

dictionary={'A':'.-', 'B':'-...',
            'C':'-.-.', 'D':'-..', 'E':'.','F':'..-.', 'G':'--.', 'H':'....',
            'I':'..', 'J':'.---', 'K':'-.-','L':'.-..', 'M':'--', 'N':'-.',
            'O':'---', 'P':'.--.', 'Q':'--.-','R':'.-.', 'S':'...', 'T':'-',
            'U':'..-', 'V':'...-', 'W':'.--','X':'-..-', 'Y':'-.--', 'Z':'--..',}
 
dictionary2={'.-':'A','-...':'B','-.-.':'C','-..':'D', '.':'E','..-.':'F','--.':'G','....':'H',
             '..':'I','.---':'J', '-.-':'K','.-..':'L', '--':'M', '-.':'N',
             '---':'O', '.--.':'P', '--.-':'Q','.-.':'R', '...':'S', '-':'T',
             '..-':'U', '...-':'V', '.--':'W','-..-':'X', '-.--':'Y', '--..':'Z',}
 
 
def coding(s):
    void=" "
    for i in s: #indexování
        if i != ' ':
            void+=dictionary[i]+" "
        else:
            void += ' '
    return void
 
     
def decoding(s):
    void = ""
    splitstring = s.split("  ")
    splitstring = s.split(" ")  # rozdělení podle mezer

    for i in splitstring:  # indexování
        void += dictionary2[i]
    return void

def main():
    c = 1
    while(c!="0"):
        d=int(input("1. Z ČEŠTINY DO MORSEOVKY || 2. Z MORESOVKY DO ČEŠTINY ")) # menu
        a=input("ZADEJ TEXT NA ŠIFROVÁNÍ: ")
        a=a.upper()
        if d==1: # šifrování
            print(coding(a))
        else: # dešifrování
            print(decoding(a))
    
if __name__ == "__main__":
    main()

lepší?

Nahlásit jako SPAM
IP: 178.20.142.–
Paragoon20
Newbie
12. 12. 2022   #9
-
0
-

#8 Paragoon2 

from example import coding
from example import decoding
import pytest


def test_coding():
    assert coding('HELLO') == '.... . .-.. .-.. ---'
    assert coding('WORLD') == '.-- --- .-. .-.. -..'
    

def test_decoding():
    assert decoding('.... . .-.. .-.. ---') == 'HELLO'
    assert decoding('.-- --- .-. .-.. -..') == 'WORLD'

    
if __name__ == "__main__":
    pytest.main()

Připojen obrázek.

Nahlásit jako SPAM
IP: 178.20.142.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Unit test — založil j.schneider

Python nose test, vysvetleni — založil shockwave

Unit Graph — založil devilfish

Zásobník - unit — založil Ed

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý