Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

为Django配置覆盖率检查并配置在gitlab上



现在用gitlab做CI/CD,在测试阶段时会运行django的单元测试,也希望能看到当前覆盖率是多少,并且能设置一个指标,覆盖率未达标就报错,即使目前的测试全部通过。这样能尽量的提高测试覆盖率,把tdd做好,有助于代码质量。

下面记录一下django是怎么检查覆盖率的还有gitlab怎么设置的。

因为我用了pytest,于是需要安装pytest-cov。

pip install pytest-cov

运行后会装上coverage和pytest-cov的包。

然后在pytest的配置文件中添加如下内容pytest.ini

[pytest]
DJANGO_SETTINGS_MODULE = Site.settings
python_files = tests.py test_*.py *_tests.py
addopts = --nomigrations --reuse-db 
          --cov=modules/ --cov-report term-missing --color yes  # 这里是设置检查的目录和展示结果
          --cov-fail-under 100  # 这个是设置覆盖率指标,未达到就会报错

此时运行pytest命令来代替'python manage.py test -k' 时就能看到覆盖率。但是我们发现连migrations里的都出现了,这个并不是我们希望检查的文件,反而会拉低目前的覆盖率。

此时需要在coverage的配置文件中添加一些内容,不过无法添加到pytest.ini中,文件名可以自己指定,默认是.coveragerc。

[run]
omit =                 # 过滤的文件
    */migrations/*
    */apps.py
    */admin.py
    */tests.py

[report]
exclude_lines =         # 过滤的代码内容
    return self.name

此时提交后结合了.gitlab-ci.yml后就会在console中看到覆盖率的数字统计。

如果想在gitlab的页面中也看到覆盖率的话,那么可以在.gitlab-ci.yml中配置一下以获取最后的覆盖率总数。如下。

# .gitlab-ci.yml

...
  before_script:
    - pip3 install -r requirement.txt
    - python3 manage.py makemigrations
    - python3 manage.py migrate
  script:
    - pytest
  coverage: '/TOTAL.*\s+(\d+%)$/'   # here

再次提交后就能检查覆盖率的指标,也能获取到总的覆盖率数字啦。如下图。

下一篇:  Django restframework加Vue打造前后端分离的网站(七)登录并保持状态
上一篇:  Centos安装mongodb并配置用户和权限

共有0条评论

添加评论

暂无评论