Python 单元测试框架之 Pytest 剖解入门第一篇

Pytest 是 Python 的一种单元测试框架,与 Python 自带的 Unittest 测试框架类似,但是比 Unittest 框架使用起来更简洁,效率更高。Pytest 是一个成熟的全功能的 Python 测试工具,可以帮助你写出更好的程序,让我们很方便的编写测试用例。适合从简单的单元到复杂的功能测试。有很多的第三方插件可以自定义扩展,并且支持 Allure。

在此,您可以了解并学习到以下内容:

  1. Pytest 简介;
  2. 安装 Pytest;
  3. 在 Pycharm 配置 Pytest 并运行程序;
  4. 简单实例 Demo;
  5. Pytest 测试 Demo 书写规范。

前言

Pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。Pytest 是一个成熟的全功能的 Python 测试工具,可以帮助你写出更好的程序,让我们很方便的编写测试用例。适合从简单的单元到复杂的功能测试。有很多的第三方插件可以自定义扩展,并且支持 Allure,生成可视化的测试报告和测试结果,并能输出 log 信息。

一、Pytest 介绍

Pytest 官方文档:英文版

Python 单元测试框架之 Pytest 剖解入门第一篇_第1张图片

  • 能够支持简单的单元测试和复杂的功能测试
  • 执行测试过程中可以将某些测试跳过,或者对某些预期失败的 case标记成失败
  • 支持重复执行失败的 case
  • 支持运行由 nose、unittest 编写的测试 case
  • 具有很多第三方插件,并且可以自定义扩展
  • 方便的和持续集成工具集成
  • 支持参数化

二、安装 Pytest

在 CMD 窗口下输入以下指令:

pip install -U pytest   # 通过pip安装py.test --version        # 查看pytest版本

Python 单元测试框架之 Pytest 剖解入门第一篇_第2张图片

安装插件:

  • pytest-html(自动生成 HTML 格式测试报告)
  • pytest-describe(给测试用例一个美丽的名字)*pytest-autochecklog(不只是自动生成测试日志)-安装此之前先安装 PyYAML

以上插件均在 Python3.4.4 下通过 pip 工具安装。

Python 单元测试框架之 Pytest 剖解入门第一篇_第3张图片

三、在 PyCharm 配置 Pytest 并运行程序

通常我们会使用 IDE 进行日常的开发工作,PyCharm 是一款针对 Python 的 IDE,深受广大 Python 爱好者的青睐。我们可以在 PyCharm 中配置 Pytest,从而可以直接在 PyCharm 中使用 Pytest 的功能,方便且高效。

当我们在命令行安装好 Pytest 后,在 PyCharm 中进入 File -> Settings... -> Tools -> Python Integrated Tools ,在右边的窗口中有一个 Default test runner 选项,点击下拉框可以看到 py.test,选择该项后点击 Apply 即可。然后我们可以回到写有测试函数的文件中直接右键,会出现一个 Run 'py.test' for project_name,直接点击即可运行自动化测试,如下图所示。

Python 单元测试框架之 Pytest 剖解入门第一篇_第4张图片

四、简单实例

根据官方文档得来,实现一个示例。

在 PyCharm 中创建文件夹名为 Pytest,在该文件下创建命名为 test_sample.py 脚本文件,然后输入如下程序,在 PyCharm 底部的 Terminal 中输入指令进入当前目录下:D:\work\test_sample>(此路径是本篇保存脚本文件路径),然后执行如下指令:

py.test  test_sample.py

test_sample.py脚本如下

coding:utf-8def func(x):    return x +1def test_func():    assert func(3) ==5

这里我们定义了一个被测试函数 func,该函数将传递进来的参数加 1 后返回。我们还定义了一个测试函数 test_func 用来对 func 进行测试。test_func 中我们使用基本的断言语句 assert 来对结果进行验证。

运行代码:

Python 单元测试框架之 Pytest 剖解入门第一篇_第5张图片

结果分析:

执行测试的时候,我们只需要在测试文件 test_sample 所在的目录下,运行 py.test 即可。Pytest 会在当前的目录下,寻找以 test 开头的文件(即测试文件),找到测试文件之后,进入到测试文件中寻找 test_ 开头的测试函数并执行。

通过上面的测试输出,我们可以看到该测试过程中,一个收集到了一个测试函数,测试结果是失败的(标记为 F),并且在 FAILURES 部分输出了详细的错误信息,帮助我们分析测试原因,我们可以看到 assert func(3) == 5 这条语句出错了,错误的原因是 func(3)=4,然后我们断言 func(3) 等于 5。

再一个示例:

py.test test_class.py

test_class.py 脚本如下:

#coding:utf-8class TestClass():    def test_one(self):        x = "this"        assert "h" in x    def test_two(self):        x = "hello"        assert x == "hi"    def test_three(self):        x = "world"        assert x != "worl"

运行结果:

Python 单元测试框架之 Pytest 剖解入门第一篇_第6张图片

运行该测试用例可以看到,该测试共执行了两个测试样例,一个失败一个成功。同样,我们也看到失败样例的详细信息,和执行过程中的中间结果。

五、Pytest 测试样例规范

  • 测试文件以 test_ 开头(以 _test 结尾也可以)
  • 测试类以 Test 开头,并且不能带有 __init__ 方法
  • 测试函数以 test_ 开头
  • 断言使用基本的 assert 即可

六、获取帮助信息

py.test --version # shows where pytest was imported from(查询py.test的版本号)  py.test --fixtures # show available builtin function arguments(显示可用的内置函数参数)py.test -h | --help # show help on command line and config file options(显示帮助命令行和配置文件选项) 

下节,将讲解怎样通过 Pytest 规范来运行多个测试用例文件。。。欢迎大家共同学习交流

交流


本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

阅读全文: http://gitbook.cn/gitchat/activity/5b17532e8a829e061f2a39f9

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

你可能感兴趣的:(Python 单元测试框架之 Pytest 剖解入门第一篇)