Pytest 简介、安装与准备
同学们大家好,如果我们想要去做自动化测试,需要一个好用的测试框架来帮助我们简化工作提高效率。从这个章节开始,我们就来学习测试框架相关的知识。python 中其实有很多个测试框架可以选择。不过在 python 技术栈中,最推荐的测试框架还得是 pytest。接下来我们就来详细学习一下 pytest 框架的用法。这个章节先来学习 pytest 框架的安装和准备。
简介
Pytest 是一个非常流行的 Python 测试框架,并且兼容 unittest 框架,用于编写简单的单元测试和复杂的功能测试。
它非常易于使用,并且功能强大,广泛用于自动化测试、回归测试等各种场景。
pytest 提供了灵活的插件机制、优秀的错误报告、简洁的断言语法、以及丰富的配置选项。
Pytest 可以结合 Requests 实现接口测试; 结合 Selenium、Appium 实现自动化功能测试。
使用 Pytest 结合 Allure 集成到 Jenkins 中可以实现持续集成。
在正式使用之前,我们还是先来认识一下 pytest 测试框架。刚才也提到过,目前 pytest 应该是 python 中最好用的一个测试框架。并且它还能兼容原生的 unittest 框架。如果你原来使用的是 unittest,也可以很轻松的切换过来。它用起来非常简单,而且使用场景也很广泛。能用在自动化测试、回归测试等等场景中。而且,pytest 还提供了非常灵活的插件机制和丰富的配置选项。基本上我们需要做的各种自动化测试,比如接口或者 UI 自动化测试都可以使用 pytest 框架。Pytest 还能结合 Allure 集成到 Jenkins 中实现持续集成。所以说,现在 pytest 在企业实践中真的非常的常见。
学习价值
比如我们来看下这个招聘需求,企业是想要招聘一位可以做接口自动化测试的工程师,描述中很明确的要求大家掌握 pytest 框架。从这儿也能看出来,pytest 测试框架也是目前测试开发工程师必备的技能之一了。
Pytest 的优点
- 简洁易用:编写测试用例非常简单,能够自动发现和运行测试。
- 强大的插件机制:支持扩展,可以方便地与其他工具和框架集成。
- 灵活的配置和插件:可以根据项目的需要灵活配置,支持自定义 hooks 和插件。
- 优秀的断言支持:内置的断言机制更为直观且简洁,比原生的 unittest 框架更容易使用。
接下来我们来总结一下 pytest 的优点吧。首先,使用 pytest 写起测试代码来非常的灵活简单,可以像写普通的功能代码一样,它需要遵守的规范很少。其次,它拥有非常强大的第三方插件库,可以方便地与其他工具和框架集成。它还可以根据项目的需要灵活配置,支持自定义 hooks 和插件。而且 pytest 使用了内置的断言机制,更加直观简洁,比原生的 unittest 框架更容易使用。
Pytest 安装与准备
安装前提是本地已配置完成 Python 环境(版本号>3.6),Pytest 安装有以下两种方式。
下面我们就来正式学习一下 pytest 如何使用。首先要先准备 pytest 环境。当然了,安装前提是本地已配置完成 Python 环境,大家只需要安装 python3点6 以上版本就可以。Pytest 其实就是一个 python 的第三方库,它有两种安装方式。咱们接下来分别来看一下。
通过命令安装
- 安装命令如下:
pip install pytest
- 若已有 Pytest,可以选择更新 Pytest,更新 Pytest 指令如下:
pip install -U pytest
第一种方式,咱们可以直接通过 pip 命令来安装。打开命令行界面,直接执行 pip install pytest 这个命令就可以安装成功。如果原来已经安装过,可以通过加杠U参数来更新到最新版本。
通过 PyCharm 界面化直接安装
如图所示:
除了通过命令行安装之外,还可以通过 pycharm 的界面进行安装。进入 pycharm 的 settings 界面,选择 Project 下的 Python Interpretor。进入界面后,点击加号,在搜索框中输入 pytest 就可以看到要安装的插件。选择 pytest,点击界面下方的 Install Package 按钮就可以安装成功了。
运行第一个脚本:
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
环境准备好之后,下面我们来编写一个最简单的 pytest 测试脚本。先定义一个普通函数 inc,它可以接受一个参数 x,然后返回 x 加 1 的值。接下来定义一个测试函数来测试 inc 函数的功能。使用 assert 关键字断言 inc(3) 的结果等于 5。这里涉及到的 pytest 定义规则在后面的章节会详细介绍。其实咱们自己算一下这个结果,按说 3 传入 inc 函数后得到的结果应该是 4。这个断言应该是不会通过的。那执行结果会是这样的吗?
可通过 pytest
指令运行,将3
这个参数传递给函数 inc()
验证结果是否等于5
,结果为 3+1=4≠5
,所以测试未通过。
我们来通过 pytest 命令执行一下测试函数。可以看到将 3 这个参数传递给函数 inc 后,得到的实际结果为 4,但是断言的条件是结果等于 5。最终 3 加 1 的结果不等于 5,所以测试没有通过,失败了。
下面给大家演示一下这个过程。首先我们先来看一下如何安装。这里我新建了一个项目,使用了虚拟环境,是一个没有安装任何依赖的项目。首先先打开 pycharm 自带的命令行 terminal 执行 pip install pytest 直接安装。如果看到 successfully 就代表安装成功了。如果要更新就需要在这个命令的基础上加上杠 U 参数。这样就可以更新到最新版本。
./assets/Pytest简介安装与准备.mp4
接下来,我们来看看如何在 pycharm 当中使用 pytest 编写测试用例。首先点击鼠标右键,先来创建一个 python 文件,测试文件名先叫做 test pytest first,然后在文件中编写被测函数和测试函数。首先先来定义一下被测函数 inc,定义函数可以直接使用 def 关键字,后面跟上函数名称 inc 就可以。inc 函数可以接受 x 参数作为形参,在函数体中返回 x 加 1。有了被测函数之后,接下来我们再编写测试函数。这里的测试函数命名为 test answer。这个函数就可以验证 inc 函数的功能是否符合预期。所以在测试函数中使用 assert 关键字断言 inc 函数接受 3 为参数后的结果是与 5 相等的。编写好测试函数之后,我们来执行一下看看效果。这里需要进入 terminal 通过命令去执行。直接打开 terminal 默认进入项目所在路径。如果想要直接进去测试文件所在路径,可以在文件上点击鼠标右键,选择 open in terminal。这时再执行 pytest 命令,可以看到执行结果失败,实际结果为 4 与预期结果 5 不相等。
./assets/Pytest简介安装与准备.mp4
总结
- 什么是 Pytest。
- Pytest 安装
- 第一个 pytest 程序。
好了,到这里,pytest 的环境就准备好了。我们来总结一下,这个章节最主要给大家介绍了什么是 Pytest,Pytest 的安装配置,然后编写了第一个 pytest 脚本并执行看了执行结果。
相关资料
大家如果想要获取 pytest 框架最新的内容,可以查阅 pytest 的相关官方资料。这些内容我们也会在后续章节持续给大家做介绍。好了本章节就先介绍到这里。