python-request 实现企业微信接口自动化-1(DDT)
环境准备
python+requests
读取企业微信api开发文档,得知调用企业微信接口必须先获取企业微信的accesstoken是通过 ("corpid","") //企业id 和 ("corpsecret","") //企业密钥 调用获取,python代码实现如下
requests_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?' # 获取token的接口地址
requests_data={"corpid":"ww2371688596076","corpsecret":"okaj3sQZSGneNs4IHkp5RD8j3v_7ZSa8IHF6Y"}
res=requests.get(requests_url,requests_data)
print("text解析的结果",res.text)
print("json解析的结果",res.json)
封装请求方法
class httpRequest:
def http_request(self,url,data,http_method): #定义接口请求方法
#写法1:
if http_method.upper()=='GET':
try:
res=requests.get(url,data)
except Exception as e:
print("get请求报错:{0}".format(e))
raise # 抛出异常
elif http_method.upper()=='POST':
try:
res = requests.get(url, data)
except Exception as e:
print("post请求报错:{0}".format(e))
raise # 抛出异常
else:
print("请求方法错误")
return res # 返回结果
调用封装的方法请求获取token
#主方法入口
if __name__ == '__main__':
res2=httpRequest().http_request(requests_url,requests_data,'post')
print("测试返回的token为:{}".format(res2))
整个方法如下:
#获取企业微信的接口地址,获取对应token
requests_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?'
requests_data={"corpid":"ww237168859620176","corpsecret":"okaj3sQJmGneNjh4s4IHkp5RD8j3v_7ZSa8IHF6Y"}
res=requests.get(requests_url,requests_data)
class httpRequest:
def http_request(self,url,data,http_method): #定义接口请求方法
#写法1:
if http_method.upper()=='GET':
try:
res=requests.get(url,data)
except Exception as e:
print("get请求报错:{0}".format(e))
raise # 抛出异常
elif http_method.upper()=='POST':
try:
res = requests.get(url, data)
except Exception as e:
print("post请求报错:{0}".format(e))
raise # 抛出异常
else:
print("请求方法错误")
return res # 返回结果
#写法2
# try:
# if http_method.upper() == 'GET':
# res=requests.get(url,data)
# elif http_method.upper() == 'POST':
# res = requests.get(url, data)
# except Exception as e:
# print("请求方法错误.{e}".format(e))
# raise e
# return res
#主方法入口
if __name__ == '__main__':
res2=httpRequest().http_request(requests_url1,requests_data,'post')
print("测试返回的结果:{}".format(res2.text))
print("测试返回的token为:{}".format(json.loads(res2.text)["access_token"])) # loads操作字符串获取对应的key
代码架构
执行类:
#代码启动类
from tools.http_request import httpRequest as testmethod # 导入http_request取别名
from tools.DoExcel import DoExcel
import json
def run(test_data): #列表嵌套的字典数据格式
for item in test_data: # for循环获取 testdata 数据 ,并执行用来
print("正在测试用例为{0}".format(item['title']))
login_res=testmethod().http_request(item["url"],item["data"],item["http_method"])
print("请求的结果是:{0}".format(login_res.json()))
test_data = [{"url": "https://qyapi.weixin.qq.com/cgi-bin/gettoken?",
"data": {"corpid": "ww2371688596201076",
"corpsecret": "okaj3sQZSWJmGneNjh4s4IHkp5R8j3v_7ZSa8IHF6Y"},
"title":"正确获取token","http_method":"get"},
{"url": "https://qyapi.weixin.qq.com/cgi-bin/gettoken?",
"data": {"corpid": "", "corpsecret": "okaj3sQZSWJmGneNjh4s4Hkp5RD8j3v_7ZSa8IHF6Y"},
"title":"参数错误","http_method":"get"}]
run(test_data)
执行结果:
数据驱动
将接口测试用例存放在excel中
获取excel数据的方法
#从xls 读取信息
from openpyxl import load_workbook
class DoExcel:
def get_data(self,file_name,sheet_name):
wb=load_workbook(file_name)
sheet=wb[sheet_name]
# 遍历获取数据
test_data=[] #初始化
for i in range(2, sheet.max_row+1):
row_data={}
row_data['case_id']=sheet.cell(i,1).value #获取1列的值
row_data['url']=sheet.cell(i,2).value #获取2列的值
row_data['data']=sheet.cell(i,3).value #获取3列的值
row_data['title']=sheet.cell(i,4).value #获取4列的值
row_data['http_method'] = sheet.cell(i, 5).value # 获取5列的值
test_data.append(row_data)
return test_data
#回写返回的结果值到excle
def write_back(self,file_name,sheet_name,i,value):
wb=load_workbook(file_name)
sheet=wb[sheet_name]
sheet.cell(i,6).value=value # 写死第6列 返回的结果
wb.save(file_name) #保存结果
if __name__ == '__main__':
data=DoExcel().get_data("../test_data/data1.xlsx","login") # 传入filename 与 sheet名
print(data)
python-request 实现企业微信接口自动化-1(DDT)的更多相关文章
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- Python Django对接企业微信第三方服务回调验证的一些坑
今天公司老总,叫我把公司的企业微信,服务商管理后台中的本地应用进行回调验证. 听起来一脸懵逼,没搞过企业微信对接情况.一头雾水,不知道如何下手. 先讲解一下,企业微信情况. 登录到企业微信后,右上角服 ...
- Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...
- python实现通过企业微信发送消息
实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq ...
- Python+excel实现的简单接口自动化 V0.1
好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...
- 接口自动化之ddt
接口自动化会用到数据驱动模式,也就是一个ddt模块 目录 1.环境准备 2.调用时标准格式 3.应用(结合excle来传值) 1.环境准备 首先,需要安装ddt模块 pip install ddt 2 ...
- Python+request 分模块存放接口,多接口共用参数URL、headers的抽离,添加日志打印等《三》
主要介绍内容如下: 1.分模块存放接口 2.多接口共用参数URL.headers的抽离为配置文件 3.添加日志打印 4.一个py文件运行所有所测的接口 如上介绍内容的作用: 1.分模块存放接口:方便多 ...
- python(pytest)+allure+jenkins 实现接口自动化的思路
效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...
- 【python接口自动化】- DDT数据驱动测试
简单介绍 DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...
随机推荐
- 如何从二维平面n个点中寻找距离最近两个点?
如何理解分治算法 什么是分治算法?简单来说就是"分而治之",也就是将原问题划分成n个规模较小的,并且结构与原问题相似的子问题,然后去递归地解决这些子问题,最后再合并其结果,就得到原 ...
- 我说AOP(面向切面编程)--藏在苹果里的五角星
这只是一篇入门理解! 一直听说AOP的名字,却从未使用过,因为我不会.但--那只是曾经-- 先看官方解释:AOP(Aspect-Oriented Programming,面向切面的编程),它是可以通过 ...
- MySQL的函数使用
目录 COUNT()函数基本使用 SUM( )函数基本使用 AVG()函数基本使用 MAX()函数基本使用 MIN()函数基本使用 字符函数 concat()和concat_ws() LEFT()与R ...
- 最全总结 | 聊聊 Python 数据处理全家桶(PgSQL篇)
1. 前言 大家好,我是安果! Python 数据处理全家桶,截止到现在,一共写过 6 篇文章,有兴趣的小伙伴可以去了解一下! 最全总结 | 聊聊 Python 数据处理全家桶(Mysql 篇) 最全 ...
- js中其他数据类型的值转为字符串的相关总结
有这样一个面试题: 此题考查的是其他类型的值转换为字符串后的结果 下面我们就由此来总结一下其他类型的值转为字符串后的值都是什么? 从上面的实例可以看出,基本数据类型的值转换成字符串都如我们预期的那样. ...
- 基于Java和Bytemd用120行代码实现一个桌面版Markdown编辑器
前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/byt ...
- Windows内核-7-(IRP)I/O请求包
Windows内核-7-(IRP)I/O请求包 IRP(I/O Request Packet)就是一个进行I/O操作的请求包. IRP是一个结构体,谁分配谁就得释放,通常由执行体里的管理器,获取内核驱 ...
- Slope Trick:解决一类凸代价函数DP优化
[前言] 在补Codeforce的DP时遇到一个比较新颖的题,然后在知乎上刚好 hycc 桑也写了这道题的相关题解,这里是作为学习并引用博客的部分内容 这道题追根溯源发现2016年这个算法已经在API ...
- wpf 中的矩形的歪斜
<Grid> <Rectangle x:Name="rect12" Width="100" Opacity="1" Hei ...
- mybatis面试题总结
1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL.存储过程和高级映射的持久层框架. 2.讲下MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在ses ...