Tale navodila so namenjena uporabnikom PyCharma. Kdor uporablja kaj drugega, se bo moral znajti po svoje. V skrajnem primeru bo teste poganjal tako kot vsak drug program. To bo čisto dobro delovalo, le izpis bo malo manj fancy.

Preden prvič poganjanje teste preverite, ali imate v File / Settings / Python Integrated Tools (na Windowsih in Linuxu(?)) oziroma v PyCharm / Preferences / Python Integrated Tools (na Os X) nastavljen Default test runner na Unit test.

Testni primeri, ki jih boste dobili ob domačih nalogah, na vajah in na izpitu, so videti, recimo, takole.

import unittest class TestKonj(unittest.TestCase): def test_moznosti(self): self.assertEqual(moznosti("A1"), ["B3", "C2"]) self.assertEqual(moznosti("A2"), ["B4", "C1", "C3"]) def test_legalna(self): self.assertTrue(legalna("A1", "C2")) self.assertFalse(legalna("A3", "C8")) if __name__ == '__main__': unittest.main(verbosity=2)

Najboljše bo, da funkcije, ki jih programirate, pišete na začetek te datoteke. Ko boste pognali program, bodo tule zapisane funkcije (na način, ki nas zdajle še ne zanima) poklicale vaše funkcije in preverile, ali vračajo takšne rezultate, kot jih morajo.

Prvi test preveri, ali (vaša) funkcija moznosti takrat, ko jo pokličemo z moznosti("A1") vrne ["B3", "C2"] in takrat, ko jo pokličemo z moznosti("A2") vrne ["B4", "C1", "C3"].

Drugi test preverja, ali klic vaše funkcije legalna("A1", "C2") vrne True in ali klic legalna("A3", "C8") vrne False.

(Gre za delček testov iz naloge Kojn. Prva funkcija mora povedati, kam lahko z določenega polja skoči šahovski konj, druga pa, ali je določena poteza dovoljena.)

Če funkcija ne vrne tistega, kar bi morala, testni program to pove. Pove tudi, kaj je funkcija napačnega vrnila, zato: glejte te izpise, ne le tega, ali funkcija deluje ali ne.

Kot rešitev naloge napišimo dve (nesmiselni) funkciji. Prva vedno vrne ["B3", "C2"], druga pa, ali je koordinata ciljnega polja po abecedi pred "C4".

def moznosti(s): return ["B3", "C2"] def legalna(a, b): return b < "C4"

Funkciji napišemo na vrh datoteke in poženemo teste. V PyCharmu to storimo takrat, ko je kurzor nekje izven testov, pritisnemo Ctrl-Shift-F10 na Windowsih oz. Ctrl-Shift-R na Mac OsX (če to storimo, ko je kurzor znotraj nekega testa, bo pognal le ta test). Spodnji del okna bi moral biti takšen.

Če manjka vrstica z zeleno lučko (test_legalna), kliknite ikono s kljukico (ali, v starejših različicah, lijakom), ki je na tej sliki čisto desno zgoraj. Ta določa, ali se kažejo le neuspešni ali tudi uspešni testi.

Izpis na desni strani pravi, da je pri testu self.assertEqual(moznosti("A2"), ["B4", "C1", "C3"]) prišlo do napake, saj ['B3', 'C2'] (kar funkcija vrne) ni isto kot ['B4', 'C1', 'C3'] (kar bi morala vrniti).

Druga funkcija je teste navidez prestala. Takšno rešitev bomo seveda vseeno šteli kot napačno. Testi naj bi vam pomagali, seveda pa je vedno mogoče napisati nesmiselno funkcijo, ki vrača točno to, kar hočejo testi.

Kadar v funkciji pride do napake (torej, ne le, da ne vrne pravega rezultata, temveč se ustavi z napako), bo lučka rdeča.

Včasih PyCharm ne odkrije, da so v vašem programu testi in vaš program poganja tako, kot bi poganjal druge programe. V tem primeru ne dobite lučk, temveč le izpis. V tem primeru lahko greste na Run / Edit Configurations..., v dialogu izberete plus levo zgoraj (dodajanje nove konfiguracije za poganjanje) in izberete Python tests/Unit tests. Pod Test: izberite Script, pod Script: pa izberete datoteko s svojim programom. Ostalo bi moralo biti v redu.

Последна промена: среда, 2 октомври 2024, 15:16