python单元测试框架unittest介绍和使用

文章目录

      • 一、unittest核心要素
        • 1.TestCase
        • 2.TestSuite()
        • 3.TextTestRunner
        • 4.TextTestResult
        • 5.Fixture
      • 二、unittest工作流程
      • 三、一个简单的uinttest实例-测试运算功能
        • 1.实现运算功能的脚本
        • 2.写测试用例
        • 3.组织执行测试用例
        • 4.运行结果

unittest是python自带的单元测试框架,可以组织执行测试用例,并且提供了丰富的断言方法,可以判断测试用例是否通过,最终生成测试结果。用uinittest单元测试框架可以进行web自动化测试。

一、unittest核心要素

unittest最核心的五个要素是TestCase,TestSuite,TextTestRunner,Fixture

1.TestCase

  • 一个TestCase就是一个测试用例。
  • 一个测试用例就是一个完整的测试流程,包括测试前环境准备(SetUp),执行测试代码(run),以及测试后环境的还原(tearDown)。
  • 一个测试用例就是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。用户定义测试用例需要继承TestCase类。

2.TestSuite()

  • TestSuite()就是测试用例集合。
  • 通过addTest()方法手动把TestCase添加到TestSuite,也可以通过TestLoader把TestCase自动加载到TestSuite,但没有顺序。
  • TestSuite可以嵌套TestSuite。

3.TextTestRunner

  • TestTestRunner是运行测试用例的驱动类,其中的run方法可以执行TestCase、TestSuite。

4.TextTestResult

  • 测试用例的执行结果会保存到TextTestResult中,包括执行了多少用例,成功了多少,失败了多少等信息

5.Fixture

  • 对一个测试用例环境的搭建和销毁,就是一个Fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
  • 比如在测试用例中需要访问数据库,那么可以在setUp()中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器。
  • 测试用例执行后需要还原环境。比如在tearDown()中需要清除在数据库中产生的数据,关闭数据库连接,关闭浏览器。
  • 注意tearDown的过程很重要,要为以后的TestCase留下一个干净的环境。

二、unittest工作流程

unittest的整个流程就是首先需要写好TestCase,然后把TestCase添加到TestSuite,然后由TextTestRunner来执行TestSuite,运行的结果保存在TextTestResult中,整个过程集成在unittest.main模块中。

三、一个简单的uinttest实例-测试运算功能

任务:
写测试用例,测试加减乘除运算
实现:
我们需要写三个脚本文件,一个实现加减乘除运算calculate.py,一个写测试用例testmath.py,一个组织执行测试用例suite.py

1.实现运算功能的脚本

calculate.py

class Math:
    def __init__(self,a,b):
        self.a=a
        self.b=b

    def add(self):
        return self.a+self.b

    def minus(self):
        return self.a-self.b

    def multi(self):
        return self.a*self.b

    def divide(self):
        return self.a/self.b

2.写测试用例

testmath.py

import unittest                     # 导入测试框架
from calculate import Math         # 导入需要测试的模块


class TestMath(unittest.TestCase): #继承类,写测试用例
    def setUp(self):               # 测试前环境准备
        print("用例执行前环境准备")

    def add_test(self):            # 测试方法
        math1=Math(3,2)
        self.assertEqual(math1.add(),5) #断言
        math2=Math(1,1)
        self.assertEqual(math2.add(),2)

    def minus_test(self):
        math1=Math(5,3)
        self.assertNotEqual(math1.minus(),1)

    def multi_test(self):
        math1=Math(2,3)
        self.assertEqual(math1.multi(),6)

    def divide_test(self):
        math1=Math(4,2)
        self.assertNotEqual(math1.multi(),8)

    def tearDown(self):            #测试后环境还原
        print("用例执行后环境还原")

3.组织执行测试用例

suite.py

import unittest
from testmath import *
if __name__ == '__main__':
    #构造测试用例集,添加用例
    suite=unittest.TestSuite()
    tests=[TestMath("add_test"),TestMath("minus_test"),TestMath("multi_test"),TestMath("divide_test")]
    suite.addTests(tests)

    #执行测试
    runner=unittest.TextTestRunner()
    runner.run(suite)

4.运行结果

选中suite.py中main所在行,运行。
python单元测试框架unittest介绍和使用_第1张图片

你可能感兴趣的:(单元测试框架unittest)