python 几种常用测试框架
测试的常用规则
二、常见的测试框架2.1 Unittestunittest是Python内置的标准类库。它的API跟Java的JUnit、.net的NUnit,C++的CppUnit很相似。 通过继承unittest.TestCase来创建一个测试用例。 具体请参考?文档?。 举个例: import unittest
def fun(x): return x + 1 class MyTest(unittest.TestCase): def test(self): self.assertEqual(fun(3),4)
执行后成功。 但是,如果将期望的结果改成5,则执行的结果如下图所示: 2.2 Doctestdoctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果.即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。 举个例子: def square(x): """Squares x. >>> square(2) 4 >>> square(-2) 4 >>> square(5) 25 """ return x * x if __name__ == ‘__main__‘: import doctest doctest.testmod()
当执行该代码后,会执行文档内>>> 后面的测试代码,并与下一行的结果进行比对。执行的结果如下: 但是,如果我们把结果改一下,square(2)的结果改成5,测试代码如下: def square(x): """Squares x. >>> square(2) 5 >>> square(-2) 4 >>> square(5) 25 """ return x * x if __name__ == ‘__main__‘: import doctest doctest.testmod()
执行的测试结果如下所示: 2.3 py.test py.test是unittest的替代工具。 尽管它是一个功能丰富、灵活的测试框架,但是它的语法很简单。创建一个单元测试就像编写一个模块一样。相比unittest,实现相同的测试功能,py.test做的事情更少。 py.test详细?文档?。 首先,安装py.test pip install pytest
第二步,编写测试代码 def func(x): return x + 1 def test_answer(): assert func(3) == 5
第三步,执行测试代码。
执行的结果如下图所示: 2.4 NoseNose是对unittest的扩展,使得python的测试更加简单。nose自动发现测试代码并执行,nose提供了大量的插件,比如测试输出的xUnitcompatible,覆盖报表等等。 nose的详细文档:?https://nose.readthedocs.org/en/latest/ 注意:nose本身是支持python3的,但是很多它的插件不支持。 2.5 tox最大的特色,是自动最测试环境的管理以及使用多个解析器配置进行测试。 tox的详细文档:?http://testrun.org/tox/latest/ 2.6? Unittest2 是unitest的升级版。对API进行了改善以及更好的诊断语法。 unittest2的详细文档:?https://pypi.python.org/pypi/unittest2 首先,安装 pip install unittest2
为了以后能在unittest与unittest2之间进行切换,最好的代码编写方式如下: import unittest2 as unittest class MyTest(unittest.TestCase): ...
2.7 mock?unittest.mock是用来测试python的库。在python3.3版本以后,这个是一个标准库。?对老版本来说,使用pip install mock 进行安装。 mock的精髓在于,你可以使用模拟的对象来替代你的系统的一部分,然后验证后续的执行是否正确。 mock的详细文档:http://www.voidspace.org.uk/python/mock/
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |