【自动化测试教程】 —— pytest 框架详解 ~

news2024/11/25 7:51:35

pytest框架

特点:

  1. 容易上手, 入门简单, 文档丰富, 文档中有很多参考案例
  2. 支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试用例过程中, 支持跳过操作
  5. 支持重复失败的case
  6. 支持运行Nose, unittest编写测试用例
  7. pytest支持很多第三方插件
  8. 方便和持续集成工具集成

1. pytest断言

断言方法: assert result 

2. pytest方法级别的fixture

  • pytest方法级别的fixture是针对每个测试方法, 在执行测试方法前会执行fixxture初始化操作, 在执行完测试方法后, 执行fixture销毁操作
  • 初始化操作方法: def setup(self): 方法来实现
  • 销毁的操作方法: def teardown(self): 方法来实现

3. pytest类级别的实现

  • pytest类级别的fixture针对每一个测试类的初始化和销毁操作, 可以放在一下两个方法中
    • 类级别初始化的方法: def setup_class(self):
    • 类级别销毁的方法: def teardown_class(self):
    • 方法名称固定, 不能修改

4. pytest配置文件

pytest的配置文件有固定的三个名称:  pytest.ini     tox.ini

1

2

3

4

5

6

[pytest]  # 标识当前文件是pytest的配置文件

addopts = --# 标识pytest执行时增加的参数

testpaths = ./scripts # 匹配搜索目录

python_files = test_*.py # 匹配测试文件

python_classes = Test* # 匹配测试类

python_functions = test_* # 匹配测试方法

5. 控制用例的执行顺序

  • unittest测试用例执行顺序是根据测试方法名称的assic码值大小来的, 值越小排在越前面
  • pytest正常情况下是根据测试方法的从上到下的顺序来执行
  • 可以通过pytest-ording插件来控制pytest测试方法执行的顺序
  • 使用
    • @pytest.mark.run(ordeer=x)    # x表示的是整数(既可以是整数也可以是负数)
    • 全为负数或者整数时, 值越小, 优先级越高
    • 既有正数, 又有负数, 那么正数优先级高
    • 没有确定执行顺序的用例优先于负数

6. 失败重试

  • 安装插件pytest-rerunfailures
  • 使用
    • 在addopts参数行中增加对应的参数配置项:    --reruns x(x为一个整数, 代表要执行几次)
    • 当重复执行成功时, 就不会再重复执行

7. 跳过

  • @pytest.mark.skipif(condition, reason=None)
    • condition表示的是跳过的条件
    • 这里的reason参数必填
  • @pytest.mark.skip(reason=None)
    • reason表示的是跳过的原因

8. 数据的参数化

  • pytest参数化的实现: @pytest.mark.parameterize(argnames, argvalues)
    • argnames表示的是参数的名字, 是一串字符, 多个参数之间由逗号隔开 "username, password"
    • argvales 表示的是参数化的数据, [("1111", '1234'), ("2222", '1111')]
    • argname订单参数个数要与argvalues例面的测试数据的个数要相同, 否则会报错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718215.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何搭建独享的IP代理池?

随着互联网技术的日趋成熟,爬虫已经成为一种常见的数据获取方法。在采集业务中,建立本地IP代理池是非常重要的。今天将与您探讨IP代理池的选择以及如何搭建独享的IP代理池。 独享IP代理池是指由客户单独使用的IP池,优点是客户可以享受池中所…

关于opencv中cv2.imread函数读取的图像shape问题

图像坐标系是(w,h),w为x轴,h为y轴,(x,y) 但opencv读出来的数组却正好相反,是(h,w,3),(y,x,3) 所以这里会有一个转换 image cv2.imread(1.jpg) print(image.shape[0:2]) ##输出(365,500&#x…

【操作系统】Linux编程 - 多线程的创建和使用 II (临界区 、互斥量、信号量的使用)

临界区的概念 之前的实例中我们只尝试创建了1个线程来处理任务,接下来让我们来尝试创建多个线程。 不过,还是得先拓展一个概念——“临界区” 临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段&…

哈工大计算机网络课程网络层协议详解之:Internet路由BGP协议详解

哈工大计算机网络课程网络层协议详解之:BGP协议详解 在之前的网络层协议中,我们介绍了Internet网络两个自治系统内的路由协议:RIP协议和OSPF协议。这两个协议应该来说是自治系统内协议的两个代表性协议,前一个基于距离向量路由算…

优化内存利用:深入了解垃圾回收算法与回收器

🔭 大家好,我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏:JVM &am…

机器学习面试题- 特征工程

目录标题 1、为什么要对特征做归一化2、对特征归一化的方法2.1 线性函数归一化2.2 零均值归一化 3、对数据预处理时,如何处理类别型特征3.1 序号编码3.2 独热编码3.3 二进制编码 4、什么是组合特征?如何处理高维组合特征?5、怎样有效地找到组…

​python接口自动化(十)--post请求四种传送正文方式(详解)​

简介 post请求我在之前的文章已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等。我们要知道post请求四种传送正文方式首先需要先了解一下常见的四种编码方式: HTTP 协议规定 POST 提交的数据必须放在消息主体(…

SpringBoot处理全局异常详解(全面详细+Gitee源码)

前言:在日常的开发工作中,项目在运行过程中多多少少是避免不了报错的,对于报错信息肯定不可以把全部信息都抛给客户端去显示,这里就需要我们对常见的七种异常情况统一进行处理,让整个项目更加优雅。 目录 一、基本介绍…

AMEYA360:航顺芯片产品有哪些 航顺家族介绍

经济型 HK32M050 家族 采用ARM Cotex-M0内核,最新工艺标准,最高48M主频,内置16K FALSH,4K SRAM,支持DMA,内置4个模拟比较器,2路运放(PGA),支持多种通讯包括2个…

二叉树 — 给定二叉树中某个节点,返回该节点的后继节点

后继节点定义: 二叉树以中序的方式进行遍历打印,节点X的下一个节点,就是X的后继节点。 假设二叉树如下图所示:则中序遍历的后打印出来的就是 4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7。如果X 3,则X的后继节…

Docker网络模型以及容器网络初探(一)

〇、前言 安装Docker时,它会自动创建三个网络,默认bridge网桥(创建容器默认连接到此网络)、 none 、host。各个方式有各自的特点,它们有着特定的差距,比如网络性能等,一般按照实际应用方式手动…

大数据之数据采集项目总结——hadoop,hive,openresty,frcp,nginx,flume

1、前期准备 2、数据收集 1、开启openresty,nginx和frcp内网穿透 2、编辑并启动定时器 3、查看是否收集到了数据 数据收集阶段结束,进入下一个阶段 2、将收集到的切分好的数据上传到hdfs 使用的工具:flume flume像一个管道一样&#xff0c…

三十九、动态规划——线性DP问题-例题题解

线性DP问题的例题状态划分 一、问题:数字三角形1、题目内容2、状态划分1)状态编号 f[i][j]2)状态划分 3、题解 二、最长上升子序列1、题目内容2、状态划分1)状态编号 f[i]2)状态划分 3、题解 三、最长公共子序列1、题目…

【二维偏序+双指针】ABC245 E

E - Wrapping Chocolate (atcoder.jp) 题意: 思路: 因为两个数组都是无序的,因此可以考虑给这两个数组都排个序 将物品和盒子都按照两个维度去排序 我们可以先去枚举物品,然后去选对应的盒子 在选盒子的过程中,注…

【王道·操作系统】第四章 文件管理(下)

一、文件系统 1.1 文件系统的层次结构 用户需要通过操作系统提供的接口发出上述请求——用户接口由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项——文件目录系统不同的用户对文件有不同的操作权限,因…

c++读取字符串字符时出错

这是我做的一个c爬虫程序但是在抓取网页的时候string类型传递出现了问题 以下是图片代码 url的值是 "http://desk.zol.com.cn/" 我不知道为什么数据传递会出问题 请大佬指教

Java 串口通信(RS232/485)

Java 串口通信(RS232/485) 一.串口通信页面二.串口服务实现1.Java 串口通信配置1.扩展包和依赖库2.Pom配置 2.启动类3.工具包类1.Common2.Crc16Modbus3.SerialUtil 4.WebSocket 配置1.启动配置2.监听配置 5.UI交互类1.串口配置对象2.串口信息获取接口3.R…

HOT39-对称二叉树

leetcode原题链接:对称二叉树 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出&a…

JVM03-优化垃圾回收

JVM的内存区域中,程序计数器、虚拟机栈和本地方法栈这3个区域是线程私有的,随着线程的创建而创建,销毁而销毁;栈中的栈帧随着方法的进入和退出进行入栈和出栈操作,每个栈帧中分配多少内存基本是在类结构确定下来的时候…

消息中间件面试题详解

RabbitMQ 如何保证消息不丢失 消息的重复消费问题如何解决 rabbitmq中死信交换机(RabbitMQ延迟队列有了解吗) 延迟队列:进入队列的消息会被延迟消费的队列 场景:超时订单,限时优惠,定时发布 延迟队列 …