Python单元测试unittest

1.单元测试

对功能/代码的最小单元进行测试。

对函数或者类当中的方法进行测试就是单元测试。

在python当中进行测试时,使用assert进行比较运算,而不是if...

语法:assert 预期结果 == 实际结果

当使用assert进行断言时,如果测试通过,程序正常执行,测试不通过会报错AssertionError

# if actual == expected:
#     print('ok')
# else:
#     print('not ok')
# assert 断言
assert actual == expected

在不使用任何框架的前提下,其实也是可以进行单元测试的,比如我们可以通过if判断、异常处理或者是其他的流程控制来表示测试是否通过。

def add(a, b):
    # 被测函数,被测单元,被测功能
    return a + b


# a=1 b=1 expected =2
def test_demo():
    # 测试用例
    actual = add(1, 1)
    expected = 2
    # if actual == expected:
    #     print('ok')
    # else:
    #     print('not ok')
    # assert 断言
    assert actual == expected


test_demo()
# 在python当中进行测试时,使用assert,而不是if
# 当使用assert进行断言时,如果测试通过,程序正常执行,测试不通过会报错AssertionError

 运行结果:

可以看出,测试通过,不返回任何数据。但如果测试不通过,会报错AssertionError,这时需要使用try...expect去捕获异常,才不会影响后续的代码运行。

def add(a, b):
    # 被测函数,被测单元,被测功能
    return a + b


# a=1 b=1 expected =2
def test_demo():
    # 测试用例
    actual = add(1, 1)
    expected = 3
    # if actual == expected:
    #     print('ok')
    # else:
    #     print('not ok')
    # assert 断言
    assert actual == expected


test_demo()
# 在python当中进行测试时,使用assert,而不是if
# 当使用assert进行断言时,如果测试通过,程序正常执行,测试不通过会报错AssertionError

Python单元测试unittest_第1张图片

通过以上例子可以看出:在没有使用单元测试框架之前,我们确实可以做自动化测试,但需要手工做到以下几点:

1)测试用例函数,手工去调用测试函数;

2)当用例失败之后,需要加try捕获异常,才不会影响后续代码运行;

3)怎么去收集用例放到一个统一的模块里面;

4)还要手工写测试报告。

而使用单元测试框架,可以极大的简化我们对单元测试的过程,使用单元测试框架以后,框架会帮我们自动去收集用例,运行用例,生成报告。

2.单元测试框架

本质是提供一个工具的集合,我们直接使用就可以,使用手工完成的步骤它都可以自动完成。

unittest是python内置的单元测试框架,不需要安装;pytest是第三方单元测试框架,需要安装,但功能更强大。

unittest框架的特点:

1.带来的好处是便利;

2.但是学习成本也高,既定的框架都有相应的规则,我们使用它,就要遵守它的规则;

3.unittest也需要遵守很多规则。

unittest的几个概念:

  • test case:测试用例
  • test suite :测试集/测试套件
  • test loader:测试加载
  • test runner:运行器,执行器
  • fixture:夹具,前置准备和后置清理

1)Test Case

unittest用法&#x

你可能感兴趣的:(笔记,Python,单元测试,python,c++)