Changes between Version 4 and Version 5 of Documentatie/Ontwikkelaar/Omgeving/Unittests
- Timestamp:
- 05/29/15 08:35:00 (11 years ago)
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 1 6 = Unit Tests = 2 3 [[TOC(heading=Inhoudsopgave)]]4 [[TOC(heading=Hoofdstukken, sectionindex, compact, depth=2, Documentatie/Ontwikkelhandleiding/*)]]5 7 6 8 OpenAC 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). … … 10 12 In 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: 11 13 {{{ 12 Python2 5\python.exe unittests.py14 Python27\python.exe unittests.py 13 15 }}} 14 16 … … 17 19 Meestal ben je geinteresseerd in alle unittests voor OpenAC, toegepast op je eigen adaptatie. Dan gebruik je 18 20 {{{ 19 Python2 5\python.exe unittests.py --enable-all -a <adaptatie>21 Python27\python.exe unittests.py --enable-all -a <adaptatie> 20 22 }}} 21 23 Vul voor {{{<adaptatie>}}} de naam van je adaptatie in, zoals "amsterdam" of "drenthe" ("ac_amsterdam" mag ook). … … 35 37 36 38 {{{ 37 Python2 5\python.exe unittests.py --with-adaptaties -a amc,amsterdam,vumc39 Python27\python.exe unittests.py --with-adaptaties -a amc,amsterdam,vumc 38 40 }}} 39 41 … … 42 44 43 45 {{{ 44 Python2 5\python.exe unittests.py --with-kern -m grouper,easidata46 Python27\python.exe unittests.py --with-kern -m grouper,easidata 45 47 }}} 46 48 … … 48 50 49 51 {{{ 50 Python2 5\python.exe unittests.py --with-kern -m systeem -t TestPermissies52 Python27\python.exe unittests.py --with-kern -m systeem -t TestPermissies 51 53 }}} 52 54 … … 62 64 63 65 class MijnTest(testhelpers.TestCaseMetLogin): 64 def test_ iets(self):66 def test_10_iets(self): 65 67 <de test> 66 68 … … 69 71 }}} 70 72 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. 73 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. 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. 72 74 73 75 In 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. 74 76 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.77 Voor volledige documentatie zie [http://docs.python.org/library/unittest.html de Python documentatie voor de unittest module]. 76 78 77 79 == Unit Test Coverage == … … 97 99 98 100 Homepage van [http://nedbatchelder.com/code/coverage/ coverage]. 101 102 Voor 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. 106 De coverage-gegevens blijven staan na `run-coverage.sh`, dus je kunt met `coverage report -m` en dergelijke daarna de gegevens nogmaals raadplegen of filteren.