一、前置和后置
1.setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
2.tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
3.前置和后置都是非必要的条件,如果没有也可以写pass
import unittest,time,ddt class Testunittest.TestCase): # 定义一个测试的类,并继承unittest.TestCase这个类 @classmethod # 装饰器,所有用例执行前执行一次 def setUpClasscls): print"start!") @classmethod # 装饰器,所有用例执行后执行一次 def tearDownClasscls): time.sleep1) print"end!") def setUpself): # 每条用例执行前执行一次 print"开始") def tearDownself): # 每条用例执行后执行一次 print"结束") def test01self): # 测试用例的名称以test开头,每条函数相当于一条测试用例 print"执行测试用例01") a = 1 b = 1 self.assertEquala, b) # 判断a和b是否相等 def test03self): print"执行测试用例03") a = "8" b = "hello world!" self.assertIna, b) # 判断a是否在b中 def test02self): print"执行测试用例02") a = True self.assertTruea) # 判断a是True if __name__=="__main__": unittest.mainverbosity=2) # runner = unittest.TextTestRunner) # runner.run) 运行结果如下: test01 __main__.Test) ... ok test02 __main__.Test) ... ok test03 __main__.Test) ... FAIL start! 开始 执行测试用例01 结束 开始 执行测试用例02 结束 开始 执行测试用例03 结束 end!
二、装饰器
1、setUp与setUpClass区别
setup):每个测试case运行前运行
teardown):每个测试case运行完后执行
setUpClass):必须使用@classmethod 装饰器,所有case运行前只运行一次
tearDownClass):必须使用@classmethod装饰器,所有case运行完后只运行一次
2、@是修饰符,classmethod是python里的类方法