unittest 单元测试

本文详细介绍了Python单元测试框架unittest的使用,包括表达用例、收集用例、执行用例和生成测试报告。讲解了如何定义测试类,使用setUp和tearDown方法,以及setUpClass和tearDownClass的用法。此外,还介绍了数据驱动测试库ddt的使用方法,并给出了执行用例和生成HTML测试报告的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分为表达用例,收集用例,执行用例,生成报告四部分

1.表达用例
负责实现功能的函数,一般放在一个单独的py文件中

2.收集用例(一个测试类)
(1)定义一个测试类,继承unittest.TestCase
(2)以test_开头,定义测试函数
(3)每一个test_函数就是一个测试用例
(4)内部用assertxxx进行断言

        例如:assertEqual(a,b),assertIn(a,b), assertTrue(a)

(5)需要导入unittest包
(6)setUp:类下面的每一个用例在执行之前先执行setUp
tearDown:类下面的每一个用例在执行之后再执行tearDown
例:


   class TestRegister(unittest.TestCase):
                def setUp(self):
                       print("每一个用例在执行之前我最先执行")
                def tearDown(self):
                       print("每一个用例在执行之后我再执行")

setUpClass:类下面的第一个用例在执行之前先执行setUpClass
tearDownClass:类下面的最后一个用例在执行之后先执行tearDownClass

  @classmethod
  def setUpClass(cls) -> None:
           print("类下的用例开始执行")
  @classmethod
  def tearDownClass(cls) -> None:
           print("类下的用例执行结束")

整体用法如下:

import unittest
from register import register   #register是一个实现注册功能的py文件

class TestRegister(unittest.TestCase):
       def test_register(self, data):
              res = register(“jane”,123456,123456)
              self.assertEqual(res, {"code": 1, "msg": "注册成功"})

注:通常会使用ddt 对测试流程进行重复使用,只改变测试数据不改变测试流程
ddt的使用:
(1)需要先pip导入 pip install ddt
(2)引入ddt模块 import ddt
(3)在类名上面加 @ddt.ddt
(4)在测试函数上面加 @ddt.data(*datas)
代码应用如下:

import unittest
from register import register
import ddt

datas = [{"user": "python333", "pwd": "1111111", "pwd2": "1111111"},
        {"user": "python444", "pwd": "11111", "pwd2": "222222"},
        {"user": "python555", "pwd": "", "pwd2": ""},
        {"user": "python26", "pwd": "1111111", "pwd2": "1111111"},
        {"user": "python000", "pwd": "00000000000000000000", "pwd2": "00000000000000000000"},
        {"user": "python566", "pwd": "111", "pwd2": "111"}
         ]
@ddt.ddt
class TestRegister(unittest.TestCase):
    @ddt.data(*datas)
    def test_register(self, data):
        res = register(data["user"], data["pwd"], data["pwd2"])
        self.assertEqual(res, {"code": 1, "msg": "注册成功"})

3.执行用例
(1)用例套件:TestSuite(了解,一般不常用)
addTest(类名(“用例名”))#添加一个测试用例
addTests([类名(“用例名”), 类名(“用例名”)])#添加一个测试用例的列表
(2)用例收集:TestLoader
unittest.TestLoader().discover(搜索目录) #默认在test*.py中搜索用例
用法:

  s = unittest.TestLoader().discover(r"D:\pycharm_code\first")

4.生成测试报告
分为两种,一种为text报告,一种为html报告,一般用的都是HTML报告
(1)TextTestRunner

with open("test_result.text", "w",) as file:
    runner = unittest.TextTestRunner(file)
    runner.run(s)

(2)HTML报告
第一种HTMLTestRunner

from HTMLTestRunner import HTMLTestRunner
s = unittest.TestLoader().discover(r"D:\pycharm_code\first")
f = open("report.html", "wb")
test_run = HTMLTestRunner(stream=f, title="测试报告")
test_run.run(s)

第二种BeautifulReport
需要先pip安装 :pip install BeautifulReport

import unittest
from BeautifulReport import BeautifulReport
s = unittest.TestLoader().discover(r"D:\pycharm_code\first")
br = BeautifulReport(s)
br.report("注册测试报告", "register.html")

3,4执行用例和生成测试报告是都写在一个main.py文件中实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值