Python—Pytest接口自动化框架搭建

1.首先安装pytest

pip install pytest

2.编写单测用例

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

所有的单测文件名都需要满足test_ _.py格式或__test.py格式。
在单测文件中,可以包含test_开头的函数,也可以包含Test开头的类。
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。

import pytest

content of test_sample.py

def func(x):
return x + 1
def test_answer():
assert func(3) == 5
运行 pytest 或 指定特定文件 pytest -q test_sample.py

2.1 运行pytest 则遍历当前目录及子目录

Python---Pytest接口自动化框架搭建
看红色圈住的部分,可以得出它是循环遍历它当前目录和子目录

2.2 pytest -q test_class.py 指定文件运行

Python---Pytest接口自动化框架搭建
3.测试用例搜索

定义是:搜索测试文件和测试用例的过程称为测试搜索.

想要被搜到,必须遵守pyteset的命名规则:

所有的单测文件名都需要满足test_ _.py格式或__test.py格式。
在单测文件中,可以包含test_开头的函数,也可以包含Test开头的类。
在单测类中,可以包含一个或多个test_开头的函数。
为了好记,测试文件和测试函数必须以 test_开头,类是Test 开头.

4.控制台信息讲解

Python---Pytest接口自动化框架搭建

4.1. test session starts
这个是每次运行的分割线

4.2. platform 信息

1.win32 代表用的是windows ,MAC 显示的是darwin

2.接着显示的是Python 和 pytest的版本 , py 和pluggy是pytest包

3.rootdir 当前的起始目录, inifile是指配置文件,后边章节我会详细讲解.

  1. collected 5 itemes 一共搜集了多少测试用例.

  2. test_run01.py …

测试文件后边的”.” 代表测试通过, F(Fail),E(error),s(skip),X(xpass)>预期失败但是成功了
x(xfail)>预期失败执行也失败了.(下边我讲解具体详情)
6. 4 fail,1passed in 0.06 seconds======
表示通过的数量,没有通过也会总结数量 ,以及花费得时间.

5.使用命令行选项
有了命令行选项使其操作我们的用例变的非常灵活。Unittest 框架如果想执行复杂的场景
变得很鸡肋,这是pytest 优胜Unittest的地方.

以下列举的是常用的命令行选项,已经可以满足我们使用,如果个人想扩展,可以用

pytest –help 可以查到全部的命令 自己可以尝试下,在这不截图了

5.1 -–collect-only

Python---Pytest接口自动化框架搭建
从图片可以看出 一共搜集了5 个测试用例,在执行结果 是 no tests ran 说明只是搜集并不执行。

5.2. -k 选项
重要功能是利用你使用的表达式来 指定希望运行的测试用例.

比如:你用 pytest -k “表达式”
pytest 根据 你输入的表达式内容进行去匹配 测试用例的名字里是否有这个表达式内容进行过滤.

然后再运行. 如果想查找多个内容,可以用 or 进行连接 ,请看下边的截图:

Python---Pytest接口自动化框架搭建

5.3.-m 选项
m 是marker的缩写,功能是执行自己标记的测试用例,我先讲解如何标记测试用例
如果我们想执行带有 first_case 怎么标记呢
请看下边的实例, 用到了@pytest.mark.first_case, 其中first_case 是装饰器用于标记的内容.

import pytest
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 5
@pytest.mark.first_case
def test_task01():
assert 1 == 1

def test_task02():
assert 1 == 1

def test_task03():
assert 1 == 1
pytest -m “first_case” –collect-only 或者
pytest -m “first_case”

PS E:\Python_Web\pytest-requests-allure> pytest -m “first_case” –collect-only
================================================= test session starts =================================================
platform win32 – Python 3.7.2, pytest-4.5.0, py-1.8.0, pluggy-0.12.0
rootdir: E:\Python_Web\pytest-requests-allure
plugins: allure-pytest-2.6.3, html-1.20.0, metadata-1.8.0
collected 8 items / 6 deselected / 2 selected

================================================== warnings summary ===================================================
d:\software\python\python37\lib\site-packages_pytest\mark\structures.py:324
d:\software\python\python37\lib\site-packages_pytest\mark\structures.py:324: PytestUnknownMarkWarning: Unknown pytest.mark.first_case – is this a typo? You can register custom marks to avoid this warning – for details, see https://docs.pytest.org/en/latest/mark.html
PytestUnknownMarkWarning,

– Docs: https://docs.pytest.org/en/latest/warnings.html
====================================== 6 deselected, 1 warnings in 0.11 seconds =======================================
如果想用多个marker ,可以这么写 “marker1 or marker2” 意思是执行 mark1 和mark2所有测试用例
也可以用not 过滤, “marker1 and not marker2” 意思是 执行marker1 并且不包含marker2用例.

  1. -x 选项

这个选项是为debug 准备的,正常的流程 是如果断言失败,它会继续执行并不会断掉.如果想在第一个断言失败我就不让继续执行,就可以用-x选项. 遇到断言失败就停止执行.有利于我们查找原因.

7.–lf 选项 (lf 是 last failed 的缩写)

这个选项用处很大,直接过滤出最后一个fail 的测试用例,有利于我们查找失败的用例,解决好,我们再运行这个if 选项 ,可以再找出最后一个fail,省了我们再执行成功的用例,节省我们的时间 .

8.–ff (是 failed first)
和 –lf 不同是的是,它优先运行失败的case ,再把之前运行通过的也要运行. 自己尝试下,这里不做演示
9.-v 选项
这个会在控制台输出更多的内容,最明显的区别就是每个文件中的每个测试用例都占一行(先前是每个文件占一行)

我把这两种情况都打印出来,看下

Python---Pytest接口自动化框架搭建

Python---Pytest接口自动化框架搭建

10 –tb=style 选项
这个选项用于对失败输出信息的显示方式,
输出的信息一般包括 1. 失败出现在哪一行2.是什么失败 3.怎么失败的 这三要素是信息追溯
我们常用的style 有 short ,no, line
实例如下:

Python---Pytest接口自动化框架搭建

no 屏蔽所有的回溯信息,只是显示哪个文件哪个case 失败,
line 具体到哪个assert
short 具体到哪个参数,列举出更详细的失败信息.

实际工作中 -q 和 –tb=line 组合 已经够用

Original: https://blog.csdn.net/qq_40531382/article/details/117594243
Author: 狼道21
Title: Python—Pytest接口自动化框架搭建

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/773806/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • vue中组件的props属性(详)

    今天这篇文章,让你彻底学会props属性…… props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项…

    Python 2023年10月11日
    035
  • VSCode编辑器极简使用入门

    VSCode(Visual Studio Code)是一款开源、跨平台、轻量级的代码编辑器,具有非常丰富的插件生态。他本身就是 JavaScript + Electron ( /ɪ…

    Python 2023年10月12日
    060
  • Python 爬虫 cookie 实战博客,涉及 browsercookie 与 scrapy

    本篇博客学习一下 scrapy 操作 Cookie browsercookie 知识铺垫 第一个要了解的知识点是使用 browsercookie 获取浏览器 cookie ,该库使…

    Python 2023年10月1日
    033
  • python_汇总和计算描述统计

    Axis Indexes with Duplicate Labels# 带有重复标签的轴索引obj = pd.Series(range(5), index=[‘a’, ‘a’, ‘…

    Python 2023年5月25日
    047
  • servlet获取表单数据

    Java servlet获取form表单数据(参数) 在 Servlet 中如何使用 HttpServletRequest 获取请求参数和 request 对象传递数据有哪些方法。…

    Python 2023年6月11日
    097
  • 【爬虫+可视化】Python爬取疫情并可视化处理数据(爬虫入门案例)

    大家好,我是一只小白鼠,一只爱吃饼干的小白鼠。今天给大家讲讲关于爬取,以及如何爬取疫情数据并可视化。 上篇说到python绘制数码管,今天说如何用python简单爬虫。 知识点 爬…

    Python 2023年7月31日
    076
  • Android网络请求(2)

    Android网络请求(2) 在android网络开发中,除get请求外常见的还有post、put、delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过…

    Python 2023年10月14日
    046
  • python第三方包离线安装(以matplotlib为例)

    一、介绍 整篇文章介绍python第三方包离线安装通用方法,单纯离线安装matplotlib,请直接跳到 三、离&…

    Python 2023年8月31日
    044
  • 【网络安全】sql注入语法汇总

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年11月8日
    036
  • Linux设备驱动之SPI驱动

    Linux下SPI驱动分成两部分:主机驱动和设备驱动。 主机驱动: 主机侧SPI控制器使用 struct spi_master描述,该结构体中包含了SPI控制器的序号(很多SoC中…

    Python 2023年11月7日
    036
  • python中的merge函数_Python Merge函数原理及用法解析

    Merge函数的用法jfz免费资源网 简单来说Merge函数相当于Excel中的vlookup函数。当我们对2个表进行数据合并的时候需要通过指定两个表中相同的列作为key,然后通过…

    Python 2023年8月20日
    054
  • 展锐UDX710:MMC概述、SD Card驱动解析及调试

    ; 一、MMC概述 相关定义 符合MMC协议接口的存储器,都称为MMC存储体MMC总线,类似于I2C、SPI总线的一种总线结构使用MMC接口规范(HCI, Multimedia C…

    Python 2023年11月7日
    031
  • python flask 快速搭建 WEB 实战

    python flask 快速搭建 WEB 实战 tags: flask 文章目录 python flask 快速搭建 WEB 实战 * 1. app.py配置首页 2. view…

    Python 2023年8月11日
    059
  • SPL工业智能:原料与产品的拟合

    问题提出 工业生产活动的目标是利用原料生产产品,从而产生利润。原料经过一系列加工过程,包括物理反应和化学反应,最终形成产品,生产的理想状态是原料到产品的转换率是确定的,工厂想生产多…

    Python 2023年11月7日
    043
  • Flask-cms项目搭建与配置(一)

    项目简介 本次项目是基于python的Flask框架实现一个内容管理系统(cms)。基础模块架构如图所示: |-cms ├── app │ ├── __init__.py │ ├─…

    Python 2023年8月14日
    070
  • matplotlib绘制折线图

    plt.legend( bbox_to_anchor=(0.5, 1.05), loc=8, borderaxespad=0, prop=font1, ncol=3, frameo…

    Python 2023年9月1日
    052
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球