unitetest是python里单元测试框架,是基于 java 的 junit 测试框架 相当于是一个 python 版的 junit,除了 unittest,还有一个 pytest 框架
unittest.TestCase:TestCase类,所有测试用例类继承的基本类
一个TestCase的实例就是一个测试用例。一个测试用例要包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个功能进行验证
unittest.main():使用她可以方便的将一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行
一、setUp()和tearDown()函数
setUp()函数是在众多函数或说是在一个类里最先被调用的函数,每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数几次,与位置无关,随便放在那里都是他先被调用。
tearDown()函数是在众多函数执行完后他才被执行,不管这个类里面有多少函数,他总是最后一个被执行,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法;如果setUp()方法失败,则认为这个测试项目失败,不会执行测试函数也不执行tearDown()方法。
1、setUp()和tearDown()方法都是非必要条件,如果没有也可以写pass
2、setUp()和tearDown()方法每个测试用例都会执行,先执行前置setUp,然后执行的用例(test*),最后执行的后置tearDown
3、setUp():setUp()方法用于测试用例执行前初始化工作。如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器
4、tearDown():tearDown()方法用于测试用例执行之后的善后工作。如关闭数据库连接、关闭浏览器
5、未加装饰器,先执行前置setUp,再执行test开头的test01,最后执行后置tearDown,继续循环所有用例;加了装饰器@classmethod,先执行setUp,再执行test开头的所有用例,最后执行tearDown
#未加装饰器,先执行前置setUp,再执行test开头的测试用例,最后执行后置tearDown,继续循环所有用例
import unittest
class Test(unittest.TestCase): #继承unittest.TestCase这个类
def setUp(self): #测试用例执行前运行
print('setUp__')
def tearDown(self): #测试用例结束后运行
print('tearDown')
def testMinus(self): #测试用例名称以test开头
'''这里是减法'''
print('这里是减法')
result=6-5
hope=1
self.assertEqual(result,hope)
def testDivide(self):
'''这里是除法'''
print('这里是除法')
result=7/2
hope=3.5
self.assertEqual(result,hope)
if __name__ == '__main__':
unittest.main()
C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
setUp__
这里是除法
tearDown
setUp__
这里是减法
tearDown
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Process finished with exit code 0
#加了装饰器@classmethod,先执行setUp,再执行test开头的所有用例,最后执行tearDown
import uni