python测试全面入门

Posted by Shi Hai's Blog on July 12, 2017
  • 学习目标:对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是一个用于跟踪测试结果的小应用。

REFS