unittest是什么?
·单元测试
·框架
先来看看严谨的定义
下面是我的简单理解
·unittest
·unittest怎么用?
在掌握unittest框架使用前,必须对类的继承和静态方法有一定的了解,由于我自己在学习的时候对python类的继承静态方法和装饰器不太熟悉,于是将其总结到自己的笔记中.
·类的继承
先看一个相对严谨的定义:
再看我个人对这个类继承的理解:
·静态方法
形式:
作用:
·实例及解释
//引入模块
import unittest
//待测功能函数
def add(a, b):
return a+b
def divid(s, b):
return s//b
class CodeTest(unittest.TestCase):
//建立环境 在此处没有具体环境的搭建 只是简单提提setup函数
def setUp(self):
print("开始测试")
//断言函数看结果是否符合预期输入 复杂的断言后面会提到
def testAddFunction(self):
self.assertAlmostEqual(2, add(1, 1))
def testDivid(self):
self.assertAlmostEqual(1, divid(2, 1))
def tearDown(self)
print("结束测试")
if __name__ == "__main__":
unittest.main()
这是一个简单的实例
建立一个类 继承unittest.TestCase--->现在这个类具有testcase的全部属性和方法
搭建一个开始环境 这个开始环境对应的就是测试用例的预置条件 如果用例是打开浏览器就执行测试 这里的代码应该用webdriver打开浏览器
testAddfunction 测试加法函数 此处注意名字必须得用test开头 后面会对其简单解释
teardown 清理环境 这个清理环境对应的就是测试用例结束的环境 如果开始环境是打开浏览器此处就该是退出浏览器 开始和结束环境需要看具体的用例预置条件 需不需重置开始条件
//对应第一个建立环境的函数 setUp
开始测试
结束测试
.开始测试//对应第二个建立环境的函数
结束测试
F
结果展示:测试结果有三种形式 . F E
". " 表示执行成功且为正确
"F" 表示执行成功且为错误
”E“ 表示未成功执行,出现错误
FAIL: testDivid (__main__.CodeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "c:\Users\lh\Desktop\学习\python_work\作业\study.py", line 29, in testDivid
self.assertAlmostEqual(1, divid(2, 1))
AssertionError: 1 != 2 within 7 places (1 difference)
----------------------------------------------------------------------
Ran 2 tests in 0.003s
FAILED (failures=1)
报告展示:
FAIL:错误的地方
AseertionError:错误的原因
ran 用例数 in 时间
FALED 错误的结果
unittest简单原理解释
模块简单解释
unittest 模块中主要的几个部分是:testFixture testSuite testCase Runner
testFixture:提供环境的搭建和拆除(固定环境)
testCase:测试用例,编写的代码
testSuite:将测试案例封装到suite交给Runner(固定案例)
Runner:运行以及结果展示(运行)
他们之间关系图如下:
梳理的执行大概流程
两种运行方法
if __name__ == "__main__":
unittest.main()
'''
直接搜索在当前名字的文件里
继承testcase的类里 以test开头的方法
找到后发送给loader打包到suite然后执行
'''
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(CodeTest("testAddFunction"))
runner = unittest.TextTestRunner()
runner.run(suite)
//等价于第一种 与第一种不同的是可以自定义执行顺序和封装多个测试案例