In order to search for the part that the unit test implemented on Django does not cover, we introduce coverage
and measure the coverage.
It's assumed that Django is already installed.
$ pip install coverage
Run all tests and make measurements. At this time, a .coverage
file is generated.
$ coverage run --source=. --omit='*/tests*' manage.py test
At this time, in order to exclude any directory that aggregates unit tests, the --omit
option is used to exclude the coverage measurement.
See help for the types of measurement options.
$ coverage run --help
Output the measurement result.
$ coverage report -m
Name Stmts Miss Cover Missing
----------------------------------------------------------------------------------
auth/models.py 61 7 89% 15, 28-30, 115-116, 119
...
config/__init__.py 0 0 100%
...
----------------------------------------------------------------------------------
TOTAL 967 207 79%
The column names and their meanings are as follows. Missing
is output by using the -m
option.
Column name | meaning |
---|---|
Name | Refers to the target file name for coverage measurement. |
Stmts | Abbreviation for Statements.Refers to the number of lines of executable code. |
Miss | Refers to the number of lines that were not executed in Stmts. |
Cover | coverage(Coverage rate)Point to. |
Missing | Refers to the line number that was the target of Miss. |
See help for the types of options when outputting results.
$ coverage report --help
It is also possible to generate reports in HTML, XML, JSON format, etc. For details, see [Document](https://coverage.readthedocs.io/en/coverage-5.3/cmd.html#html-annotation] -coverage-html).
By measuring coverage when running Django's unit tests, we visualized areas that weren't covered.
Recommended Posts