| | 76 | |
| | 77 | == Unit Test Coverage == |
| | 78 | |
| | 79 | In principe zouden de unittests 100% van de code-base testen. In de praktijk gaat dat niet lukken, want je hebt altijd wat platform-specifieke code die op je test-platform niet uitgevoerd gaat worden. Maar we streven, langzaam, naar volledige test-coverage. |
| | 80 | |
| | 81 | Test-coverage kan je meten met het `coverage` tool, dat je via easy-install of een andere Python installatiebron kunt verkrijgen. Voorlopig kijken we vooral naar de test-coverage in de `include/` directory. Met dit eerste commando voer je de unittests voor de includes uit, waarbij je de coverage voor de directory include gaat meten (zonder `--source` gaat 'ie '''alles''' meten, dat is langzaam en niet zo interessant te weten dat de OpenAC tests niet alles in SQLAlchemy raken). Het tweede commando drukt informatie af over wat er allemaal geraakt is, en vooran (`-m`) welke regels code niet zijn uitgevoerd (dus ook niet getest). |
| | 82 | |
| | 83 | {{{ |
| | 84 | coverage run --source include unittests.py --with-include |
| | 85 | coverage report -m |
| | 86 | }}} |
| | 87 | |
| | 88 | Uitvoer van coverage in deze vorm geeft je een filenaam, dekkingsgraad, en een lijst van gemiste regels: |
| | 89 | |
| | 90 | {{{ |
| | 91 | include/encoding 56 6 89% 35-42, 47-48 |
| | 92 | include/files 84 42 50% 29-46, 55-63, 92-94, |
| | 93 | 107-128, 165, 182-196, 226-232 |
| | 94 | }}} |
| | 95 | |
| | 96 | De dekking in de file `encoding.py` is behoorlijk goed, en een korte inspectie leert dat de gemiste regels 35-42, 47 en 48 allemaal Windows- of Mac-specifiek zijn (en deze test is gedraaid onder Linux). Bij `files.py` daarentegen is de dekking niet zo goed. Regels 29-46 betreffen de functie `homedir()`, die dus (in development r24152) helemaal niet gebruikt of getest wordt. |
| | 97 | |
| | 98 | Homepage van [http://nedbatchelder.com/code/coverage/ coverage]. |