pytest自动化测试框架之断言

news2024/12/23 3:23:42

前言

断言是完整的测试用例中不可或缺的因素,用例只有加入断言,将实际结果与预期结果进行比对,才能判断它的通过与否。

unittest 框架提供了其特有的断言方式,如:assertEqual、assertTrue、assertIn等,pytest 同样有自己的断言方式,即使用assert进行断言。

assert

pytest 中使用python源生态assert字段进行断言。

常用断言方式

pytest常用的断言方式如下:

  • 判断是否相等,assert Actual(实际结果) == Expected(期望结果)
  • 判断是否不相等,assert Actual != Expected,其他如 >、<、>=、<= 都可直接使用。
  • 判断xx是否为真,assert xx
  • 判断xx是否不为真,assert not xx
  • 判断b是否包含a,assert a in b
  • 判断b不包含a,assert a not in b

assert 断言的对象可以是字符串、int、float、list、dict、tuple 任一类型。

使用示例

自定义了一个查询所有用户信息接口,返回参数格式如下:

{
    "code": 1000,
    "data": [
        {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"},
        {"id": 2, "username": "梅艳芳", "sex": 1, "telephone": "95511", "address": "上海黄浦区"},
        {"id": 3, "username": "陈百强", "sex": 0, "telephone": "10086", "address": "北京海淀区"},
    ]
}

用例断言如下:

def test_get_all_users():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users"
    res = requests.get(url=url).text
    res = json.loads(res)
    # 断言是否相等
    assert res['code'] == 1000
    # 断言返回结果中data是否为True(这里其实就是判断是否为空)
    assert res['data']
    
    Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
    # 断言返回结果中data是否包含刘德华的信息
    assert Andy in res['data']

断言通过:

我们修改一下脚本让断言不通过,如下:

def test_get_all_users():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users"
    res = requests.get(url=url).text
    res = json.loads(res)
    # 断言是否相等
    assert res['code'] == 1001
    # 断言返回结果中data是否为True(这里其实就是判断是否为空)
    assert not res['data']
    
    Andy = {"id": 1, "username": "刘德华", "sex": 0, "telephone": "12306", "address": "香港九龙区"}
    # 断言返回结果中data是否包含刘德华的信息
    assert Andy not in res['data']

运行结果如下:

可以看到,code 的 Actual 为1000,而 Excepted 为1001,所以断言直接报错,不继续执行后面的代码。

断言结果添加异常信息

我们可以在断言异常的时候,输出一些提示信息,这样断言报错后,可以方便我们查看原因。

自定义的用户信息接口可以查询某个用户的信息,对它编写测试脚本如下:

def test_get_user():
    '''查询所有用户信息'''
    url = "http://127.0.0.1:5000/users/1"
    res = requests.get(url=url).text
    res = json.loads(res)
    assert res['code'] == 1000
    assert res['data']['username'] == "张学友", "判断返回是否为张学友,实际返回:{}".format(res['data']['username'])

运行结果如下:

总结

pytest 还能对执行过程中产生的 Exception 及 Warnning 进行断言,但这些情况在我们的测试中很少会用到,所以不做过多阐述。

 

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

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

相关文章

小程序商品如何设置规格

商品规格是指商品在不同属性上的区分&#xff0c;比如颜色、尺寸、款式等。通过设置规格&#xff0c;商家可以更好地展示商品的多样性&#xff0c;并方便用户选择和购买。下面是怎么设置小程序产品规格的方法和步骤。 1. 添加/修改商品的时候&#xff0c;点击规格&#xff0c;会…

YOLOv5源码中的参数超详细解析(2)— 配置文件yolov5s.yaml

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5配置了5种不同大小的网络模型&#xff0c;分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;其中YOLOv5n是网络深度和宽度最小但检测速度最快的模型&#xff0c;其他4种模型都是在YOLOv5n的基础上不断…

(力扣)用两个队列实现栈---C语言

分享一首歌曲吧&#xff0c;希望在枯燥的刷题生活中带给你希望和勇气&#xff0c;加油&#xff01; 题目&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#…

SpringBoot操作Jedis

SpringBoot操作Jedis 1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

odoo系统局域网及外网访问?快解析内网穿透方案教程

首先&#xff0c;带着大家了解一下odoo是什么&#xff1f; 前身是 OpenERP。Odoo是一个广泛使用的开源ERP&#xff08;企业资源规划&#xff09;系统&#xff0c;它的主要特点之一就是高度模块化的设计。此套装可满足中小型企业的一切应用需求&#xff0c;例如&#xff0c;企业…

性能测试怎么做?性能测试步骤指标

前言 性能测试的目的是发现系统处理能力的瓶颈而系统调优才是最终的目的&#xff0c;如果能进一步提高各业务服务器、数据库服务器的调优技能&#xff0c;对性能测试工作来说是如虎添翼。 相信我们进行性能测试的时候&#xff0c;都遇到过这样的问题&#xff1a; 1、你的性能测…

Docker+Consul+Registrator 实现服务注册与发现

第四阶段 时 间&#xff1a;2023年8月8日 参加人&#xff1a;全班人员 内 容&#xff1a; DockerConsulRegistrator 实现服务注册与发现 目录 一、服务注册中心引言 CAP理论是分布式架构中重要理论&#xff1a; 二、服务注册中心软件 &#xff08;一&#xff09;Zoo…

SpringBoot+MyBatis多数据源配置

1.先在配置文件application.yml中配置好数据源 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedb1:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: rootjdbc-url: jdbc:mysql://192.168.110.128:3306/CampusHelp?useUnicodeyes&…

adb 命令行执行单元测试

文章目录 1、配置 adb 环境变量2、adb 执行测试3、官方文档解读 adb 使用&#xff08;1&#xff09;第一条执行测试的adb命令&#xff08;2&#xff09;am instrument 参数&#xff08;3&#xff09;-e 参数 的 key-value键值对&#xff08;4&#xff09;用法用例 4、存在问题 …

【Spring】实现FactoryBean接口

FactoryBean FactoryBean是一个接口&#xff0c;需要创建一个类来实现该接口&#xff0c;该接口中有三个方法&#xff0c;通过重写其中的两个方法&#xff0c;获得一个对象&#xff0c;三个方法分别是&#xff1a; 1.getObject():通过一个对象交给IOC容器管理2.getObjectType(…

【DMA】如何保证 DMA 和 cache 的一致性

一方面&#xff0c;当 CPU 要从cache 读取数据时&#xff0c;会先检查cache是否命中&#xff0c;如果命中就直接返回&#xff0c;此时便不再访问内存&#xff1b;另一方面&#xff0c;DMA 在 向内存写入数据。这样一来就造成了DMA 传输的内容和cache中缓存的内容不一致。 DMA 向…

【ztree应用】基于jquery实现带检索功能的ztree文件夹折叠效果(附源码下载)

文章目录 写在前面涉及知识效果展示1、搭建dom2、引入ztree和jquery3、实现搜索功能及调用4、源码分享1&#xff09;百度网盘2&#xff09;123云盘3&#xff09;邮箱留言 总结 写在前面 前些日子&#xff0c;领导要求做一个关于数据库管理的工具&#xff0c;主要想支持一些批量…

根文件系统制作

1.官网下载工具 制作工具&#xff1a;busybox https://busybox.net/downloads/ 2.制作根文件系统 2.1准备工作 a.把压缩包放在FSP1M目录下&#xff0c;并解压 2.2正式开始 2.2.1配置交叉编译工具链 1. 打开Makefile文件 2. 修改ARCH &#xff1f;$(SUBARCH) &#xf…

抑郁症与肠道微生物群有何关联

谷禾健康 抑郁症肠道菌群 当一个人面临抑郁症时&#xff0c;一切看似平常的事都会变得很有挑战性。上班、与朋友社交&#xff0c;甚至只是起床都感觉很困难。 抑郁症是如今已是世界上最普遍的精神障碍之一&#xff0c;一直是心理学和医学领域的研究热点。抑郁症是一种需要预防和…

Android监听电量变化广播(动态广播代码)

activity_main.xml中 <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent&quo…

华为云Classroom赋能—TooKit助力开发者上云

对于资深程序员而言&#xff0c;IDE是必不可少的&#xff0c;它好比是剑客手中的宝剑&#xff0c;IDE帮助程序员更快更丝滑的去编程&#xff0c;同时插件就是这把剑上的各种Buff&#xff0c;为宝剑赋能&#xff0c;提供更好的升级打怪体验。 什么是Huawei Cloud Toolkit Huaw…

预测赢家(力扣)dfs + 备忘录 JAVA

给你一个整数数组 nums 。玩家 1 和玩家 2 基于这个数组设计了一个游戏。 玩家 1 和玩家 2 轮流进行自己的回合&#xff0c;玩家 1 先手。开始时&#xff0c;两个玩家的初始分值都是 0 。每一回合&#xff0c;玩家从数组的任意一端取一个数字&#xff08;即&#xff0c;nums[0]…

售价18-25万元:比亚迪海豹DM-i预定价格公布,新一代主流轿车?

比亚迪海豹DM-i&#xff0c;全新一代主流中型轿车&#xff0c;已从7月19日起开始大规模生产。 此款汽车的目标市场是挑战传统中型轿车领域&#xff0c;预计售价区间为18-25万元&#xff0c;并计划于第三季度正式投放市场。官方宣称&#xff0c;这款混合动力轿车是同级别中仅有…

《Zookeeper》源码分析(四)之ServerCnxnFactory的启动过程

目录 ServerCnxnFactory1. 创建ServerCnxnFactory2. 配置属性configure()3. 启动start() ServerCnxnFactory Zookeeper使用ServerCnxnFactory管理与客户端的连接&#xff0c;服务端每与一个客户端就会创建一个ServerCnxn实例并由ServerCnxnFactory管理&#xff0c;ServerCnxnF…

SAP MM学习笔记15-物料调达中的Master数据(3)-购买情报

SAP中做一个购买发注的时候&#xff0c;涉及到以下Master数据&#xff1a; 1&#xff0c;仕入先Master&#xff08;供应商&#xff09;&#xff1a;跟谁买 2&#xff0c;品目Master&#xff08;物料&#xff09;&#xff1a;买什么 3&#xff0c;购买情报&#xff1a;什么价…