检测python
首先安装搭建python的开发环境,方法见相应文档
python的单元测试
nose
- nose 是python自带框架unttest的扩展,使测试更简单高效;
- 安装方式也是pip install python-nose python3-nose python-nose2 python3-nose2
- 同上coverage,安装后无法验证。
检测python测试的覆盖率
coverage
-
coverage是一个python覆盖率插件
-
安装方式
sudo pip install coverage #安装coverage,注意一定记得加sudo,网上大多教程没有加sudo深受其害(不加sudo安装会提示coverage无此命令)。安装方式根据你使用的pip或pip3
coverage --version #验证安装
coverage run xx/xx_test.py #运行指定文件
coverage xml xx/xx.py #生成xml报告,生成前必须先运行coverage run才行
- 使用说明
run – 运行Python程序并收集执行数据。
report – 报告覆盖率结果。
html – 生成带注释的HTML清单和覆盖率结果。
xml – 生成包含覆盖率结果的XML报告。
annotate – 用覆盖率结果注释源文件。
erase – 删除以前收集的覆盖率数据。
combine – 将一些数据文件组合在一起。
debug – 获取诊断信息。
- 分析python web项目的代码覆盖率
参考https://segmentfault.com/a/1190000003805741
coverage检测pythonWeb项目
- pythonWeb正常启停命令
sudo python xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main.py |grep -v grep |awk '{print $2}'|sort -r| sudo xargs kill
Ctrl+c #效果等同于上一条kill命令
- coverage启停命令
sudo coverage run --parallel-mode --branch --include="yyy/*" xxx/main.py --port=8888 --logging=none > /dev/null 2>&1 &
ps auxf|grep xxx/main |grep -v grep |awk '{print $2}'|sort -r|sudo xargs kill -2
Ctrl+c #效果等同于上一条kill -2命令
coverage启动命令参数
--parallel-mode:使Coverage监测被测代码子进程的覆盖率,如果被测代码是多进程的,必须使用此参数;
--branch:统计分支代码覆盖率,加上这个参数可使统计更精确,具体区别参见文档:http://coverage.readthedocs.org/en/latest/branch.html;
--include: 限定要统计代码的路径,如果不限定,Coverage会把请求涉及到的所有代码,包括系统库和Tornado框架的代码都分析一遍,会大大拉低代码覆盖率;
- coverage结果收集
pythonWeb服务停止后,会生成.coverage.xxx的文件,每个.coverage.xxx文件代表一个子进程的覆盖率,文件名格式为.coverage.<机器名>.<进程号>.<随机数>。
coverage combine #合并结果,执行后所有的.coverage.xxx会合并为一个.coverage文件(即正常执行时产生的文件)
coverage report #生成report
coverage html #生成html报告
coverage xml #生成xml报告
coverage erase #删除.coverage文件,保证不会影响下次统计
检测python语言源码中静态错误
Pylint
-
Pylint是一个python代码分析工具,它分析python代码中的错误,查找不符合代码风格标准和潜在问题的代码。
-
安装使用
sudo pip3 install pylint #pyhon3安装
sudo pip install pylint #python2安装
pylint --version #验证安装
pylint --persistent=n --generate-rcfile > pylint.conf #创建默认配置文件
pylint --rcfile=pylint.conf xx/xxx.py #根据配置文件执行分析(所有配置均写在配置文件中,也可以在执行时写相应配置[具体见pylint --help],执行时写入的配置会覆盖配置文件中的配置)
- 配置文件中简单修改(可根据个人需要自由配置)
persistent=yes
reports=yes
- 将配置文件pylint.conf改名为".pylintrc",再执行分析时就不再需要指定配置文件了
pylint xx/xxx.py #即可完成分析
- 生成报告文件(python2与python3不同)
files-output=yes # python2:配置文件中加入该配置即可
pylint xx/xxx.py > xxxx.txt #python3安装的pylint中不再支持files-output配置,所以只能在运行命令时指定
- 检测分析
(C)惯例。违反了编码风格标准
(R)重构。写的非常糟糕的代码
(W)警告。某些python特定的问题
(E)错误。很可能是代码中的错误
(F)致命错误。阻止pylint近一步运行的错误