python版本:2.7.12
1、unittest的写法示例
# runtest.py
# -*- coding: utf-8 -*-
import unittest
class testadd(unittest.TestCase):
def setUp(self):
pass
def test_add1(self):
self.assertEqual(2 + 3 + 10,15)
def test_add2(self):
self.assertEqual(10 + 150,160)
def test_add3(self):
#一处出错,查看测试结果
self.assertEqual(2 * 5 * 7, 40)
def tearDown(self):
pass
def not_used():
print("this not used")
if __name__=="__main__":
unittest.main()
2、安装coverage
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn coverage==5.5
3、coverage用法
run - 运行一个python程序并收集运行数据
report - 生成报告
html - 把结果输出html格式
xml - 把结果输出xml格式
annotate - 运行一个python程序并收集运行数据
erase - 清楚之前coverage收集的数据
combine - 合并coverage收集的数据
debug - 获取调试信息
help - 查看coverage帮助信息,coverage help 动作/coverage 动作 –help,查看指定动作的帮助信息。
可以通过–rcfile=FILE的方式指定命令运行时的配置文件。所有命令行的参数都可以写到配置文件里面。
单个测试用例文件用法示例:
coverage run runtest.py #生成一个.coverage文件
coverage html
coverage xml
多个测试用例文件用法示例:
coverage run -p runtest.py #生成一个.coverage文件
coverage run -p runtest2.py #生成另一个.coverage文件
coverage combine #合并.coverage文件
coverage html
coverage xml
coverage更多用法在官方文档:
Coverage.py — Coverage.py 6.2 documentation
4、在jenkins pipeline中的写法
这里我们的思路是生成 .xml格式的报告,然后被SonarScanner扫描到
stage('UT') {
sh "coverage run test.py"
sh "coverage xml"
}
stage('Code Check') {
withSonarQubeEnv('sonarqube-167'){
def scannerHome = tool 'sonar-scanner-165'
sh "${scannerHome}/bin/sonar-scanner -Dsonar.projectKey=${sonarProjectKey} -Dsonar.projectName=${sonarProjectName} -Dsonar.sources=${sonarSources} -Dsonar.language=${sonarLanguage} -Dsonar.source.encoding=${sonarSourceEncoding} -Dsonar.python.coverage.reportPaths=coverage.xml"
}
}