- 学习目标:对python的基础测试相关框架有所掌握,并能熟练使用基础测试框架;
- 学习内容:日常需要用到的测试框架;
单元测试工具
unittest、pytest、nose、subunit、testtools、testrepository
subunit
作者:Robert Collins,是vmware的资深工程师,也是testtools、testr等测试框架的作者,也是cpython的maintainer、也曾是openstack的核心开发者。
模拟测试工具--mock
mock是python中的一个测试标准库。在测试中,我们可以使用mock对象取代我们系统中的部分实现并且可以对这些mock对象的调用情况进行断言。在python3.3之后,mock成为了python3.3的标准库。下面会有两个:demo1(正向测试)、demo2(反向测试)。
demo1
import mock
class A(object):
pass
a = A()
a.method = mock.Mock(return_value=1)
#a.method = mock.Mock()
#a.method.return_value = 1
a.method(1, 2, 3)
在调用a.method(),在mock类中会触发__call__()函数并返回return_value。 mock源码
demo2
import mock
class A(object):
pass
a = A()
a.method = mock.Mock(side_effect=KeyError('fuck'))
#a.method = mock.Mock()
#a.side_effect = KeyError('fuck')
a.method(1, 2, 3)
当我们在进行单元测试时涉及到其他服务,往往会使用@mock.patch()对涉及到的服务进行mock操作。
源代码检查工具--pep8
PEP-->Python Enhancement Proposal PEP第八条-->Python代码风格指导pep8代码风格指导
代码覆盖率工具--coverage
持续集成工具--tox
tox是虚拟环境管理器及测试命令行工具。具体看实践介绍。
自动测试运行器--testr
test reposiotry是一个用于跟踪测试结果的小应用。