一、前置和后置
1.setUp:在写测试用例的时候,每次操作其实都是基于打开浏览器输入对应网址这些操作,这个就是执行用例的前置条件。
2.tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
3.前置和后置都是非必要的条件,如果没有也可以写pass
import unittest,time,ddt class Test(unittest.TestCase): # 定义一个测试的类,并继承unittest.TestCase这个类 @classmethod # 装饰器,所有用例执行前执行一次 def setUpClass(cls): print("start!") @classmethod # 装饰器,所有用例执行后执行一次 def tearDownClass(cls): time.sleep(1) print("end!") def setUp(self): # 每条用例执行前执行一次 print("开始") def tearDown(self): # 每条用例执行后执行一次 print("结束") def test01(self): # 测试用例的名称以test开头,每条函数相当于一条测试用例 print("执行测试用例01") a = 1 b = 1 self.assertEqual(a, b) # 判断a和b是否相等 def test03(self): print("执行测试用例03") a = "8" b = "hello world!" self.assertIn(a, b) # 判断a是否在b中 def test02(self): print("执行测试用例02") a = True self.assertTrue(a) # 判断a是True if __name__=="__main__": unittest.main(verbosity=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里的类方法