python使用unittest进行单元测试

使用unittest进行单元测试的步骤

功能测试的流程来看单元测试:
1、写用例 TestCase
2、执行用例 a、TestSuite存储用例 b、TestLoader 找用例,加载用例,存到1的TestSuite
3、对比实际结果 期望结果 判定用例是否通过 #断言 Assert
4、出具测试报告 TextTestRunner

一、编写一个被测试的类mathtest.py

class MathMathod:
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def add(self):#加法
        return self.a+self.b

二、写一个测试类 danyuanceshi_35.py 对mathtest模块里面的 MathMathod类,进行单元测试 相当于测试用例

import unittest
from class_33.mathtest import MathMathod  #测试的目标类
# 1+1
# 0+1
# -1+-2
class TestMathMethod(unittest.TestCase):#继承了unittest里面的TestCase 专门用来写用例
    # 编写测试用例
    # 1、一个用例就是一个函数,不能传参,只有self关键字
    # 2、所有的用例(所有的函数 都是test开头 test_)
    def test_add_two_positive(self):#两个正数相加1+1
        res=MathMathod(1,1).add()
        print("1加1的结果值是:",res)
        # 加一个断言:判断期望值与实际值的比对结果一致就算通过,不一致就算失败
        try:#异常处理
            self.assertEqual(1,res)#期望值,结果值,返回信息
        except AssertionError as e:
            print("出错了!断言错误{0}".format(e))
            raise e #异常处理完成之后,记得要把错误抛出去

    def test_add_two_zero(self):#两个0相加1+1
        res=MathMathod(0,0).add()
        print("0加0的结果值是:",res)
        #断言
        self.assertEqual(0,res,"0加0出错了")#期望值,结果值,返回信息meg,断言里面msg是用例执行失败的时候才会显示

    def test_add_two_negative(self):#两个负数相加-1+-2
        res=MathMathod(-1,-2).add()
        print("-1加-2的结果值是:",res)
        self.assertEqual(-3,res)#期望值,结果值,返回信息

if __name__ == '__main__':
    unittest.main()#默认执行所有的用例,按照函数名的ASCII编码顺序跑的

常用的断言语法:
在这里插入图片描述
三、执行用例 用于执行TestMathMethod类里面的用例(此处使用HTMLTestRunnerNew模板,可以从网上随意下一个)

import  unittest
import HTMLTestRunnerNew#写好的一个模板 你可以直接调用
suite=unittest.TestSuite() #存储用例的容器
# 只执行一条 两个正数相加
# 方法一:
# suite.addTest(TestMathMethod('test_add_two_positive'))
# suite.addTest(TestMathMethod('test_add_two_zero'))

# 方法二:TestLoader
loader=unittest.TestLoader()#创建一个加载器
# 1从测试类里面去找
from class_33.danyuanceshi_35 import TestMathMethod #具体到类名
suite.addTest(loader.loadTestsFromTestCase(TestMathMethod))
# 2从模块类里面去找
# from class_33 import danyuanceshi_35 #具体到模块
# suite.addTest(loader.loadTestsFromModule(danyuanceshi_35))

# 执行———原始的
#上下文管理器,只要是":"后面的代码,执行完之后会自动关闭
# with open("test.txt","a",encoding="utf-8") as file:
#     runner=unittest.TextTestRunner(stream=file,descriptions=True, verbosity=2)#verbosity:0、1、2其中2最详细
#     runner.run(suite)

# 新鲜的可以生成html格式的报告
with open("test_report.html",'wb') as file:
    runner=HTMLTestRunnerNew.HTMLTestRunner(stream=file,
                                            verbosity=2,
                                            title='python单元测试报告',
                                            description='单元测试报告',
                                            tester='小白')
    runner.run(suite)

运行结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值