环境准备

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)的更多相关文章

  1. Python+Pytest+Allure+Git+Jenkins接口自动化框架

    Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...

  2. Python Django对接企业微信第三方服务回调验证的一些坑

    今天公司老总,叫我把公司的企业微信,服务商管理后台中的本地应用进行回调验证. 听起来一脸懵逼,没搞过企业微信对接情况.一头雾水,不知道如何下手. 先讲解一下,企业微信情况. 登录到企业微信后,右上角服 ...

  3. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  4. python实现通过企业微信发送消息

    实现了通过企业微信发送消息,平时用于运维的告警还是不错的,相对于邮件来说,实时性更高,不过就是企业微信比较麻烦,此处不做过多解释. 企业微信api的详细请看:http://work.weixin.qq ...

  5. Python+excel实现的简单接口自动化 V0.1

    好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...

  6. 接口自动化之ddt

    接口自动化会用到数据驱动模式,也就是一个ddt模块 目录 1.环境准备 2.调用时标准格式 3.应用(结合excle来传值) 1.环境准备 首先,需要安装ddt模块 pip install ddt 2 ...

  7. Python+request 分模块存放接口,多接口共用参数URL、headers的抽离,添加日志打印等《三》

    主要介绍内容如下: 1.分模块存放接口 2.多接口共用参数URL.headers的抽离为配置文件 3.添加日志打印 4.一个py文件运行所有所测的接口 如上介绍内容的作用: 1.分模块存放接口:方便多 ...

  8. python(pytest)+allure+jenkins 实现接口自动化的思路

    效果图镇楼: 上述各模块作用: python(pytest): 1:用于读测试用例(本次用例写在csv文件中) 2:环境配置相关 3:提取1中的测试数据,组成请求体 4:发送请求 5:获取结果 6:断 ...

  9. 【python接口自动化】- DDT数据驱动测试

    简单介绍 ​ DDT(Date Driver Test),所谓数据驱动测试,简单来说就是由数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据 ...

随机推荐

  1. 从事IT行业 vs 玩卡牌手游

    我曾经玩过一款手游,它一直不停地推出新的更高品质的道具和人物,新出的东西比旧的东西拥有更强力的功能,要想保持领先就必须一直充钱出新东西才行.不管你以前充了十几万还是几十万,如果有半年不充,那就会被新区 ...

  2. SQL语句(cmd)

    引言 可视化界面采用的是SQLyog 在SQL语句中--表示单行注释,/**/表示多行注释 命令行操作数据库 启动MySQL服务----net start mysql 连接数据库----mysql - ...

  3. 还在用Postman?来,花2分钟体验下ApiPost的魅力

    2分钟玩转APIPOST 本文通过简单介绍如何利用ApiPost调试接口和快速的生成接口文档,让您初步体验ApiPost的魅力! 1. API写完想要测试?试试模拟发送一次请求 新建接口,我想模拟发送 ...

  4. python打包exe之pyinstaller用法

    pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...

  5. 小白学vue第四天,从入门到放弃(vue指令的使用加高阶函数)

    v-on修饰符的使用 .stop 阻止事件冒泡 调用  stopPropagation() .prevent 阻止默认事件 调用 event.preventDefault() .keyCode 键盘事 ...

  6. 寄生线虫免疫学研究新路径!华中农业大学胡敏团队报道寄生线虫N-糖基化修饰图谱

    N-糖基化修饰是真核生物中一种重要的蛋白质翻译后修饰,在许多生物学过程中起着关键作用,包括蛋白质折叠.受体-配体相互作用.免疫应答和疾病发病机制等.近年来,高精度质谱技术的出现促进了糖组和糖蛋白质组的 ...

  7. ES6与ES2015、ES2016以及ECMAScript的区别

    1. ECMAScript 和 JavaScript 的关系 ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现. javascript是netscape ...

  8. GIT·全局配置文件及项目配置文件

    阅文时长 | 0.03分钟 字数统计 | 48.8字符 主要内容 | 1.引言&背景 2.声明与参考资料 『GIT·全局配置文件及项目配置文件』 编写人 | SCscHero 编写时间 | 2 ...

  9. Color Theme of Emacs

    Choose color theme interactively: M-x customize-themes, or M-x color-theme-select (use key "q&q ...

  10. java基础技术集合面试【笔记】

    java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...