单元测试

功能测试
1、用例 TestCase
2、执行用例 1、TestSuite 存储用例 2、TestLoader 找用例,加载用例,存到1的TestSuite
3、对比实际结果 期望结果 判断用例是否通过 # 断言 Assert
4、出具测试报告 TextTestRunner
一、创建一个python文件math_method
class MathMethod:
    def __init__(self,a,b):
        self.a=a
        self.b=b
    def add(self):  # 加法
        return self.a+self.b
    def multi(self): # 乘法
        return self.a*self.b
        
二、创建一个python文件class_01
# 单元测试的本质 测试函数 代码级别  通过代码级别
# 单元测试的框架  unitest+接口   pytest+web=》接口
# pytest+jenkins+allure



import unittest
from day0210.math_method import MathMethod  # 测试的目标类


# 1+1
# 0+1
# -1+-2
# 写一个测试类  对我们自己写的mathmethod模块里面的类进行单元测试

class TestMathMethod(unittest.TestCase):  # 继承了unittest的TestCase类  写测试用例
    # 编写测试用例
    # 1、一个用例就是一个函数  不能传承  只有self关键字
    # 2、所有的用例  (所有的函数都是test开头)
    def test_add_two_positive(self):  # 两个整数相加
        res = MathMethod(1, 1).add()
        print("1+1的结果值是:", res)
        # 加一个断言:判断期望值与实际值的比对结果 一致就算通过 不一致就算失败
        # 第一个参数期望值  第二个参数实际值
        self.assertEqual(2, res)

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

    def test_add_two_negative(self):  # 两个整数相加
        res = MathMethod(-1, -2).add()
        print("-1+-2的结果值是:", res)
        self.assertEqual(-3, res)


class TestMultiMethod(unittest.TestCase):  # 继承了unittest的TestCase类  写测试用例
    # 编写测试用例
    # 1、一个用例就是一个函数  不能传承  只有self关键字
    # 2、所有的用例  (所有的函数都是test开头)
    def test_multi_two_positive(self):  # 两个整数相加
        res = MathMethod(1, 1).multi()
        print("1*1的结果值是:", res)

    def test_multi_two_zero(self):  # 两个零相加
        res = MathMethod(0, 0).multi()
        print("0*0的结果值是:", res)

    def test_multi_two_negative(self):  # 两个整数相加
        res = MathMethod(-1, -2).multi()
        print("-1*-2的结果值是:", res)

# if __name__=="__main__":
#     unittest.main()

三、创建一个python文件class_02
import unittest
import HTMLTestRunner
from day0210.class_01 import TestMathMethod,TestMultiMethod  # 具体到类名
from day0210 import class_01  # 具体到模块名
suite=unittest.TestSuite()   #存储用例
# 方法一
# 只执行一条  两个正数相加
# suite.addTest(TestMathMethod('test_add_two_positive'))

# 方法二  TestLoader  loadTestsFromTestCase
loader=unittest.TestLoader()   #创建一个加载器
suite.addTest(loader.loadTestsFromTestCase(TestMathMethod))   #loadTestsFromTestCase 具体到用例
# suite.addTest(loader.loadTestsFromTestCase(TestMultiMethod))
# 方法三 TestLoader  loadTestsFromModule
# suite.addTest(loader.loadTestsFromModule(class_01))       # loadTestsFromModule 具体到模块


# 执行
# 上下文管理器  with ---原始的
# with open("test.txt",'w+',encoding="UTF-8") as file:
#     runner=unittest.TextTestRunner(stream=file,verbosity=2)  # 0  1  2  2是最详细的
#     runner.run(suite)

# 新鲜的HTML
with open("test_report.html","wb") as file: # wb 二进制文件打开
    runner=HTMLTestRunner.HTMLTestRunner(
        stream=file,
        title='python11期单元测试报告',
        description='python11期各位大佬们的报告:',
        verbosity=2,
    )
    runner.run(suite)
四、HTMLTestRunner
HTMLTestRunner第三方包的下载参照 https://blog.csdn.net/weixin_37579123/article/details/84900157
五、setUp和tearDown
def setUp(self):
	print("我要开始执行测试用例了")
def tearDown(self):
	print("我已经执行完毕测试用例了")

什么时候执行?
setUp  执行每一条测试用例之前会执行setUp
tearDown 每一条测试用例执行完毕之后都会执行tearDown
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值