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.
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.
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).
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
# === 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") == ".-"
...
#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
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ší?
#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()
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku