Changes between Version 1 and Version 2 of Documentatie/Ontwikkelaar/Omgeving/Unittests


Ignore:
Timestamp:
07/27/12 12:12:53 (14 years ago)
Author:
adriaan
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentatie/Ontwikkelaar/Omgeving/Unittests

    v1 v2  
    2525Er zit een handvol verwachte failures in de unittests, waar OpenAC dingen niet doet zoals we het verwachten (in bijzondere randgevallen). Errors geven aan dat er een probleem is in de OpenAC code die niet goed wordt afgevangen. Errors in de unittests kunnen direct als defect worden gerapporteerd in het [/newticket tickets systeem].  
    2626 
    27 Om alleen de unit tests van een enkele kernmodule uit te voeren (bijvoorbeeld de Grouper), gebruik de argumenten {{{--with-kern}}} en {{{-m}}}, zo: 
     27=== Tests Selecteren === 
     28 
     29De tests van de adaptaties, desktop-laag, includes, kern en logica zijn allemaal afzonderlijk te selecteren met de opties `--with-*` (bijvoorbeeld `--with-include`). Hiermee zijn de grote groepen tests aan of uit te zetten. Met `--enable-all` worden alle tests aangezet. 
     30 
     31Als `--with-adaptaties` aan staat, dan kan de test worden beperkt tot de tests van specifieke adaptaties met de optie `-a` (of `--adaptaties`). Geef een lijst van adaptatie-namen op, gescheiden door komma's. Als voorbeeld met de tests van drie verschillende AC's: 
     32 
    2833{{{ 
    29   Python25\python.exe unittests.py --with-kern -m grouper 
     34  Python25\python.exe unittests.py --with-adaptaties -a amc,amsterdam,vumc 
    3035}}} 
    31 Na {{{-m}}} mag een komma-gescheiden lijst van kernmodulenamen staan; de namen worden gezocht in alle kernmodules, dus "grouper" selecteert de unit tests van alle kernmodules waar het woord "grouper" in de naam voorkomt (dat is er maar een, ''e080_grouper'', maar als je {{{-m hl7,dos}}} gebruikt krijg je de tests van zeven modules). 
     36 
     37Als `--with-kern` aanstaat, dan kan de test worden beperkt ror specifieke kern-modules. De optie `-m` (of `--modules`) kan een komma-gescheiden lijst van module-namen gebruiken. Alleen die kern-modules met een naam die lijkt op de opgegeven lijst worden gebruikt. 
     38De namen worden gezocht in alle kernmodules, dus "grouper" selecteert de unit tests van alle kernmodules waar het woord "grouper" in de naam voorkomt (dat is er maar een, ''e080_grouper''), maar als je {{{-m hl7,dos}}} gebruikt krijg je de tests van zeven modules). 
     39 
     40{{{ 
     41  Python25\python.exe unittests.py --with-kern -m grouper,easidata 
     42}}} 
     43 
     44Om de tests uit ''een enkele test-klasse'' te draaien, gebruik de optie `it` (of `--tests`). Dit is vooral interessant bij het maken van tests voor een module, als je niet de hele tijd alle tests wilt draaien maar je wilt concentreren op de nieuwe tests. Geef een komma-gescheiden lijst van test-klassen op. Alleen die klassen die voorkomen in de lijst worden uitgevoerd (de andere selecties blijven van kracht, dus om alleen de test-klasse ''!TestPermissies'' van de kern-module ''systeem'' uit te voeren, moet je zowel `-m` als `-t` opgeven, anders krijg je de ''!TestPermissies'' test-klasse van alle modles). 
     45 
     46{{{ 
     47  Python25\python.exe unittests.py --with-kern -m systeem -t TestPermissies 
     48}}} 
    3249 
    3350== Unit Tests Schrijven == 
     
    4663 
    4764  def suite(): 
    48     suite = unittest.TestSuite() 
    49     suite.addTest(unittest.makeSuite(MijnTest)) 
     65    return testhelpers.create_suite(globals()) 
    5066}}} 
    5167 
    5268Een test is een functie in een test-klasse. Een unit test kan meerdere test-klassen bevatten, en een klasse kan meerdere tests bevatten. De klassen en functies zijn vooral een manier om de tests te organiseren en te structureren. De tests worden uiteindelijk in alfabetische volgorde binnen elke klasse uitgevoerd. 
    5369 
     70In elke `unittests.py` module verwachten we een functie `suite()` die de tests van de module teruggeeft. Zie de documentatie van `include.testhelpers.create_suite()` voor uitleg hoe die de tests aanmaakt. 
     71 
    5472Voor volledige documentatie zie [http://docs.python.org/library/unittest.html de Python documentatie voor de unittest module]. '''NB.''' OpenAC gebruikt Python 2.5 en de huidige versie van de documentatie is voor Python 2.7, dus let op de "''Since 2.6''" en dergelijke compatibiliteits-informatie.