Manual:Pywikibot/Test coverage

To run coverage, install coverage, and optionally nose.

Library
To use coverage as a standalone tool, run the following in the pywikibot clone directory: (and look at results starting with 'pywikibot')

To use coverage via nose, see their documentation and run the following in the pywikibot clone directory:

Pywikibot 'core' test coverage on python 2.7 as at 1 November 2014: Name                                              Stmts   Miss  Cover -- pywikibot                                           292     73    75% pywikibot.bot                                       445    306    31% pywikibot.comms.http                                137     30    78% pywikibot.comms.threadedhttp                        202     42    79% pywikibot.config2                                   313    106    66% pywikibot.data.api                                  731    219    70% pywikibot.data.wikidataquery                        243     23    91% pywikibot.date                                      368     37    90% pywikibot.diff                                      180    154    14% pywikibot.echo                                       22     16    27% pywikibot.exceptions                                116     10    91% pywikibot.family                                    232     68    71% pywikibot.i18n                                      267     97    64% pywikibot.logentries                                121     42    65% pywikibot.login                                      86     58    33% pywikibot.page                                     1803    782    57% pywikibot.pagegenerators                            726    599    17% pywikibot.plural                                      3      0   100% pywikibot.site                                     2339    915    61% pywikibot.textlib                                   630    238    62% pywikibot.throttle                                  172     45    74% pywikibot.tools                                     295     92    69% pywikibot.userinterfaces.terminal_interface           7      1    86% pywikibot.userinterfaces.terminal_interface_base    202    101    50% pywikibot.userinterfaces.terminal_interface_unix     18     11    39% pywikibot.userinterfaces.transliteration           2718     15    99% pywikibot.version                                   221    165    25% pywikibot.weblib                                     31      3    90% pywikibot.xmlreader                                 102     20    80% -- TOTAL                                             13028   4268    67%
 * Notes
 * the default output gives lines of code which are not exercised; that has been omitted from the table above.(they are included in the table for scripts)
 * the library contains lines which are Python 2.6 or Python 3+ specific, and cant be included in coverage when run from python 2.7
 * there are a few modules which are not included in this table because they are not loaded by the test suite.
 * PYWIKIBOT2_TEST_WRITE=1 was not used when generating the above statistics.

Scripts
To use coverage as a standalone tool, run the following in the pywikibot clone directory: (and look at results starting with 'scripts')

To use coverage via nose, see their documentation and run the following in the pywikibot clone directory:

(FIXME: both of the above commands is horribly inefficient, as it runs all tests, not just tests for scripts.)

Pywikibot 'core' test coverage as at 1 November 2014: Name                    Stmts   Miss  Cover   Missing -- scripts.archivebot        332    278    16%   149-157, 169-174, 189-198, 202-204, 214, 217, 220, 223, 240-245, 248, 253-263, 266, 270, 273-286, 298-321, 325-350, 354-362, 365, 369-379, 393-414, 417, 420-422, 425, 429, 435-438, 441-451, 462-473, 476-514, 517-550, 562-653, 657 scripts.data_ingestion     81     24    70%   25-26, 53, 126-129, 132-150, 153, 156-157, 160-165 scripts.upload            215    191    11%   53-54, 76-91, 95, 99-153, 158-227, 231-234, 244-289, 294-313, 325-383, 386 -- TOTAL                     628    493    21%


 * Notes:
 * the number of lines which are only exercised in Python 2.6 or Python 3+ should be so small as to not affect the overall results.
 * the TOTALs in this table are very misleading; there are many scripts which are not listed as they are tested in a way that is not visible to.
 * there were no write tests covering scripts as at 1 November 2014