[dechin@dechin-manjaro pytest]$ py.test --cov=random_number ./ --cov-report=html=========================================== test session starts ============================================platform linux -- Python 3.8.5, pytest-6.2.1, py-1.9.0, pluggy-0.13.1rootdir: /home/dechin/projects/2021-python/pytest, configfile: pytest.iniplugins: cov-2.11.1, metadata-1.11.0, html-3.1.1collected 1 itemtest_random_number.py .[100%]----------- coverage: platform linux, python 3.8.5-final-0 -----------Coverage HTML written to dir htmlcov============================================ 1 passed in 0.76s =============================================这里会提示我们去htmlcov目录下找测试报告,我们打开相应的index.html文件,效果如下:
这里我们看到random_number.py文件的测试覆盖率为86%,我们可以点开链接查看剩下未覆盖的测试是什么内容:
原来是main函数中的几行指令没有被测试到,一般我们在正式仓库中,是需要去掉main函数的,如果不是测试文件的话 。
使用flake8进行python编码规范检查首先我们还是使用pip来直接安装flake8组件,其集成了PEP8的python编码规范:
[dechin@dechin-manjaro pytest]$ python3 -m pip install -U flake8Requirement already up-to-date: flake8 in /home/dechin/anaconda3/lib/python3.8/site-packages (3.8.4)Requirement already satisfied, skipping upgrade: mccabe<0.7.0,>=0.6.0 in /home/dechin/anaconda3/lib/python3.8/site-packages (from flake8) (0.6.1)Requirement already satisfied, skipping upgrade: pyflakes<2.3.0,>=2.2.0 in /home/dechin/anaconda3/lib/python3.8/site-packages (from flake8) (2.2.0)Requirement already satisfied, skipping upgrade: pycodestyle<2.7.0,>=2.6.0a1 in /home/dechin/anaconda3/lib/python3.8/site-packages (from flake8) (2.6.0)查看安装的flake8版本号:
[dechin@dechin-manjaro pytest]$ flake8 --version3.8.4 (mccabe: 0.6.1, pycodestyle: 2.6.0, pyflakes: 2.2.0) CPython 3.8.5 on Linux使用方式较为简单,在当前目录下直接执行flake8即可,检查项会以当前路径为rootdir,递归地进行检索:
[dechin@dechin-manjaro pytest]$ flake8./test_random_number.py:2:1: F401 'pytest' imported but unused./test_random_number.py:5:1: E302 expected 2 blank lines, found 1./random_number.py:5:1: E302 expected 2 blank lines, found 1./random_number.py:15:1: E305 expected 2 blank lines after class or function definition, found 1./random_number.py:17:10: E211 whitespace before '('./random_number.py:17:80: E501 line too long (87 > 79 characters)假如我们不想包含测试用例的风格检查,我们可以在命令行中屏蔽相关文件,或者创建配置文件,在配置文件中屏蔽相关文件,这里介绍后者的使用方法:
# .flake8[flake8]exclude = ./test*这个配置的意义在于,将当前目录下,所有以test开头的文件,都将会忽略python编码规范的检查,配置文件支持通配符的表达形式 。接下来看下最新的执行结果:
[dechin@dechin-manjaro pytest]$ flake8./random_number.py:5:1: E302 expected 2 blank lines, found 1./random_number.py:15:1: E305 expected 2 blank lines after class or function definition, found 1./random_number.py:17:10: E211 whitespace before '('./random_number.py:17:80: E501 line too long (87 > 79 characters)我们发现前面出现的关于测试用例中的编码规范,已经不在这个列表的范围了 。这个列表中的问题我们一般最好是处理下,但是如果遇到一些判断不需要处理的规范,则同样可以在配置文件中添加相应的规范ID,这里仅作示例使用,前面显示的编码规范问题后面都会改 。如下所示就是两个忽略:
# .flake8[flake8]exclude = ./test*ignore = E302, E305对应的执行结果如下所示:
[dechin@dechin-manjaro pytest]$ flake8./random_number.py:17:10: E211 whitespace before '('./random_number.py:17:80: E501 line too long (87 > 79 characters)我们发现被忽略的问题已经没有显示了 。flake8还有一个特点,是可以配置max-complexity,其采用的基本复杂性计算方法为McCabe度量法,可以参考这篇博客中的介绍内容,这里就不过多的赘述 。为了更加美观简明地看到输出的结果,我们可以补充安装一个组件flake8-html:
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- js实现文件下载功能 html图片按钮代码
- 自己制作一个网站的方法 html5制作网页教程
- 浪漫的html表白源代码 网页表白代码大全
- html页面获取url参数 jquery获取url中的参数有哪些
- 讲解html中title标签的作用 html标题代码
- 网页设计菜单栏导航实例 html5导航栏代码
- 分享文件转换工具类 html转换成word文档
- html左图右文布局方法 html左右布局模板
- c语言二维数组定义和赋值 随机数c语言代码
- html简易计算器代码 javascript计算器代码