Changes between Version 4 and Version 5 of Documentatie/Ontwikkelaar/Omgeving/Unittests


Ignore:
Timestamp:
05/29/15 08:35:00 (11 years ago)
Author:
adriaan
Comment:

--

Legend:

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

    v4 v5  
     1[[TOC(heading=Documentatie, sectionindex, compact, depth=1, allactive, Documentatie/)]] 
     2[[TOC(heading=Hoofdstukken, sectionindex, compact, depth=2, allactive, indirect=Documentatie/Ontwikkelhandleiding/TOC)]] 
     3[[TOC(heading=Onderwerpen, sectionindex, compact, depth=3, allactive, indirect=Documentatie/Ontwikkelhandleiding/Ontwikkelomgeving/TOC)]] 
     4[[TOC(heading=Inhoudsopgave)]] 
     5 
    16= Unit Tests = 
    2  
    3 [[TOC(heading=Inhoudsopgave)]] 
    4 [[TOC(heading=Hoofdstukken, sectionindex, compact, depth=2, Documentatie/Ontwikkelhandleiding/*)]] 
    57 
    68OpenAC heeft een grote verzameling ''unit tests'' om de functionaliteit van het programma te testen. Hierbij wordt vooral de algoritmische- en data-kant van het programma getest. Er wordt niet stilgestaan bij de user interface (op enkele puntjes na). 
     
    1012In de {{{development/}}} branch en releases vanaf versie 2.000 staat er in de bovenste directory van OpenAC een file {{{unittests.py}}}. Dit is het "aandrijf" script van de unittests voor het gehele programma. Het kan worden opgestart vanaf de command-line als ieder ander Python programma: 
    1113{{{ 
    12   Python25\python.exe unittests.py 
     14  Python27\python.exe unittests.py 
    1315}}} 
    1416 
     
    1719Meestal ben je geinteresseerd in alle unittests voor OpenAC, toegepast op je eigen adaptatie. Dan gebruik je 
    1820{{{ 
    19   Python25\python.exe unittests.py --enable-all -a <adaptatie> 
     21  Python27\python.exe unittests.py --enable-all -a <adaptatie> 
    2022}}} 
    2123Vul voor {{{<adaptatie>}}} de naam van je adaptatie in, zoals "amsterdam" of "drenthe" ("ac_amsterdam" mag ook). 
     
    3537 
    3638{{{ 
    37   Python25\python.exe unittests.py --with-adaptaties -a amc,amsterdam,vumc 
     39  Python27\python.exe unittests.py --with-adaptaties -a amc,amsterdam,vumc 
    3840}}} 
    3941 
     
    4244 
    4345{{{ 
    44   Python25\python.exe unittests.py --with-kern -m grouper,easidata 
     46  Python27\python.exe unittests.py --with-kern -m grouper,easidata 
    4547}}} 
    4648 
     
    4850 
    4951{{{ 
    50   Python25\python.exe unittests.py --with-kern -m systeem -t TestPermissies 
     52  Python27\python.exe unittests.py --with-kern -m systeem -t TestPermissies 
    5153}}} 
    5254 
     
    6264 
    6365  class MijnTest(testhelpers.TestCaseMetLogin): 
    64     def test_iets(self): 
     66    def test_10_iets(self): 
    6567       <de test> 
    6668 
     
    6971}}} 
    7072 
    71 Een 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. 
     73Een 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. Om de volgorde af te dwingen wordt meestal een tweecijferig volgnummer gebruikt, zoals `test_10_iets`. Traditioneel zijn ook `test_00_import` die alleen de te-testen modules importeert en controleert op aanwezigheid, en `test_99_cleanup` die eventuele test-data opruimt. Als alle test-functies de conventies volgen, wordt de cleanup dan als laatste uitgevoerd. 
    7274 
    7375In 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. 
    7476 
    75 Voor 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. 
     77Voor volledige documentatie zie [http://docs.python.org/library/unittest.html de Python documentatie voor de unittest module]. 
    7678 
    7779== Unit Test Coverage == 
     
    9799 
    98100Homepage van [http://nedbatchelder.com/code/coverage/ coverage]. 
     101 
     102Voor een standaard-uitvoering van coverage, gebruik het (shell) script `bin/run-coverage.sh` 
     103 - `run-coverage.sh -a` Draait alle unittests, rapporteert over de hele codebase. Dit duurt nogal lang, maar geeft een totaalbeeld van welke code er is en wat er getest wordt. 
     104 - `run-coverage -m <module>` Draait de unittests van een gegeven kernmodule (zoals ''d010_systeem'') en rapporteert de coverage van die specifieke module. 
     105 - `run-coverage` Zonder argumenten worden de bepaalde unittests van include gedraaid en de coverage van de bijbehorende source-files weergegeven. 
     106De coverage-gegevens blijven staan na `run-coverage.sh`, dus je kunt met `coverage report -m` en dergelijke daarna de gegevens nogmaals raadplegen of filteren.