PyTest一个Python 框架,可编写小型测试,支持更复杂的功能测试

zupzng 2018-11-26

PyTest一个Python 框架,可编写小型测试,支持更复杂的功能测试

项目地址:https://github.com/pytest-dev/pytest

pytest有哪些优点?

  • 允许直接使用assert进行断言,而不需要使用self.assert*;
  • 可以自动寻找单测文件、类和函数;
  • Modular fixtures可以用于管理小型或参数化的测试信息;
  • 与unittest和nose单测框架兼容;
  • 兼容性较好,支持Python 2.7,Python 3.4+。
  • 丰富的插件支持,共计有超过315个插件支持;

安装

开始讲解的第一步,还是先来了解一下如何进行安装~

pytest可以直接使用Python的包管理工具pip来进行安装。

pip install -U pytest

执行上述命令后,即可安装完成pytest。

编写单测用例

在pytest框架中,有如下约束:

  • 所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
  • 在单测文件中,可以包含test_开头的函数,也可以包含Test开头的类。
  • 在单测类中,可以包含一个或多个test_开头的函数。

此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

示例:test_case1.py文件如下:

class TestClass(object):
 def test_one(self):
 x = "this"
 assert 'h' in x
 def test_two(self):
 x = "hello"
 assert hasattr(x, 'check')

兼容unittest与nose

如果之前你的单测全部是基于unittest或者nose来编写的。

不用担心,执行pytest命令同样可以正常运行这些用例并得到结果。

因此无需担心迁移单测框架从而带来额外的人工成本。

常用插件

在之前的内容中,我们提到了pytest的一个优点是有大量的插件支持,例如:

  • pytest-django: 针对Django框架的单测框架
  • pytest-twisted: 针对twisted框架的单测框架
  • pytest-cov: 产生覆盖率报告
  • pytest-instafail: 发送错误时报告错误信息
  • pytest-bdd 测试驱动开发工具
  • pytest-konira 测试驱动开发工具
  • pytest-timeout: 支持超时功能
  • pytest-pep8: 支持PEP8检查
  • pytest-flakes: 结合pyflakes进行代码检查

相关推荐