Python单元测试框架unittest入门

unittest简介

每一种编程语言都有自己的单元测试框架,例如Python的Unittest(Python内置)、Pytest,Java的TestNG、Junit(Java内置),都为自动化测试提供并承担了决定性的支撑。

unittest主要结构

  • Test Case
    • 一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。通过继承TestCase类,创建一个测试用例集,但这个测试用例集里面可能包含多个测试用例,测试用例方法都要以test开头。
  • Test Suite
    • 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。可以通过addTest加载TestCaseTest Suite中,从而返回一个TestSuite实例。
  • Test Runner
    • 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。
  • Test Fixture
    • 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。,常用于测试环境的设置与清理。

unittest单元测试框架的基本使用

addition.py加法运算模块

#!/usr/bin/python3
# @FileName    :addition.py
# @Time        :2020/5/4 下午5:58
# @Author      :ABC
# @Description :

class Addition:
    def addition(self, a, b):
        return a + b

test_addition.py测试用例模块

#!/usr/bin/python3
# @FileName    :test_addition.py
# @Time        :2020/5/4 下午6:02
# @Author      :ABC
# @Description :
import unittest
from selenium_basis.addition import Addition


class AdditionTest(unittest.TestCase):
    add = Addition()

    def test_01_integer_addition(self):
        a = 5
        b = 8
        except_result = 13
        actual_result = self.add.addition(a, b)
        self.assertEqual(except_result, actual_result)

    def test_02_double_addition(self):
        a = 5.1
        b = 8.5
        except_result = 13.6
        actual_result = self.add.addition(a, b)
        self.assertEqual(except_result, actual_result)

    def test_03_negative_number(self):
        a = -2.1
        b = -4
        except_result = -5.1
        actual_result = self.add.addition(a, b)
        self.assertEqual(except_result, actual_result)


if __name__ == '__main__':
    unittest.main()

运行test_addition.py程序输出结果如下:

# .代表testcase运行成功,F代表testcase运行失败
..F
======================================================================
FAIL: test_03_negative_number (__main__.AdditionTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/wenbin/PycharmProjects/LearnWebUIAutoTest/selenium_basis/test_addition.py", line 32, in test_03_negative_number
    self.assertEqual(except_result, actual_result)
AssertionError: -5.1 != -6.1

----------------------------------------------------------------------
Ran 3 tests in 0.000s

FAILED (failures=1)