Python3-之UnitTest(二)

130 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

src=http___i.cqdj.cc_forum_201307_27_160601dupc4j8gucap6mld.gif&refer=http___i.cqdj.gif

   您好,我是游手好闲的小羊!

一、回顾上一章,TestSuite 与TestLoader 区别

  • TestSuite 需要手动添加测试用例(可以添加测试类,也可以添加测试类中某
  • 个测试方法);
  • TestLoader 搜索指定目录下指定开头.py 文件,并添加测试类中的所有的测试
  • 方法,不能指定添加测试方法;

二、Fixture 介绍

说明:Fixture 是一个概述,对一个测试用例环境的初始化和销毁就是一个 Fixture 。

Fixture 控制级别:

  • 方法级别;
  • 类级别;
  • 模块级别;

方法级别

使用:

  • 初始化(前置处理): def setUp(self) --> 首先自动执行;
  • 销毁(后置处理): def tearDown(self) --> 最后自动执行;

运行于测试方法的始末,即:运行一次测试方法就会运行一次setUp 和 tearDown

示例代码

# test01.py
import unittest
class my_test01(unittest.TestCase):
    def setUp(self):
        print("setUP 执行")
    def tearDown(self):
        print("teardown 执行")
    def test_01(self):
        print("my_test01 的test01")
    def test_02(self):
        print("my_test01 的test02")

类级别

使用:

  • 初始化(前置处理): @classmethod def setUpClass(cls): --> 首先自动执行
  • 销毁(后置处理): @classmethod def tearDownClass(cls): --> 最后自动执行

运行于测试类的始末, 即: 每个测试类只会运行一次setUpClass 和 tearDownClass

示例代码

# test01.py
# 导包
import unittest
class my_test01(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("setUPClass 执行")
    @classmethod
    def tearDownClass(cls):
        print("tearDownClass 执行")
    def setUp(self):
        print("setUP 执行")
    def tearDown(self):
        print("teardown 执行")
    def test_01(self):
        print("my_test01 的test01")
    def test_02(self):
        print("my_test01 的test02")

模块级别

使用:

  • 初始化(前置处理): def setUpModule() --> 首先自动执行
  • 销毁(后置处理): def tearDownModule() --> 最后自动执行

运行于整个模块的始末,即:整个模块只会运行一次setUpModule 和tearDownModule

总结

  • 必须继承unittest.TestCase 类,setUp、tearDown 才是一个Fixture;
  • setUp,tearDown:如果一个类中有多个测试用例,每执行一个测试用例之 前会调用一次setUp,之后会调用一次tearDown;
  • setUpClass,tearDownClass:如果一个类中有多个测试用例,执行所有测试 用例之前只会调用一次setUpClass,之后只会调用一次tearDownClass;
  • setUpModule,tearDownModule:只在import 导入这个模块时会调用一次 setUpModule,模块使用完成之后会调用一次tearDownModule;
  • setUpXXX:一般做初始化工作;
  • tearDownXXX:一般做结束工作;

我是爱分享的小🐏!