Hallo Leute, wenn man nach "python test" googled, landet man ziemlich bald bei "25.3. unittest — Unit testing framework" Das sieht ja mal ganz nett aus, aber ich wollte eigentlich Hardware testen und nicht Software!? D.h. ein Testschritt lautet dann "Teste Digitalen Eingang X", Kann man "unittest" dazu überreden mit Hardware zu reden und wenn ja wie (subclassing)? Kann man "unittest" dazu überreden auf Benutzereingaben zu warten? Kann man "unittest" dazu überreden mit pyQt zu kommunizieren? Hat dazu jemand Beispiele? Ich gehe mal davon aus, dass "unittest" ein "vernünftiges" Protokoll erstellt und mit entsprechenden Logservern... irgendwie kommuniziert. Ein entspanntes WE (sofern das am 14.12. möglich ist) Ralf
Am 14.12.18 um 18:45 schrieb Scherer Ralf:
Hallo Leute,
wenn man nach "python test" googled, landet man ziemlich bald bei "25.3. unittest — Unit testing framework" Das sieht ja mal ganz nett aus, aber ich wollte eigentlich Hardware testen und nicht Software!?
Dann ist unittest nicht das, wonach du suchst. Wie Name und Beschreibung hergeben, mach man damit Unit-Tests, also Tests für gekapselte Funktionalitäten einzelnen Funktionen und Methoden. Bei Unittests will man eigentlich den Einfluss jeglicher Schnittstellen ausblenden. Und dazu gehört auch der Zugriff auf Hardware. Dies werden dann i.A. durch sogenannte Mock-Objekte ersetzt, die das Verhalten des System hinter der Schnittstelle simulieren. Was du aber anscheinend machen willst, sind *Funktions*test, und noch dazu solche von Funktionen, die von externen Systemen oder Benutzereingaben abhängen. Die Tools dafür hängen naturgemäß sehr von der Art des externen System oder des Frameworks für die Benutzereingabe ab. Für Browser-basierte GUIs benutzt man z.B. oft Selenium, mit dem man den Browser fernsteuern kann. Für Qt gibt es auch Tools, die einen Benutzer simulieren. Suchstichwort wäre hier "GUI automation". Das erfasst dann auch die Simulation von Benutzereingaben wie Maus oder Tastatur. Bei Hardware kann es m.E. keine allgemein funktionierendes Testframework gegen, das die Schnittstelle, je nach Hardware einfach zu unterschiedlich ist. Wenn es sich "nur" darum dreht, die Kommunikation mit einem Mikroprozessor, der per serieller Schnittstelle, I2C oder SPI angebunden ist, schaust du dich am besten mal bei den bekannten SDKs für solche um, also Arduino, Mbed, RTOS, MicroPython usw. Alles weitere muss auf die jeweilige Hardwareanbindung und die Schnittstellen, die am Rechner, auf dem die Tests laufen, vorhanden sind, angepasst werden. Übliche PC-Systeme haben ja z.B. idR. gar keine GPIOs, für so etwas gibt's dann SBC (Single Board Computer), aka Raspberry Pi und Verwandte. Gruß, Chris
participants (2)
-
Christopher Arndt
-
Scherer Ralf