接口测试框架分析
框架大体上已经写完了,不过说实话好多代码让我自己写我也写不出来,那该怎么办呢?很简单,把现在已经写好的代码保存起来,等用的时候拿出来复制粘贴就好了,如果你是大神,自己会写,那就更厉害了~
现在我们按模块分析一下代码:
1、setting.py
这个文件放置的是一些常量,正如我们看到的比如接口地址前缀、电子邮件的配置,以及Log内容的设置等,这里放置的内容在修改的时候也会非常方便。
2、common->integretion
这个模块下只有一个文件——HTMLTestRunner.py文件,大家都已经知道了,这个文件是用来发邮件用的模板,这个文件大家只需要下载下来复制进去即可。
3、common->module->email_module.py
这个文件中放的是发送邮件的逻辑代码,需要注意的是:
text_msg = MIMEText("<html><body><p><span style='color: red;'> 大家好:</span></p><p> ""附件为本次UI自动化测试报告,请查收。<br/></p></body></html>",'html', "utf-8")
这里放的是一个html格式的内容,第二个参数是“html”;此外还附加了一个测试报告的附件一起发送。而邮件发送人、接收人、邮件设置的一些参数都是读取常量文件setting.py读取到的,这样的好处是当你需要修改邮件发送、接收,或者修改发送邮件的服务器时会非常方便——把常量看做对象,需要的时候就只需要调用,保证代码不会被修改导致出现代码上的错误。
4、common->module->environment_module.py
这个方法的作用就是读取setting.py文件中的地址并返回
5、common->module->excel_module.py
读取excel文件,其中get_sheet_by_index,get_sheet_by_name,get_row_values,get_col_values等方法分别是通过索引、名称获取sheet内容、行内容以及列内容。最后的get_all_content函数作用我们在这里分析一下:
def get_all_content(self, sheet_obj):__content = []# 总行数__rows_num = self.get_number_of_rows(sheet_obj)for tmp in range(__rows_num):tmp_list = []# 遍历行内容__row_value = self.get_row_values(sheet_obj, tmp)for i in __row_value:i = i.encode('utf8')# 将每行内容放到一个列表里tmp_list.append(i)__content.append(tmp_list)return __content
首先定义一个空列表__content(两个下划线的目的是为了避免子类重写),然后__rows_num保存获取到的行数。
range(3),返回0,1,2。所以我们的for循环就是遍历行数次,在for循环中,先定义空列表tmp_list,通过get_row_values函数获取每行的内容,我们知道,我们读的是一个excel文件,所以每行的内容以列表的形式返回,继续遍历这些内容,然后进行编码,将编码后的内容放在新的列表中,最后返回编码后的内容列表。
6、common->module->requests_module.py
本模块中,GetResponse类下的方法就是多判断了一下是否携带session,除此之外和我们说过的requests方法没有区别。而AnalysisResponse类则把提取url、status_code、content、headers、cookies都单独写成了方法,很容易理解。这样的方便就是为了今后应用的时候直接调用方法,不用再重新去写获取的方法,其实回过头想想,感觉这里其实没那么大的必要,我觉得。
剩下的就是testcase包下的用例文件了,其实在用例中是要增加断言的,我这里问了通过,没敢写断言。
最后就是咱们写了至少五六遍的run_all_tests.py文件了,吾不言。
相关文章:
接口测试框架分析
框架大体上已经写完了,不过说实话好多代码让我自己写我也写不出来,那该怎么办呢?很简单,把现在已经写好的代码保存起来,等用的时候拿出来复制粘贴就好了,如果你是大神,自己会写,那就…...
spring boot日志
日志介绍日志的使用日志级别日志持久化更简单的输入日志lombok的运行原理 日志介绍 日志的作用: 1:发现问题; 2:定位问题; 3:记录用户的行为:看哪些是方法用户;还能拿到用户的ip&am…...
【Vue2.0源码学习】虚拟DOM篇-Vue中的DOM-更新子节点
文章目录 1. 前言2. 更新子节点3. 创建子节点4. 删除子节点5. 更新子节点6. 移动子节点7. 回到源码8. 总结 1. 前言 在上一篇文章中,我们了解了Vue中的patch过程,即DOM-Diff算法。并且知道了在patch过程中基本会干三件事,分别是:…...
rsync
配置rsync源服务器: #建立/etc/rsyncd.conf 配置文件 vim /etc/rsyncd.conf #添加以下配置项 uid root gid root use chroot yes #禁锢在源目录 address 192.168.80.10 …...
javascript:void(0)
javascript:void(0) 是一个 JavaScript 中常见的使用方式,它通常用于在 HTML 中作为链接的 href 属性值。 在 HTML 中,链接(<a> 元素)的 href 属性指定了链接目标的 URL。当用户点击该链接时,浏览器会加载该 UR…...
ThingsBoard教程(五三):规则节点解析 Kafka Node, MQTT Node
Kafka Node Since TB Version 2.0 Kafka节点将消息发送到Kafka代理。它可以接收任何类型的消息。该节点会通过Kafka生产者将记录发送到Kafka服务器。 配置 主题模式 - 可以是静态字符串,也可以是使用消息元数据属性解析的模式。例如${deviceType}引导服务器 - 用逗号分隔的…...
基于PHP实现的网上留言管理系统的设计
摘 要 随着互联网技术的迅猛发展,网络已经充斥到我们生活的方方面面,网上留言系统已经成为各种网站不可或缺的一个组成部分。一个设计美观、功能完善的网上留言系统是网站吸引网民的一个重要因素。同时,它还为网络用户提供了一个多人参与的信息交流平台。基于PHP实现的网上…...
【9 Vue全家桶 – Vuex状态管理】
1 什么是状态管理 其实是数据管理但是为了更好的指出是由于状态的变化导致数据的变化(响应式数据),我们称之为状态管理. 2 Vuex的状态管理 组件只能直接读取state,而不能直接修改state,必须通过mutation才能修改.(pinia可以直接读取和修改state) 3 Vuex的安装 npm install …...
Oracle游标学习
declare-- 1 声明一个游标cursor emp_cursor isselect ID,XM,KSNO from ZGXX where rownum < 10; v_stu_info emp_cursor%rowtype; -- %rowtype: 声明 emp表的所有字段 begin-- 2 开启游标open emp_cursor;-- 3 获取数据(一次获取一行)循环获取 去掉…...
几种常用的正则表达式
1、身份证号正则表达式 身份证号是一串18位数字和字母的组合,其中最后一位可能为数字或者字母 X。以下是可以用于匹配身份证号的正则表达式: /^[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[Xx\d]$/上述正则表达式中包含…...
华为OD机试真题 Java 实现【快速开租建站】【2023Q1 200分】,附详细解题思路
一、题目描述 当前IT部门支撑了子公司颗粒化业务,该部门需要实现为子公司快速开租建站的能力,建站是指在一个全新的环境部署一套IT服务。 每个站点开站会由一系列部署任务项构成,每个任务项部署完成时间都是固定和相等的,设为1。…...
照片中对象识别模型YOLOv3在iOS项目中的浅析与使用
本文所指的YOLOv3模型为苹果开发者官网提供的图形识别对象的CoreML模型,可识别80种对象,并给出识别的对象在图形中的位置和大小信息。 我们可以直接在官网下载该模型: 机器学习 - 模型 - Apple Developer 然后直接将模型拖入工程中&#x…...
Caffeine 本地高速缓存工具类
目录 Caffeine工具类方式 SpringBoot 整合 Caffeine 缓存 (SpringCache模式) 驱逐策略 开发使用 Caffeine是一种高性能的缓存库,是基于Java 8的最佳(最优)缓存框架,性能各方面优于guava。 Caffeine工具…...
加密解密软件VMProtect教程(八)许可制度之序列号生成器
VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…...
单源最短路的建图
1.热浪 信息学奥赛一本通(C版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid1379 很裸的单源最短路问题,n2500,可以用dijksta或者spfa都能过,下面展示spfa的做法 #include<bits/stdc.h> usi…...
MyBatis基本操作及SpringBoot单元测试
目录 一、什么是单元测试? 1.1 单元测试的好处 1.2 单元测试的实现步骤 1.2.1 生成单元测试类: 1.2.2 SpringBootTest注解 1.2.3 检验方法结果: 二、利用MyBatis实现查询操作 2.1单表查询 2.2 参数占位符 #{} 和 ${} 2.2.1 ${} 字符…...
Linux之创建进程、查看进程、进程的状态以及进程的优先级
文章目录 前言一、初识fork1.演示2.介绍3.将子进程与父进程执行的任务分离4.多进程并行 二、进程的状态1.进程的状态都有哪些?2.查看进程的状态2.运行(R)3.阻塞4.僵尸进程(Z)1.僵尸状态概念2.为什么要有僵尸状态&#…...
k8s部署rabbitmq
docker pull rabbitmq:3.9.28-management 1.部署模板 apiVersion: v1 kind: Service metadata:name: rabbitmq spec:ports:- name: amqpport: 5672targetPort: 5672- name: managementport: 15672targetPort: 15672selector:app: rabbitmq---apiVersion: apps/v1 kind: Statef…...
关于QGroundControl的软件架构的理解
首先QGC是基于QT平台开发,个人理解软件架构即为项目前后端结构,以及前后端数据交互的逻辑。下面是对QGroundControl源码的一些个人理解,写这个博客只是为了记录下来,防止时间久了忘记,过程中看了一些大佬的博客来帮助理…...
Android 文本识别:MLKIT + PreviewView
随着移动设备的普及和摄像头的高像素化,利用相机进行文本识别成为了一种流行的方式。MLKit 是 Google 提供的一款机器学习工具包,其中包含了丰富的图像和语言处理功能,包括文本识别。PreviewView 是 Android Jetpack 的一部分,它提…...
告别Visual Studio:在Mac上用VSCode打造高效Unity工作流(插件、终端、工具链整合)
告别Visual Studio:在Mac上用VSCode打造高效Unity工作流(插件、终端、工具链整合) 当Unity开发者从Windows转向Mac平台时,往往会面临开发工具链的重构。Visual Studio在Mac上的体验远不如Windows版本流畅,而VSCode凭借…...
TMSpeech与腾讯会议集成:高效会议纪要生成的实际应用场景
TMSpeech与腾讯会议集成:高效会议纪要生成的实际应用场景 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech TMSpeech是一款专为腾讯会议设计的高效语音识别工具,能够实时将会议中的语音内容转换…...
探索DeepPurpose预训练模型:10分钟实现SARS-CoV-3CL蛋白酶抑制剂虚拟筛选
探索DeepPurpose预训练模型:10分钟实现SARS-CoV-3CL蛋白酶抑制剂虚拟筛选 【免费下载链接】DeepPurpose A Deep Learning Toolkit for DTI, Drug Property, PPI, DDI, Protein Function Prediction (Bioinformatics) 项目地址: https://gitcode.com/gh_mirrors/de…...
如何在macOS上快速创建PDF文件:终极虚拟打印机解决方案
如何在macOS上快速创建PDF文件:终极虚拟打印机解决方案 【免费下载链接】RWTS-PDFwriter An OSX print to pdf-file printer driver 项目地址: https://gitcode.com/gh_mirrors/rw/RWTS-PDFwriter 想要在macOS上轻松创建PDF文件吗?RWTS PDFwriter…...
raft一致性协议
Raft 协议raft协议是基于TCP的选举机制:时间 日志 版本核心三要素:时间 (随机超时):Follower 都有一个选举超时时间(例如 150ms ~ 300ms 的随机值)。作用:防止多个 Follower 同时变成 Candidate 导致选票…...
AI 术语通俗词典:RAG
RAG 是大语言模型、自然语言处理、知识问答、智能客服、企业知识库和 AI 应用开发中非常重要的一个术语,全称是 Retrieval-Augmented Generation,通常翻译为“检索增强生成”。它用来描述一种让大语言模型先从外部资料中检索相关内容,再基于这…...
美国RTP全系列抗静电塑料产品服务介绍
宏裕塑胶代理美国RTP全系列材料,专注于为制造业企业提供高性价比、稳定可控的工程塑料原料供应及全流程技术支持,凭借源头直采优势与专业服务能力,成为塑胶制品厂、汽车零部件厂及精密电子企业的可靠合作伙伴。宏裕塑胶代理美国RTP全系列材料…...
矩阵补全因果推断:破解贸易政策评估中的内生性与异质性难题
1. 项目概述:当因果推断遇上贸易政策评估的“硬骨头”做贸易政策评估的同行都知道,这事儿有多棘手。你想啊,一个国家签了个自由贸易协定(FTA),几年后出口额涨了,你怎么知道这增长里有多少是协定…...
哈夫曼树:高效压缩数据的秘密武器
引言在前面的树系列中,我们学习了二叉搜索树、AVL 树和红黑树——它们都是为了高效查找而设计的。今天要讲的哈夫曼树,目的完全不同:它是为了压缩数据而生。哈夫曼树(Huffman Tree),又称最优二叉树…...
UnrealPakViewer:虚幻引擎Pak文件分析终极可视化工具
UnrealPakViewer:虚幻引擎Pak文件分析终极可视化工具 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer UnrealPakViewer是一款专业的开源工…...
