0
点赞
收藏
分享

微信扫一扫

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测


一、测试对象

对于非接口类函数,即没有被GET、POST调用的函数

二、unittest

unittest翻译过来就是“单元测试”,单元测试负责对最小的软件设计单元(模块)进行验证。

而引用python官方文档:unittest是python自带的单元测试框架,有时候又被称为”PyUnit”,是 python版本的JUint实现。

1. 例子

1.1  被测代码

首先建立一个类: Compare.py

# 判断2个数大小的类
class Compare:
def __init__(self, a, b):
self.a = int(a)
self.b = int(b)

# 比较
def compareTwoNumber(self):
if self.a > self.b:
return 1
elif self.a < self.b:
return 2
else:
return 0

1.2. 测试代码

写test.py去测试“加法类:Compare.py”:

from Compare import Compare
# 首先引入unittest模块,创建TestAdd类继承unittest的TestCase类。
import unittest

class TestAdd(unittest.TestCase):

# 用于测试用例执行前的初始化工作,而这里用来打印“test start”信息。
def setUp(self):
print('test start')

# 构造测试集 start
# 测试用例1,必须test开头
def test_compare(self):
j = Compare(10, 9)
self.assertEqual(j.compareTwoNumber(), 1, '比较失败!')

# 测试用例2
def test_compare2(self):
j = Compare(10, 11)
self.assertEqual(j.compareTwoNumber(), 2, '比较失败!')

# 测试用例3
def test_compare3(self):
j = Compare(10, 10)
self.assertEqual(j.compareTwoNumber(), 0, '比较失败!')

# 构造测试集 end

# 用于测试用例之后的工作,这里打印“test end”信息。
def tearDown(self):
print('test end')

if __name__ == '__main__':
# 执行测试集合
unittest.main()

2. 代码解释

2.1 前置方法

setUp()方法用于测试用例执行前的初始化工作。

2.2 断言方法

在执行用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果与预期结果是否相等决定的。

unittest框架的TestCase类提供下面这些方法用于测试结果的判断。

  • assertEqual(first, second, msg=None):断言第一个参数和第二个参数是否相等,如果不相等则测试失败。msg为可选参数,用于定义测试时,比较失败的想打印的信息。
  • assertTure(expr, msg=None):判断测试表达式是true或false
  • assertIN(first, second, msg=None):断言第一个参数是否在第二个参数中,反过来讲,第二个参数是否包含在第一个参数。

2.3 后置方法

tearDow()方法与setUp()相对应,用于测试用例之后的工作。

2.4 执行用例的方法

main() :unittest提供的全局方法,可以方便地将一个单元测试模块变成可以直接运行的测试脚本。

main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行它们。

三、Pycharm中实操

1.  使用Pycharm

• Pycharm下载 https://www.jetbrains.com/pycharm/download

• Professional版本可以试⽤30天或申请学⽣优惠

2. 创建⼀个新项⽬,选择Pure Python

选择合适的Interpreter

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_python

3. 新建被测函数

创建⼀个python⽂件并写⼊⼀个函数

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_测试用例_02

Compare.py

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_单元测试_03

4. 新建测试函数

在创建python⽂件处选择unittest

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_python_04

确定后会⽣成⼀个模板⽂件

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_单元测试_05

补全测试⽤例

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_django_06

5.进行单元测试

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_django_07

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_python_08

6. 假设被测代码中有一个地方写错了

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_单元测试_09

我们再次测试

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_python_10

7. 覆盖率检测

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_单元测试_11

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_python_12

【Django 2021年最新版教程34】python unittest 对函数单元测试 覆盖率检测_测试用例_13

参考


举报

相关推荐

0 条评论