= Treffen vom 10.12.2019 = * [[https://www.meetup.com/PYUGAT/events/266802348/|Meetup-Seite zu diesem Treffen]] == Agenda == * Begrüßung * Metalab * Vorstellungsrunde * [[FrontPage|Wiki]], MailingLists, [[https://twitter.com/pyugat|Twitter]], [[http://www.meetup.com/PYUGAT/|Meetup]], [[http://webchat.freenode.net/?channels=#pyugat|IRC: #pyugat on freenode]], [[https://flattr.com/thing/1804445/Python-User-Group-Austria|Flattr]] * Am Wiki anmelden & [[CategoryHomepage|persönliche Seite]] anlegen (Kontaktinfos, Name, Interessen, Foto,…) * Mögliche Themen in FutureTalks eintragen * Nächsten Termin festlegen * Events * Buchbesprechungen? * [[Jobs|Job-Börse]] * Zeiteinteilung für den Abend festlegen * Wer hat Kurzvorträge mitgebracht? * Groben Zeitplan für Hauptvortrag festlegen == Programm == * Haupt-Aktivität: Test driven Development Wir haben uns TDD development (mit pytest) angeschaut. Hier das Test file mit dem Namen 'test_uebung_TDD.py': {{{#!highlight python from uebung_TDD import * # Mit * werden alle Namen aus dem Module importiert - diese Variante ist mit Vorsicht zu genießen: https://docs.python.org/3/tutorial/modules.html#more-on-modules def test_multiplikation(): assert multiplikation(2,3) == 6 def test_search_element_returns_false_if_element_not_found(): assert search_element(['adi', 'marion', 'thomas', 'markus', 'andreas', 'thomas'], 'bernd') == False def test_search_element_returns_true_if_element_found(): assert search_element(['adi', 'marion', 'thomas', 'markus', 'andreas', 'thomas'], 'adi') == True def test_search_element_returns_false_if_None(): assert search_element(['adi', 'marion', 'thomas', 'markus', 'andreas', 'thomas'], None) == False def test_search_element_returns_two(): assert search_element(['adi', 'marion', 'thomas', 'markus', 'andreas', 'thomas'], 'thomas') == 2 }}} Anmerkungen: Zunächst wurde eine einfache Multiplikationfunktion getestet und geschrieben. Dann haben wir eine Funktion getestet und geschrieben, die eine Liste nach einem Element durchsucht - wir wollen die 'Nadel im Heuhaufen' finden. Verschiedene wichtige und spezielle Fälle wurden getestet. Führe 'pytest -v' aus, damit du Informationen über jeden Test bekommst. Nach der Testfunktion für die Multiplikation wurde die eigentliche Funktion geschrieben: Hier das File mit dem Namen 'uebung_TDD.py': {{{#!highlight python def multiplikation(a, b): return a*b def search_element(heuhaufen, nadel): count = 0 for name_in_liste in heuhaufen: if nadel == name_in_liste: count += 1 return count def search_element(heuhaufen, nadel): return heuhaufen.count(nadel) def search_element(heuhaufen, nadel): found = [name_in_liste for name_in_liste in heuhaufen if nadel == name_in_liste] return len(found) }}} Erstellung der Funktion, mit der eine Liste nach einem Element durchsucht wird: 3 Versionen haben wir uns angesehen: 1. Variable count 2. list method 'count' [[https://docs.python.org/3/tutorial/datastructures.html]] 3. List comprehension [[https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions]] Hinweis: bei der list comprehension-Funktion wird eine Zahl zurückgegeben anstatt False oder True. Die anderen Tests passen weiterhin ('test passed'), weil sich [[https://docs.python.org/3/library/stdtypes.html#bltin-boolean-values|False im numerischen Kontext wie 0 verhält und True wie 1]]. Weiters haben wir gesprochen über den programmiertechnischen Ausdruck 'magic' [[http://www.catb.org/~esr/jargon/html/M/magic.html]] TDD ist eine unter verschiedenen anderen Testarten: mit Pytest können auch andere Tests durchgeführt werden. ---- CategoryShownotes