您当前的位置: 首页 >  Python
  • 0浏览

    0关注

    1477博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

软件工程小施同学 发布时间:2021-07-02 09:31:37 ,浏览量:0

一、测试对象

对于非接口类函数,即没有被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

3. 新建被测函数

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

Compare.py

4. 新建测试函数

在创建python⽂件处选择unittest

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

补全测试⽤例

5.进行单元测试

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

我们再次测试

7. 覆盖率检测

参考

https://blog.csdn.net/weixin_39610594/article/details/110347673

关注
打赏
1665320866
查看更多评论
立即登录/注册

微信扫码登录

0.0626s