如何分析Python测试代码覆盖率?

发布时间:2022-04-13 09:41:09 人气:30 作者:多测师

  在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Coverage是一种用于统计Python代码覆盖率的工具,通过它可以检测测试代码的有效性,即测试case对被测代码的覆盖率几何。

  Coverage不仅支持分支覆盖率统计,还可以生成HTML/XML报告。并且XML报告可以结合Jenkins和Sonar集成工具一起使用。

  安装

  Coverage作为Python的一个第三方库,使用时需要先安装,使用pip命令进行安装。安装命令:pip install coverage

  C:\\Users\\TynamYang>pip install coverage

  Collecting coverage

  Downloading coverage\-5.1-cp37-cp37m-win32.whl \(204 kB\) || 204 kB 731 kB/s

  Installing collected packages: coverage

  Successfully installed coverage\-5.1 C:\\Users\\TynamYang\>

  安装完成后可以看到安装的版本:coverage-5.1安装完成后使用coverage,coverage有两种使用方法,一种是在命令行中使用,一种是调用API使用。方便控制部分需要测试的代码。

  命令行中使用

  1、基本参数

  命令行中使用时常用参数:

  ·run – 运行Python程序并收集执行数据

  ·report – 报告覆盖率结果

  ·html – 生成HTML文件,内容含覆盖率结果列表

  ·json – 生成JSON文件,内容含覆盖率结果

  ·xml – 生成XML报告文件,内容含覆盖率结果

  ·erase – 清除之前收集的覆盖率数据

  ·combine – 合并多个数据文件

  ·debug – 获取调试信息

  可以使用help命令查看帮助:coverage help

如何分析Python测试代码覆盖率?

  2、运行代码收集信息

  在使用coverage时,基本需要两步运行,第一步运行源代码,收集被测试的源代码覆盖率的信息,第二步生成代码覆盖率的信息报告。

  如下测试代码:

  #test.py

  # coding:utf-8

  import unittest

  def add_numb(a, b):

  return a + b

  def division_numb(a, b):

  return a / b

  class Test(unittest.TestCase):

  def test_add_1(self):

  self.assertEqual(add_numb(1,1), 2)

  def test_add_2(self):

  self.assertEqual(add_numb(2,0), 1)

  def test_division_1(self):

  self.assertEqual(division_numb(2,1), 2)

  def test_division_2(self):

  self.assertEqual(division_numb(2,0), 2)

  if __name__ == "__main__":

  unittest.main(verbosity=2)

  使用命令运行:coverage run test.py

  C:\\Users\\TynamYang\\Desktop> coverage run test.py

  test\_add\_1 \(\_\_main\_\_.Test\) ... ok

  test\_add\_2 \(\_\_main\_\_.Test\) ... FAIL

  test\_division\_1 \(\_\_main\_\_.Test\) ... ok

  test\_division\_2 \(\_\_main\_\_.Test\) ... ERROR \====================================================================== ERROR: test\_division\_2 \(\_\_main\_\_.Test\) \---------------------------------------------------------------------- Traceback \(most recent call last\):

  File "test.py", line 22, in test\_division\_2

  self.assertEqual\(division\_numb\(2,0\), 2\)

  File "test.py", line 9, in division\_numb return a / b

  ZeroDivisionError: division by zero \====================================================================== FAIL: test\_add\_2 \(\_\_main\_\_.Test\) \---------------------------------------------------------------------- Traceback \(most recent call last\):

  File "test.py", line 16, in test\_add\_2

  self.assertEqual\(add\_numb\(2,0\), 1\)

  AssertionError: 2 \!= 1

  ---------------------------------------------------------------------- Ran 4 tests in 0.003s

  FAILED \(failures\=1, errors=1\)

  PS C:\\Users\\TynamYang\\Desktop\>

  代码执行完成后会生成一个覆盖率统计结果文件:.coverage。该文件名可通过设置COVERAGE_FILE环境变量进行修改。

  以上内容为大家介绍了如何分析Python测试代码覆盖率?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线