pytest 面试题目 pytest基础_编程语言

对于测试工作人员来说,目前用到的最多的单元测试工具非 pytest 莫属。

pytest 是一个非常流行且成熟的,全功能的 Python 测试框架,适用于单元测试、UI 测试、接口测试。它和单元测试框架 unittest 类似,但是 pytest 更简洁、高效。

很多测试人员学习 unittest 和 pytest 之后,都会感觉到 pytest 才是做测试的最好框架,这是因为 pytest 有许多优点:

  • 简单灵活,容易上手。
  • 支持参数化。
  • 可标记测试功能与属性。
  • pytest 具有很多第三方插件,并且可以自定义扩展,比较好用的如 pytest-selenium(集成 Selenium)、pytest-html(生成 HTML 测试报告)、pytest-rerunfailures(失败 case 重复执行)等。
  • 使用 skip 和 xfail 可以处理不成功的测试用例。
  • 可通过 xdist 插件分发测试到多个 CPU。
  • 允许直接使用 assert 进行断言,而不需要使用 self.assert *。
  • 方便在持续集成工具中使用。

01

pytest 安装

打开 Xfce 终端,输入命令 sudo pip install pytest 然后回车,操作截图如下:

pytest 面试题目 pytest基础_单元测试_02

安装完成后,输入命令 pytest -V 或 pytest --version 检查 pytest 是否安装成功,操作截图如下:

pytest 面试题目 pytest基础_软件测试_03

如果出现 pytest version 等版本信息,则表示安装成功。

02

实例体验

我们在 /home/shiyanlou/ 下新建一个文件夹 test,然后使用 VS Code 打开 test 文件夹。再在 test 文件夹下新建一个 py 文件,并且命名为 test_example.py 。编写 test_example.py 内容如下:

import pytestdef add(a, b):
    return a + bdef test_add1():
    print("add(2, 3)的结果是:{}".format(add(2, 3)))    assert add(2, 3) == 5def test_add2():
    assert add(2, 3) == 6if __name__ == "__main__":
    pytest.main()

运行 pytest 标记的测试用例有两种方法,在 py 文件中添加 pytest.main() ,使用 VS Code 工具右上角的运行按钮执行。另一种方法是在命令行中使用命令运行,本次实验我们采用在命令行中运行。

打开 VS Code 的终端,通过命令 cd /home/shiyanlou/test/ 进入到 test 文件夹下,输入 pytest 后回车,操作截图如下:

pytest 面试题目 pytest基础_软件测试_04

从运行结果中可以看到一些信息:

  • 可以看到运行的平台,运行的 Python 版本,执行的根目录。
  • 收集的测试用例,collected 2 items 表示总共检测到两条测试用例。
  • 执行的测试文件及测试文件中测试用例的结果,其中 . 表示测试通过的用例,F 表示测试失败的用例。
  • [100%] 指运行所有测试用例的总体进度。
  • 如果测试用例运行不通过,则会显示具体的测试用例,并且标注出错的地方。
  • 在最后,会对运行的整体情况给出一个简单的统计。例如 1 failed, 1 passed in 0.09s

03

系统学习

蓝桥云课上线了一门《Web 自动化测试全面提升之 Pytest》,通过 13 个实验带你系统学习 Pytest,逐步掌握 Pytest 框架、PyMySQL、logging 和 OpenPYXL、以及自动化测试中数据驱动模型和关键字驱动模型等。

pytest 面试题目 pytest基础_编程语言_05

在 Python 自动化测试中,Pytest 是非常流行且受大家喜爱的一个测试框架。拥有简单灵活、容易上手、功能强大、插件丰富、支持参数化等特点。是自动化测试中的一把利器。课程会全方位为大家介绍 Pytest 框架的操作,并且会在数据驱动模型和关键字驱动模型中使用。

本系列实验由原著作者基于其《Python Web 自动化测试入门实战》书籍中 Pytest 内容改编而成。

效果图展示

数据驱动模型实战结果展示:

pytest 面试题目 pytest基础_编程语言_06

关键字驱动模型实战结果展示:

pytest 面试题目 pytest基础_编程语言_07