Python单元测试--unittest测试框架

本文详细介绍了Python单元测试的重要性和unittest框架的使用。从unittest的特点、作用,到核心概念如test case、test suite、fixture的解释,再到测试报告的生成,包括unittestreport和beautifulreport两种方式。文章还提供了unittest的安装方法,以及如何配置PyCharm以支持unittest运行模式。
摘要由CSDN通过智能技术生成

1. 单元测试

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

最小单元就是函数或类中的方法

举个栗子,对一个函数进行测试

# 被测函数,被测单元,被测功能
def add(a,b):
    return a + b
# a=1,b=1,expected = 2
# 把自动代测试用例放到一个函数中
def test_demo():
    # 测试用例
    actual = add(1,1)
    expected = 2
    if expected == actual:
        print('测试用例通过')
    else:
        print('测试用例失败')
test_demo()

 运行结果:

测试用例通过

不管测试的是函数,类,还是接口,都是把其放到一个函数里,作为被测内容

在python中进行测试,判断测试结果不会用if,而是用断言assert去判断

# 被测函数,被测单元,被测功能
def add(a,b):
    return a + b
# a=1,b=1,expected = 2
# 把自动代测试用例放到一个函数中
def test_demo():
    # 测试用例
    actual = add(1,2)
    expected = 2
    # if expected == actual:
    #     print('测试用例通过')
    # else:
    #     print('测试用例失败')
    # 用assert代替if判断
    assert expected == actual
test_demo()

运行结果:(预期结果与实际结果一致时不会报错)

 

# 被测函数,被测单元,被测功能
def add(a,b):
    return a + b
# 把自动代测试用例放到一个函数中
def test_demo():
    # 测试用例
    actual = add(1,3)
    expected = 2
    assert expected == actual
test_demo()

运行结果:(预期结果与实际结果不一致时会报错)

总结:当使用assert断言,如果测试通过,程序正常执行。如果测试不通过,报出AssertionError

assert失败,本质上就是一个异常,异常类型AssertionError

当我们没有使用单元测试框架之前,我们确实可以做自动化测试

1、首先要写测试用例函数,手工去调用测试函数

2、当用例失败之后,需要手工去加try...,失败一个加一个,过程太麻烦了

3、怎么收集测试用例,放到一个统一的模块

4、还要手工生成测试报告

这个过程真的是好麻烦,手工处理太慢,所以我们要学习单元测试框架,来简化工作流程,uinttest可以帮我们收集测试用例,运行用例,生成测试的报告,下面就来介绍一下单元测试框架

2. assert介绍

断言:判断测试用例的结果是否成功

assertEqual()断言是否相等,这个用的比较多

assertTrue()断言是否为真,这个是万能的,只要条件为真即可

assertIn()断言是否包含

assert有好多种方法,不用全都记住,只要记住assertEqual(),assertTrue()的用法即可

import unittest


class TestDemo(unittest.TestCase):
    def test_demo_1(self):
        self.assertEqual(1 + 1, 2)

    def test_demo_2(self):
        self.assertTrue(1 + 1 == 2)

    def test_demo_3(self):
        self.assertIn('1', '123')

运行结果:

3. 单元测试框架unittest

单元测试框架本质是提供一系列工具的集合,一套解决方案,直接拿来使用,代替手工处理的步骤

unittest和pytest都是单元测试框架,unittest是python内置的,不需要安装,而pytest 是第三方库,需要安装。两个功能是一样的,用法差别不大,pytest相对来说更强大,之后我会介绍

3.1 unittest的特点与作

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值