阿里P6细谈Python简易接口自动化测试框架设计与实现,我直呼内行

news2024/11/15 1:29:05

1、开发环境

  • 操作系统:Ubuntu18

  • 开发工具:IDEA+PyCharm插件

  • Python版本:3.6

2、用到的模块

  • requests:用于发送请求

  • xlrd:操作Excel,组织测试用例

  • smtplib,email:发送测试报告

  • logging:日志追踪

  • json:数据格式化

  • Django:接口开发

  • configparser:读取配置文件

3、框架设计

3.1、流程

接口用例是通过Excel来组织的,定义了URL,Request Body等列。执行流程如下:

  • 使用xlrd工具读取Excel中的信息,拼接成一个个完整的请求。

  • 接口请求类拿到一个个完整的请求的去执行,这个过程需要记录日志,每一次执行情况都要有迹可循。

  • 回填测试结果,发送邮件,归档每次的运行结果。更好一点的做法是把历史运行情况做个报表,更直观。

  优点:

  • 用例通过Excel来组织,不需要编写代码,上手难度小。

  • 在用例个数不是很多的情况,开发速度快。

  缺点:

  • 用例依赖是痛点。

  • 只能支持接口自动化用例。

  • Excel中用例无法预先检查正确性,只有跑一把才能知道。

  • 无法很好地管理大量用例,且不支持团队协同作业,个人用来回归测试或上线后的冒烟测试会是一个不错的选择。

通过优缺点的对比,可以明显发现这个框架的硬伤其实很多了。所以无论是业界开源的自动化测试框架或企业自研的还没有见过用Excel来组织用例的。值得一提的是个别企业自研的自动化框架非常难用,抑或是把一堆工具简单组合到一起。根本无法提高团队的生产力。不过好的产品也不是一蹴而就的,需要一个持续优化的过程。所以上面用Excel组织用例的框架还是值的玩一玩的,暂且命名为apitest吧。目前比较好的自动化测试框架有unittest,testng,pytest等。

3.2、项目结构

  • testcase:存放测试用例或请求的json文件。

  • config:配置文件。

  • report:测试报告和日志文件及其归档。

  • untils:工具集,send_request用来发送请求,email_tool用来发送邮件,excel_tool用来读取Excel中的数据,check_result用来校验结果,run_main用例执行入口,log_trace用来追踪日志。

4、日志打印

采用内置logging模块才记录运行日志,设置日志级别。

log_trace.log:

import  logging

filename = "../report/test_case_run.log"

logging.basicConfig(level=logging.INFO,

format='%(asctime)s %(levelname)s1 %(filename)s [line:%(lineno)d]  %(message)s',

datefmt='%a, %d %b %Y %H:%M:%S',

filename=filename,

filemode='w')
复制代码

5、接口请求类封装

安装第三方模块requests

pip install requests
复制代码

定义函数send_request,根据传入的方法类型分别去调用request的get,post,delete,put等方法去发送请求。send_request.py:

import  requests

from untils. log_trace import  *

#发送get请求

def get_request(url,data=None,headers=None):

res = requests.get(url=url,data=data,headers=headers)

return res

#发送post请求

def post_request(url,data,headers=None):

res = requests.post(url=url,data=data,headers=headers)

return res

#发送delete请求

def del_request(url,data=None,headers=None):

res = requests.delete(url,data=data)

return res

#发送put请求

def put_request(url,data,headers=None):

pass

def send_request(method,url,data=None,headers=None):

try:

logging.info(headers)

if headers:

if method == "GET":

return get_request(url,data,headers=headers)

if method == "POST":

return post_request(url,data=data,headers=headers)

if method == "DELETE":

return  del_request(url,data=data,headers=headers)

#put使用频率低,暂时不写

if method == "PUT":

return  put_request(url,data=data,headers=headers)

else:

logging.info("Header is null")

except Exception as e:

logging.info("send request fail:%s"%e)
复制代码

在untils_test.py中编写代码测试send_request方法,代码如下:

#coding:utf-8

from untils.send_request import send_request

def test_send_request():

url="http://127.0.0.1:9000/articles/"

headers = {

"X-Token":"0a6db4e59c7fff2b2b94a297e2e5632e"

}

res = send_request("GET",url,headers=headers)

print(res.json())

if __name__ == "__main__":

test_send_request()
复制代码

运行结果:

/usr/bin/python3.6 /home/stephen/IdeaProjects/apitest/untils/untils_test.py

{'status': 'BS.200', 'all_titles': {'amy1': 'alive', 'modifytest': 'alive', 'addTest': 'alive'}, 'msg': 'query articles sucess.'}

Process finished with exit code 0

如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于想做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……加入我的学习交流群一起学习交流讨论把!!!! 

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

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

相关文章

2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(一)

目录 前言 一、题目理解 背景 解析: 要求 二、建模 1.相关性分析 2.相关特征权重 只希望各位以后遇到建模比赛可以艾特认识一下我,我可以提供免费的思路和部分源码,以后的数模比赛只要我还有时间肯定会第一时间写出免费开源思路&…

计量地理学(Quantitative Geography)的学习笔记

目录 1.什么是主成分分析 2.什么是Thile指数(锡尔系数),是用来干什么的 3.罗伦次(洛伦兹)曲线的含义,表征什么样的现象 4.什么是偏相关分析,偏相关分析系数的含义,主要作用 5.多…

Homekit智能家居-智能插座

WiFi智能插座对于新手接触智能家居产品更加友好,不需要额外购买网关设备 很多智能小配件也给我们得生活带来极大的便捷,智能插座就是其中之一,比如外出忘记关空调,可以拿起手机远程关闭。 简单说就是:插座可以连接wi…

2023版最新最强大数据面试宝典

此套面试题来自于各大厂的真实面试题及常问的知识点,如果能理解吃透这些问题,你的大数据能力将会大大提升,进入大厂指日可待!目前已经更新到第4版,广受好评!复习大数据面试题,看这一套就够了&am…

m0n0防火墙的安装(11)

实验目的 1、了解m0n0的安装过程 2、培养学生动手能力预备知识 1、VirtualBox的使用,及基础英文阅读能力实验环境 本实验的实验环境为,在实验机上安装VirtualBox虚拟机软件,并用VirtualBox创建了一台虚拟机来安装m0n0,并设置了相关…

47.在ROS中实现global planner(3)

接着之前45.在ROS中实现global planner(1)和46.在ROS中实现global planner(2)的铺垫,在ROS中实现AStar Global Planner 1. planner package 照着之前的模板,修改下名称 git clone -b https://gitee.com/…

OpenCV 图像金字塔算子

本文是OpenCV图像视觉入门之路的第14篇文章,本文详细的介绍了图像金字塔算子的各种操作,例如:高斯金字塔算子 、拉普拉斯金字塔算子等操作。 高斯金字塔中的较高级别(低分辨率)是通过先用高斯核对图像进行卷积再删除偶…

大疆车载更新产品矩阵,覆盖从主动安全到城区领航的全场景

新年智驾供应商的攻势,也像车企一样猛烈。大疆车载近期趁着官网更新,对外公布了梳理后的智驾方案序列,覆盖8大功能产品:主动安全、行车辅助、泊车辅助、记忆泊车、记忆行车、跨层记忆泊车、领航高速、领航城区。需要关注的是&…

金融帝国实验室(Capitalism Lab)《官方中文社群抽奖规则》(修订)

★修 订 说 明★ 为进一步完善社群决策制定程序,提高抽奖活动公平化、丰富化水平,切实提升抽奖活动质量,现对《官方中文社群抽奖规则》进行修订(第四次)。 ————————————— ◎〖本次修订内容〗&#xf…

C++ 浅谈之 AVL 树和红黑树

C 浅谈之 AVL 树和红黑树 HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 C 浅谈系列,收录在专栏 C 语言中 😜😜😜 本系列阿呆将记录一些 C 语言重要的语法特性 &#x1f3…

可靠、安全、稳定,开源高质量项目 | 亚马逊的开源文化

亚马逊的领导力准则是亚马逊文化的核心,它如同亚马逊的 DNA 融入贯穿每一个重要决策,深深影响着每一位亚麻人、影响着每一位亚马逊的客户、合作伙伴以及每一位亚马逊云科技的构建者。同时,亚马逊的领导力准则对亚马逊与开源的互动方式也产生着…

(原创)不小心禁用或者卸载Kotlin插件的解决方法

问题 之前因为kotlin版本的一些问题,不小心禁用了kotlin插件 等到再重启Android Studio,就发现进不去了 后来在网上找到方法解决了,但是某一天 又脑子一热,直接把Kotlin插件给卸载了,这下直接玩大发了 花了一点时间才…

Springboot 使用quartz 定时任务 增删改查

前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 ,浏览量还不错 , Springboot 整合定时任务 ) 所以就准备写第二篇, 如果你是一名Java工程师,你也可以会看到如下的页面 ,去添加定时任务 定时任务展示 :…

linux学习笔记 超详细 0基础(下)shell

shell是一个命令解释器,为我们提供了交互式的文本控制台界面,我们可以通过终端控制台来输入命令,由shell解释并交给linux内核执行。Shell是一个解释器,Unix下的Bourne Shell命令解释器的加强版Bourne Again Shell ,bas…

甘特图:项目管理工具,轻松简化工作流程

项目规模越大,管理就越复杂,有时候甚至一个项目经理需要管理多个项目,当多个项目、多条任务同时进行,项目所涉及的范围广,内容越来越复杂,使得项目越难以把控,好的管理工具,可以提升…

2023美赛C题:Wordle筛选算法

Wordle 规则介绍 Wordle 每天会更新一个5个字母的单词,在6次尝试中猜出单词就算成功。每个猜测必须是一个有效的单词(不能是不能组成单词的字母排列)。 每次猜测后,字母块的颜色会改变,颜色含义如下: 程…

Unity导出WebGL工程,并部署本地web服务器

WebGL打包 设置修改 在Build Settings->PlayerSettings->Other Settings->Rendering 将Color Space 设置为Gamma 将Lightmap Encoding 设置为NormalQuality 在Build Settings->PlayerSettings->Publishing Settings 勾选Decompression Fallback 打包 完成配…

有这几个表现可能是认知障碍前兆

我国目前对于认知障碍的认知率、就诊率、诊断率很低,然而认知障碍如果能在早期发现,并及时治疗,生活质量会有效提高,缓解家属的精神和经济负担。所以,认知障碍的前兆一定要了解。1.记忆力减退,一周内的重要…

【Spring】@Value注入配置文件 application.yml 中的值失败怎么办

本期目录一、 问题背景二、 问题原因三、 解决方法一、 问题背景 今天碰到的问题是用 Value 注解无法注入配置文件 application.yml 中的配置值。 检查过该类已经交给 Spring 容器管理了,即已经在类上加了 Configuration 和 ConfigurationProperties(prefix &quo…

UnityEditor编辑器扩展自己实现了一遍SceneView的镜头移动

基本实现由于最近一个星期都比较魔怔《天际线》,突然开始要工作了,用Editor好像突然没了按键反而不习惯就是要实现一个点击AWSD,能方便编辑地图的功能其实大可不必自己写代码本身Unity自带的,飞跃模式已经包含(按鼠标右…