====== Testy ====== V úlohách [[courses:b3b33kui:semestralni_ulohy:3_mdp:start|MDP]] a [[courses:b3b33kui:semestralni_ulohy:4_rl:start|RL]] mají funkce ''find_policy_...()'' a ''learn_policy()'' vracet tzv. strategii (policy). V zadání se uvádí, že by měla být reprezentována slovníkem. Občas ale studenti odevzdají řešení, kde funkce vrací něco jiného, nebo obsah slovníku není formálně správný, což svědčí o tom, že neporozuměli dobře specifikacím. Jako autoři řešení byste měli sami být schopni otestovat, zda návratová hodnota funkce odpovídá požadavkům. Jak na to? ===== Požadavky na strategii ===== Jaké požadavky by tedy měla vrácená strategie (policy) splňovat? - Jakým datovým typem má být strategie reprezentovaná? - Kolik položek by měl tento slovník mít? Jak tento počet zjistím z prostředí (''env'')? - Co mají představovat klíče slovníku? Jakého typu mají být? - Co jsou hodnoty slovníku? Jakého typu mají být? - Obsahuje slovník všechny klíče? - Jaká konkrétní strategie by měla být vrácena pro nějaké jednoduché prostředí? - ... ===== Úkoly ===== * Pokuste se implementovat kontroly výše uvedených požadavků přímo v Pythonu. * Uspořádejte vhodně kód tak, abyste mohli tyto testy snadno spouštět prostřednictvím frameworku ''[[courses:b3b33kui:cviceni:pytest|pytest]]''. * Při implementaci jednotlivých algoritmů (value iteration, policy iteration, ...) budete jistě používat spoustu podpůrných funkcí pro jednotlivé dílčí části, např. pro policy evaluation. Zkuste i pro tyto podpůrné funkce rozmyslet, jaké požadavky musí splňovat, a implementujte je ve formě ''[[courses:b3b33kui:cviceni:pytest|pytest]]'' testů. > {{section>courses:b3b33kui:internal:tests:mdp#test_mdp_agentpy&firstseconly&noheader}} ===== Proč? ===== Automatizované testy vám umožní * lépe pochopit/vyjasnit si jednotlivé požadavky, včetně rozhraní jednotlivých funkcí, * snadno spustit celou dávku testů najednou (a tím ověřit shodu s testovanými specifikacemi), * ověřit, že při změnách v kódu nedošlo ke změně důležitého (testovaného) chování, * ...