一、函数
class MathMethod:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def sub(self):
return self.a - self.b
def multi(self):
return self.a * self.b
二、测试用例
import unittest
from class_02_02 import MathMethod # 测试目标类
# 写一个测试类
class TestMathMethod(unittest.TestCase): # 继承了Unittest 里面的TestCase 专门来写用例
"""
1、编写测试用例
2、一个用例就是一个函数 不能传参 只有self关键字
3、所有的用例(所有的函数 都是test_开头)
"""
def setUp(self):#重写 因为父类里面有
print("我要开始执行测试用例了")
def tearDown(self):
print("我已经执行完毕测试用例了")
def test_add_positive(self): # 两个整数相加
res = MathMethod(1, 1).add()
print("1+1的结果值是:", res)
#期望值,实际值,msg
self.assertEqual(2,res)
def test_add_zero(self): # 两个0相加
res = MathMethod(0, 0).add()
print("0+0的结果值是:", res)
self.assertEqual(0, res)
def test_add_negative(self): # 两个负数相加
res = MathMethod(-1, -2).add()
print("-1+(-2)的结果值是:", res)
#断言里面 msg用例执行失败才会显示出来
self.assertEqual(-0, res,"两个数相加出错了")
class TestMulti(unittest.TestCase): # 继承了Unittest 里面的TestCase 专门来写用例
"""
1、编写测试用例
2、一个用例就是一个函数 不能传参 只有self关键字
3、所有的用例(所有的函数 都是test_开头)
"""
def test_multi_positive(self): # 两个整数相乘
res = MathMethod(1, 1).multi()
print("1+1的结果值是:", res)
self.assertEqual(1, res)
def test_multi_zero(self): # 两个0相乘
res = MathMethod(0, 0).multi()
print("0+0的结果值是:", res)
self.assertEqual(0, res)
def test_multi_negative(self): # 两个负数相乘
res = MathMethod(-1, -2).multi()
print("-1+(-2)的结果值是:", res)
self.assertEqual(2, res)
if __name__ == '__main__':
unittest.main()
三、测试报告
# ..成功 F失败 1代码错误
import unittest
import HTMLTestRunner
import time
suite = unittest.TestSuite() # 存储用例
# 方法二:TestLoader
loader = unittest.TestLoader() # 创建一个加载器
# 方法三:TestLoader
import class_02_01
# 从loadTestsFromModule模块里面加载用例
suite.addTest(loader.loadTestsFromModule(class_02_01))
# 执行 上下文管理器---原始的测试报告
# stream 指定保存的文件
# with open("text.txt", "w+", encoding='utf-8') as file:
# runner = unittest.TextTestRunner(stream=file, verbosity=2)
# runner.run(suite)
# # 判断文件是否关闭 Ture表示关闭成功 不关闭会造成资源浪费,下次再打开该文件就会造成资源暂用
# print(file.closed)
# 新鲜 html
if __name__ == "__main__":
time1 = time.strftime("%Y-%m-%d %H-%M-%S")
name1 = time1 + "report.html"
with open("report/测试报告1.html", 'wb') as file:
runner = HTMLTestRunner.HTMLTestRunner(
stream=file,
title="单元测试报告",
description="测试用例执行统计1",
verbosity=2
)
runner.run(suite)