unittest简介
每一种编程语言都有自己的单元测试框架,例如Python的Unittest(Python内置)、Pytest,Java的TestNG、Junit(Java内置),都为自动化测试提供并承担了决定性的支撑。
unittest主要结构
Test Case
- 一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。通过继承
TestCase
类,创建一个测试用例集,但这个测试用例集里面可能包含多个测试用例,测试用例方法都要以test
开头。
- 一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。通过继承
Test Suite
- 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。可以通过
addTest
加载TestCase
到Test 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)