pytest接口自动化测试框架搭建

2023-05-16

fixture

特点:

命令灵活:对于setup,teardown可以省略

数据共享:在conftest.py配置里写方法可以实现数据共享,不需要import导入,可以跨文件共享

scope的层次及神奇的yield组合相当于各种setup和teardown

实现参数化

应用

场景:

测试用例执行时,有的用例需要登录才能执行,有些用例不需要登录。

setup和teardown无法满足这种情况,但是fixture可以。默认scope(范围):function

步骤:

导入pytest

在登录的函数上添加@pytest.fixture()

在要使用的测试方法中传入(登录函数名称)

不传入的就不登录,直接执行测试方法。

fixture作用域

ession是在整个项目中只执行一次的代码

yield关键字

场景:

你已经可以将测试方法【前要执行的或依赖的】解决了,那测试方法后销毁清除数据要如何进行?

解决:

通过在fixture函数中加入yield关键字,yield是调用第一次返回结果,第二次执行它下面的语句返回。

步骤:

@pytest.fixture(scope=module)

在登录的方法中加yield,之后加销毁清除的步骤

数据共享

场景:

你与其他工程师合作一起开发时,公共的模块要在不同文件中,要在大家都访问的到的地方

解决:

使用conftest.py这个文件进行数据共享,并且它可以放在不同位置起着不同的范围共享作用

前提:

conftest文件名不能换

放在项目下是全局的数据共享

执行:

系统执行到参数login时先从本模块中查找是否有这个名字的变量之类的

之后在conftest.py中找是否含有

步骤:

将登录模块带@pytest.fixture写在conftest.py

自动应用

场景:

不想原测试方法有任何改动,或全部都自动实现自动应用,没特例,也都不需要返回值时可以选择自动应用的方法

解决:

使用fixture中的参数autouse=True实现

步骤:

在方法上面加@pytest.fixture(autouse=Ture)

参数化

场景:

测试离不开数据,为了数据灵活,一般数据都是通过参数传的

解决:

使用fixture中的固定参数request传递

步骤:

在fixture中添加@pytest.fixture(params=[1,2,3,'linda'])

在方法参数写request,方法体里面使用request.param接受参数

注意:fixture的参数是params,而调用的时候是request.param,没有s

总结:

模拟setup,teardown(一个用例可以引用多个fixture)

yield的用法

作用域(session,module,类级别,方法级别)

自动执行(autouse参数)

conftest.py用法,一般会把fixture写在conftest.py文件中

实现参数化

pytest.ini文件

pytest.ini是pytest的配置文件

可以修改pytest的默认行为

不能使用中文符号,包括汉字,空格 ,引号,冒号等

作用:

修改用例的命名规则

配置日志格式,比代码配置方便很多

添加标签,防止运行过程报警告错误

指定执行目录

排除搜索目录

改变pytest运行规则

注意:win系统的pytest.ini文件不能写中文,注释也不行

pytest配置-添加默认参数

addopts = -v -s --alluredir=./results

指定/忽略执行目录

设置执行得路径

;testpaths = bilibili baidu

;忽略某些文件夹/目录

norecursedirs = result logs datas test_demo*

插件开发

pytest插件分类

外部插件:pip install 安装的插件

本地插件:pytest自动模块发现机制(conftest.py存放的)

内置插件:代码内部的_pytest目录加载(hook函数)

官网:PyPI · The Python Package Index

常用插件

每一种测试框架收集测试用例的顺序是不一样的

pytest执行顺序控制

场景:

对于集成测试,经常会有上下文依赖关系的测试用例。如十个步骤,拆分成十个case,这时候能知道到底执行到哪步报错。

用例默认执行顺序:自上而下执行

解决:

可以通过setup,teardown和fixture来解决,也可以使用pytest-ordering插件来解决

安装:pip install pytest-ordering

用法:@pytest.mark.run(order=2)

注意:多个插件装饰器(>2)的时候,有可能会发生冲突

并行与分布式并发执行(xdist)

场景1:

测试用例1000条,一个用例执行1分钟,一个测试人员需要1000分钟,通常我们会用人力成本换取时间成本,加几个人一起执行,时间就会缩短。这就是一种分布式场景。

场景2:

假设有个报名系统,对报名总数进行统计,数据同时进行修改操作的时候有可能出现问题,需要模拟这个场景,需要多用户并发请求数据

解决:

使用分布式并发执行测试用例,分布式插件:pytest-xdist

安装:pip install pytest-xdist

注意:用例多的时候效果明显,多进程并发执行,同时支持allure

hook函数

1. 介绍

是个函数,在系统消息触发时被系统调用

自动触发机制

Hook函数的名称是确定的

pytest有非常多的hook函数

使用时直接编写函数体

执行是有先后顺序的

可以在不同阶段实现不同的功能

pytest执行过程

执行顺序:

介绍:定制pytest插件必备之pytest hook的执行顺序 - pytest - 测试人社区

简洁版:

pytest编写插件1-修改默认编码

pytest_collection_modifyitems收集上来的测试用例实现定制化功能

解决问题:

自定义用例的执行顺序

解决编码问题(中文的测试用例名称)

自动添加标签

编写插件2-添加命令行参数

打包发布

打包项目构成:

源码包

setup.py

测试包

打包命令

依赖包安装:

pip install setuptools python的包管理工具,负责安装和发布,尤其是安装拥有依赖关系的包

pip install wheel 生成 *.whl格式的安装包,本质上也是一个压缩包

打包命令:(切到setup.py所在的目录下执行)

python setup.py sdist bdist_wheel

dist目录下.whl的文件,可以通过pip install 下载

发布命令

python3 -m pip install --user --upgrade twine ## 安装twine工具

python3 -m twine upload --repository testpypi dist/* ## 上传代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytest接口自动化测试框架搭建 的相关文章

随机推荐

  • 解决桌面右键文件夹卡死的问题

    新买的电脑莫名其妙的右键文件夹就会卡死 xff0c 弄了好几天 xff0c 终于弄好了 xff0c 记录一下 原因大概率是因为右键选项中的一些第三方软件功能异常造成的 xff08 极大概率是百度云或者QQ导致 xff09 xff0c 使用S
  • wsl2与vscode的安装

    网页搜索wsl xff0c 可以看到微软的wsl官方文档 1 安装 开始菜单搜索功能 xff0c 找到启用或关闭Windows功能 勾选适用于linux的windows子系统 xff0c 和虚拟机平台 确定 xff0c 重启 打开微软商店
  • wsl2常用工具的安装及gitlab上搭建仓库

    1 安装wsl2 安装vscode 2 安装相应工具 apt install cmake apt install make apt install g 43 43 3 编写一个函数hello c 想要编译需要创建一个CMakeLists t
  • wsl2里java离线安装方法

    链接 xff1a https pan baidu com s 1azeWBSkaFbPXyfZX 5lAjA 提取码 xff1a 0312 1 把离线安装包放在任意路径下 例如 xff1a usr java下 2 解压tar xzvf op
  • 数据库SQL--数据表与索引(二)

    一 数据表 xff08 xff09 数据表是数据库中最基本的用于存储数据的对象 xff0c 可以认为数据表是以行和列组成的二维表格 xff0c 通常把行称为记录 xff0c 列称为字段 SQL中的常用数据类型 字符型数据 xff1a 大小写
  • Gstreamer学习(一)——安装Gstreamer

    Gstreamer学习 Gstreamer官方网站为https gstreamer freedesktop org 1 安装Gstreamer 官方文档 xff1a https gstreamer freedesktop org docum
  • Gstreamer学习(二)——播放一个视频

    1 参考范例 官方文档 include lt gst gst h gt int main int argc char argv GstElement pipeline GstBus bus GstMessage msg Initialize
  • 菜鸟笔记之计算机网络(3)

    万维网 了解万维网概念相关概念 声明 xff1a 以下是看的视频并结合网上资料所记的笔记 xff0c 侵权请联系删除 可能会有一些错误 xff0c 发现了会修改 了解万维网 概念 万维网 xff08 World Wide Web xff0c
  • STM32串口中断接收实验

    STM32串口中断接收实验的详细说明 准备代码实现总结 准备 材料 xff1a STM32F407ZGT6最小系统板 xff0c 串口1通过跳线帽连接到了CH340上 需求 xff1a 从电脑向板子的串口1发送一个字符串 xff08 以回车
  • 使用C++将网络字节流转为数字(大端与小端区别)

    首先需要了解下大端和小端存储的区别 xff1a 大端方式 xff1a 用存储器的低字节地址单元来存放数据的最高字节 小端存放 xff1a 用存储器的低字节地址单元来存放数据的最低字节 如下图所示 xff1a 网络上都是以字节流的方式传输数据
  • 响应式移动Web测试题

    第一题 下列选项中对bootstrap中的能让元素只在小屏设备隐藏的类是 B A xff1a hidden xs B xff1a hidden sm C xff1a hidden md D xff1a hidden lg 解析 xff1a
  • ROS path [0]=/opt/ros/melodic/share/ros这种错误所有的可能性

    1 没有在ros workspace目录下source devel setup bash 2 roslauch启动节点时 xff0c launch文件包名打错了也会出现这个错误提示 ERROR cannot launch node of t
  • 【curl】 Linux上用curl 查看请求头和响应头

    curl xff0c 全称CommandLine URL 或 CommandLine Uniform Resource Locator xff0c 顾名思义 xff0c curl命令是在命令行方式下工作 xff0c 利用URL的语法进行数据
  • 【开启新阶段】进入本科末段学习的计划

    简单总结 xff1a 经过本科四年的学习 xff0c 博主只能说取得了一个差强人意的结果 xff0c 但生活总是这样 xff0c 难以尽善尽美 在进入大四下半阶段后 xff0c 准备开始新的学习阶段 xff0c 不再像之前一样有着需要自己不
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(运动学)

    前言 随着我们了解到机器人如何建立运动学模型和动力学模型之后 xff0c 我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证 xff0c 并且可以通过内置的函数进行简单的轨迹规划和可视化观察 xff0c 本节涉及到的工具箱是M
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    文章目录 前言一 空间位姿描述1 二维空间2 三维空间3 旋转的不同表示方法1 xff09 欧拉角2 xff09 RPY角3 xff09 双向量表示4 xff09 轴与旋转角5 xff09 四元数表示 二 动力学1 动力学参数2 正动力学函
  • 平面2R机器人的运动学/动力学建模实例

    文章目录 前言平面2R机器人1 问题假设2 建立运动学模型1 xff09 DH参数法2 xff09 指数积方法3 xff09 雅可比矩阵 xff08 微分变换法 xff09 4 xff09 逆运动学求解 xff08 几何法 xff09 3
  • 2023最新jmeter接口测试入门到精通实战讲解,手把手教学

    一 线程组 线程组元件是任何一个测试计划的开始点 在一个测试计划中的所有元件都必须在某个线程组下 所有的任务都是基于线程组 xff1a 通俗理解 xff1a 线程组 xff1a 就是一个线程组 xff0c 里面有若干个请求 xff1b 线程
  • 2023最新全方面了解接口自动化,看完还不会你锤我

    一 自动化分类 现在流行的是金字塔状的分层测试 xff0c 将测试从上到下分为UI测试层 接口测试层 单元测试层三层 在传统的UI自动化的基础之上更多实施基于代码的低级别自动化测试 xff0c 而不仅仅通过用户界面进行端到端的测试 按照测试
  • pytest接口自动化测试框架搭建

    fixture 特点 xff1a 命令灵活 xff1a 对于setup xff0c teardown可以省略 数据共享 xff1a 在conftest py配置里写方法可以实现数据共享 xff0c 不需要import导入 xff0c 可以跨