一、前置和后置

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里的类方法