从0开始python学习-48.pytest框架之断言
目录
1. 响应进行断言
1.1 在yaml用例中写入断言内容
1.2 封装断言方法
1.3 在执行流程中加入断言判断内容
2. 数据库数据断言
2.1 在yaml用例中写入断言内容
2.2 连接数据库并封装执行sql的方法
2.3 封装后校验方法是否可执行
2.4 使用之前封装的断言方法,加入数据库的case
1. 响应进行断言
1.1 在yaml用例中写入断言内容
validate:equals: # 相等断言断言状态码为200: [200,status_code] # [预期结果,实际结果]contains: # 包含断言断言响应结果包含access_token: [access_token,json]
1.2 封装断言方法
class AssertUtil:def assert_all_case(self,res,assert_type,value):# 深拷贝响应结果resnew_res = copy.deepcopy(res)# 把json()方法变更为json属性,用于反射使用,如果无法获取到new_res.json()抛出异常try:new_res.json = new_res.json()except Exception:new_res.json = {"msg":'response not json data'}# 循环判断断言for msg,data in value.items(): # 这里的value值就是断言的value值yq,sj = data[0],data[1] # 将预期值和实际值取出来# 过反射获取属性的值try:sj_value = getattr(new_res,sj) # 将获取到的响应结果反射给sjexcept Exception:sj_value = sj# 判断断言match assert_type:case "equals":assert yq == sj_value,msgcase "contains":assert yq in sj_value,msg
1.3 在执行流程中加入断言判断内容
def stand_case_flow(caseinfo):# 读取yaml文件中的数据case_obj = verify_yaml(caseinfo)# 请求之后得到响应后判断是否需要断言,如果validate不为None,则需要断言if case_obj.validate: # 这里可以将yaml中的validate内容取出来for assert_type,value in ExtractUtil().use_extract_value(case_obj.validate).items():AssertUtil().assert_all_case(res,assert_type,value)else:print("该用例没有涉及断言内容")
结果示例-断言失败

结果示例-断言成功
2. 数据库数据断言
2.1 在yaml用例中写入断言内容
validate:db_contains: # 数据库包含断言断言返回结果包含sql查询结果: ["SELECT email FROM pw_user WHERE uid = 1",text]
2.2 连接数据库并封装执行sql的方法
class AssertUtil:# 连接数据库def conn_mysql(self):self.conn = pymysql.connect(user="user",password="pwd",host="127.0.0.1",database="sd",port=3306)return self.conn# 执行sql语句def execute_sql(self,sql):# 创建数据库链接conn = self.conn_mysql()# 创建游标cs = conn.cursor()# 执行SQLcs.execute(sql)# 取值value = cs.fetchone()# 关闭资源cs.close()conn.close()# 返回值return value
2.3 封装后校验方法是否可执行
if __name__ == "__main__":a = AssertUtil().execute_sql("SELECT email FROM pw_user WHERE uid = 1")print(a)print(type(a))
执行结果

2.4 使用之前封装的断言方法,加入数据库的case
def assert_all_case(self,res,assert_type,value):# 深拷贝响应结果resnew_res = copy.deepcopy(res)# 把json()方法变更为json属性,用于反射使用,如果无法获取到new_res.json()抛出异常try:new_res.json = new_res.json()except Exception:new_res.json = {"msg":'response not json data'}# 循环判断断言for msg,data in value.items():yq,sj = data[0],data[1] # 将预期值和实际值取出来# 过反射获取属性的值try:sj_value = getattr(new_res,sj)except Exception:sj_value = sj# 判断断言match assert_type:case "equals":assert yq == sj_value,msgcase "contains":assert yq in sj_value,msgcase "db_contains":yq_value = self.execute_sql(yq) # 将预期值的sql写入执行sql的方法中,获取结果assert yq_value[0] in sj_value, msg # 注意这里的yq_value获取到的是tuple,需要通过下标取值str
结果示例-断言失败

相关文章:
从0开始python学习-48.pytest框架之断言
目录 1. 响应进行断言 1.1 在yaml用例中写入断言内容 1.2 封装断言方法 1.3 在执行流程中加入断言判断内容 2. 数据库数据断言 2.1 在yaml用例中写入断言内容 2.2 连接数据库并封装执行sql的方法 2.3 封装后校验方法是否可执行 2.4 使用之前封装的断言方法,…...
学习JavaEE的日子 day13补 深入类加载机制及底层
深入类加载机制 初识类加载过程 使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(In…...
C# WebApi传参及Postman调试
概述 欢迎来到本文,本篇文章将会探讨C# WebApi中传递参数的方法。在WebApi中,参数传递是一个非常重要的概念,因为它使得我们能够从客户端获取数据,并将数据传递到服务器端进行处理。WebApi是一种使用HTTP协议进行通信的RESTful服…...
npm install 卡住不动的六种解决方法
1.重装 检查网络设置,删除node_modules重新npm install 2. 配置npm代理 // 配置nmp代理来提高速度,如设置淘宝镜像 npm config set registry https://registry.npm.taobao.org// 查看配置是否成功 npm config get registry// 成功后重新npm install安…...
Vue高级(二)
3.搭建vuex环境 创建文件:src/store/index.js //引入Vue核心库import Vue from vue//引入Vueximport Vuex from vuex//应用Vuex插件Vue.use(Vuex)//准备actions对象——响应组件中用户的动作const actions {}//准备mutations对象——修改state中的数据const mutat…...
MongoDB面试系列-02
1. MongoDB 中必须调用 getLastError 来确保写操作生效吗? MongoDB中不管有没有调用getLastError(又称为Safe Mode),服务器执行的操作都会一样。 而调用getLastError只是为了确认写操作是否成功提交,但是写操作的安全…...
2024.1.17
今天我已经回家了,感觉家就像我的温柔乡一样,一到了家,就不想学习了,这是很不对的事情,不该如此堕落,还是要像在学校一样该干什么干什么,所以说还是复习和写了一下曾经写过的代码。 #define _C…...
openssl3.2 - 官方demo学习 - encrypt - rsa_encrypt.c
文章目录 openssl3.2 - 官方demo学习 - encrypt - rsa_encrypt.c概述笔记END openssl3.2 - 官方demo学习 - encrypt - rsa_encrypt.c 概述 从内存中的DER共钥数据构造pub_key, 用公钥加密明文, 输出密文. 非对称加密 从内存中的DER私钥数据构造priv_key, 用私钥解密密文, 输出…...
ARCGIS PRO SDK Annotation 概念及操作
使用Annotation的API功能。Annotation 的API功能位于ArcGIS.Core.dll中。Annotation API通常与地理数据库、地图创作和编辑结合使用。ArcGIS.Core.dll ArcGIS.Core.Data.map API中的几乎所有方法都应该在MCT上调用。 一、Annotation featureclass 1、从GeodatabaseGeodatabase数…...
dp专题13 零钱兑换II
本题链接:. - 力扣(LeetCode) 题目: 思路: 根据题意,这是一道很裸的背包问题,其中这里是返回 背包方案数 的。 我们可以直接推出公式 : dp [ j ] dp[ j - coins[ i ] ] 在我之前…...
el-dialog嵌套使用,只显示遮罩层的问题
直接上解决方法 <!-- 错误写法 --><el-dialog><el-dialog></el-dialog></el-dialog><!-- 正确写法 --><el-dialog></el-dialog><el-dialog></el-dialog>我是不建议嵌套使用的,平级也能调用,…...
响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例3-5 CSS3 动画
代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>CSS3 动画</title> <style> .img {width: 150px; } keyframes rotate { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg);} } img…...
一款实用的.NET Core加密解密工具类库
前言 在我们日常开发工作中,为了数据安全问题对数据加密、解密是必不可少的。加密方式有很多种如常见的AES,RSA,MD5,SAH1,SAH256,DES等,这时候假如我们有一个封装的对应加密解密工具类可以直接…...
C/C++内存布局
1. C 结构体的内存布局 以一个例子来看struct的内存结构 #define NP_FUNC_WRAPPER __attribute__((optimize(0)))struct StructBody {int first_int_placeholder;int second_int_placeholder;double third_double_placeholder; };class ClassBody {public:int first_int_place…...
springboot(ssm母婴全程服务管理系统 母婴用品服务商城Java系统
springboot(ssm母婴全程服务管理系统 母婴用品服务商城Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0…...
修改SSH默认端口,使SSH连接更安全
以CentOS7.9为例: 1、修改配置文件 vi /etc/ssh/sshd_config 2、远程电脑可连接,暂时将SELinux关闭 # 查询状态 getenforce # 关闭 setenforce 0 # 开启 setenforce 1 3、SELinux设置(如果启用),semanage管理工具安…...
React16源码: React中调度之requestWork的源码实现
requestWork 1 )概述 在 scheduleWork 中,找到了创建更新的fiber对应的root节点然后对它进行了一些操作之后,调用了 requestWork,开始请求工作在 requestWork 里面它会做哪些东西呢? 首先我们要把这个root节点加入到调…...
【白话机器学习的数学】读书笔记(3)学习分类(感知机、逻辑回归)
三、学习分类 1.分类的目的 找到一条线把白点和黑点分开。这条直线是使权重向量成为法线向量的直线。(解释见下图) 直线的表达式为: ω ⋅ x ∑ i 1 n ω i ⋅ x i 0 \omegax \sum_{i1}^n\omega_i x_i 0 ω⋅xi1∑nωi⋅xi0 ω \omega ω是权重向量权…...
书生·浦语大模型实战营-学习笔记3
目录 (3)基于 InternLM 和 LangChain 搭建你的知识库1. 大模型开发范式(RAG、Fine-tune)RAG微调 (传统自然语言处理的方法) 2. LangChain简介(RAG开发框架)3. 构建向量数据库4. 搭建知识库助手5. Web Demo部…...
MySQL下对[库]的操作
目录 创建数据库 创建一个数据库案例: 字符集和校验规则: 默认字符集: 默认校验规则: 查看数据库支持的字符集: 查看数据库支持的字符集校验规则: 校验规则对数据库的影响: 操作数据…...
终极指南:如何用Continue实现AI驱动的代码检查与PR自动化审查
终极指南:如何用Continue实现AI驱动的代码检查与PR自动化审查 【免费下载链接】continue ⏩ Source-controlled AI checks, enforceable in CI. Powered by the open-source Continue CLI 项目地址: https://gitcode.com/GitHub_Trending/co/continue Contin…...
《Sysinternals实战指南》进程和诊断工具学习笔记(8.24):Handle——谁占着不放?句柄泄漏排查、强制解锁与检索技巧
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
设计师私藏的11个纹理Prompt原子模块(仅限本周开放下载:含PBR贴图映射表+光照反射系数速查卡)
更多请点击: https://intelliparadigm.com 第一章:纹理Prompt原子模块的设计哲学与底层逻辑 纹理Prompt原子模块并非简单拼接关键词的字符串生成器,而是以认知建模为根基、以可组合性为约束、以语义保真度为校验目标的结构化表达系统。其设计…...
2026免费在线去水印软件怎么选?实测5款推荐+功能对比指南
为什么需要去水印工具? 在内容创作和日常使用中,水印是版权保护的重要标志,但有时我们需要处理自己拥有版权的内容或进行合法的编辑操作。无论是整理自己的工作素材、编辑设计稿,还是去除合法获取内容上的平台标记,都需…...
深夜连上服务器,我再也不想敲命令行
前言 那是晚上十一点,我第五次输错IPtables规则,服务器直接失联了。赶紧给机房打电话,求助工程师帮忙重启。电话里听着对方说"下次小心点",我只能苦笑——命令行这东西,真不是熬夜能hold住的。 就在这时&a…...
2026 软考中级《多媒体应用设计师》备考全攻略(附全套资料)
大家好,最近很多朋友问我软考多媒体应用设计师的备考方法和资料整理问题,今天就把我自己整理的备考资料和实用经验一次性分享给大家,帮你少走弯路,高效备考~ 📚 我的备考资料整理(4 大模块全覆…...
基于Windows内核驱动框架的游戏控制器虚拟化技术实现方案
基于Windows内核驱动框架的游戏控制器虚拟化技术实现方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 在Windows游戏生态系统中,设备兼容性一…...
DreamTalk多语言支持深度分析:从中文到德语的语音驱动生成
DreamTalk多语言支持深度分析:从中文到德语的语音驱动生成 【免费下载链接】dreamtalk Official implementations for paper: DreamTalk: When Expressive Talking Head Generation Meets Diffusion Probabilistic Models 项目地址: https://gitcode.com/gh_mirro…...
rebar3最佳实践清单:避免常见陷阱的20个专业建议
rebar3最佳实践清单:避免常见陷阱的20个专业建议 【免费下载链接】rebar3 Erlang build tool that makes it easy to compile and test Erlang applications and releases. 项目地址: https://gitcode.com/gh_mirrors/re/rebar3 rebar3是Erlang生态系统中最流…...
蒙古语TTS准确率仅73%?ElevenLabs 2024Q2基准测试报告曝光:词级准确率91.4%,但需绕过这2个API默认参数坑
更多请点击: https://codechina.net 第一章:蒙古语TTS准确率争议的真相还原 近年来,多款商用及开源蒙古语文本转语音(TTS)系统在公开评测中报告了92%–97%的词级准确率,但一线教育机构与本地化团队反馈的实…...
