测试框架基本能力
一款测试框架应该具备以下基本能力:
-
test case: 从程序层面只有
类
、方法
、函数
等,如何定义一条测试用例
?不同的测试框架有不同的规则,例如大部分测试框架以test
开头的方法/函数
识别为一条用例。 -
test fixture: 在运行测试用例前后往往需要完成一些前置/后置的工作,例如用例执行之前需要构造测试数据,用例执行之后需要清除测试数据等,这些工作就可以在测试fixture中完成。
-
test suite: 当框架需要执行用例之前需要查找并添加用例到一个集合中,我们一般称之为测试套件。
-
test runner: 测试运行器主要用例执行测试套件中的用例,并生成日志或报告。
-
assert: 断言主要用于检查用例的结果是否正确,从而判定用例成功/失败。
如果具备了以上能力,那么我们就可以视其为一款测试框架了。
常见单元测试框架
在Python语言中有很多优秀的单元测试框架,这里我们做个简单的介绍。
-
unittest
unittest 单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。
相信大家对unittest并不陌生,他现在被纳入Python语言标准库,当你安装好Python就可以使用他了。
简单示例
# test_ut.py
import unittest
class MyTest(unittest.TestCase):
def test_case(self):
self.assertEqual(2+2, 4)
if __name__ == '__main__':
unittest.main()
运行结果:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
-
QTAF
Testbase是所有QTA测试项目的基础,主要提供测试用例管理和执行、测试结果和报告、测试项目管理配置等功能。
QTAF是由腾讯开源的一款测试工具(框架),其设计风格与unittest比较相似。QTA是腾讯公司部门的缩写,我们也可以称其为Testbase。
# qtaf_demo.py
from testbase.testcase import TestCase
class HelloTest(TestCase):
"""
第一条用例
"""
owner = "foo"
status = TestCase.EnumStatus.Ready
priority =