将接口相关信息写入到Excel中,然后用此脚本从Excel中读取相应的信息并组装成URL来发送接口并获取返回的结果,并将结果写入到对应的用例中.

import requests
import json
import os, sys
from openpyxl import load_workbook result_col_index = 6 def runtest(url, data, head):
r = requests.post(url=url, data=json.dumps(data), headers=head)
return r.json() def get_testcase(env, testcasefile):
testcasefile = os.path.join(os.getcwd(), testcasefile)
if not os.path.exists(testcasefile):
print('测试用例文件不存在!')
sys.exit()
wb = load_workbook(testcasefile)
ws = wb.get_sheet_by_name('testcase')
rows = ws.max_row
print(rows)
if rows < 2:
print('测试用例文件中没有用例数据,请确认后再执行!')
sys.exit()
for i in range(rows - 1):
col = str(i + 2)
casename = ws['B' + col].value
url = ws['C' + col].value
data = ws['D' + col].value
head = ws['E' + col].value
result = ws['' + col].value
url = r'http://haenkg-' + env + '.huawei.com' + url
print(type(url), url)
try:
data = eval(data)
head = eval(head)
except SyntaxError as e:
print(e)
print('json格式不正确,请确认后再提交!!')
sys.exit()
actjson = runtest(url, data, head)
result = eval(result)
print('this is actjson:', type(actjson), actjson)
print('this is result:', type(result), result)
if actjson['result'] == result['result']:
print(casename + ':成功')
ws['G' + col] = '成功'
else:
print(casename + ':失败!!!')
ws['G' + col] = '失败'
wb.save(testcasefile) if __name__ == "__main__":
if len(sys.argv) == 1:
print("请输入要执行的环境!!")
sys.exit()
envs = ['dev9', 'sit2', 'sit3', 'uat2', 'uat3']
if sys.argv[1] not in envs:
print("请输入:['dev9','sit2','sit3','uat2','uat3']中的一个环境!!")
sys.exit()
get_testcase(sys.argv[1], 'testcases.xlsx')

Python requests模块做接口测试的更多相关文章

  1. 使用python requests模块搭建http load压测环境

    网上开源的压力测试工具超级的多,但是总有一些功能不是很符合自己预期的,于是自己动手搭建了一个简单的http load的压测环境 1.首先从最简单的http环境着手,当你在浏览器上输入了http://w ...

  2. 使用python asyncio+aiohttp做接口测试(TODO)

    线程是操作系统层面的“并行”, 协程是应用程序层面的“并行”. 协程本质上就是:提供一个环境,保存一些需要等待的任务,当这些任务可以执行(等待结束)的时候,能够执行.再等待的过程中,程序可以执行别的任 ...

  3. 基于python+requests的简单接口测试

    在进行接口测试时,我们可以使用已有的工具(如:jmeter)进行,也可以使用python+requests进行.以下为简单的接口测试模板: 一.提取常用变量,统一配置 新建一个config.py文件, ...

  4. Python requests模块学习笔记

    目录 Requests模块说明 Requests模块安装 Requests模块简单入门 Requests示例 参考文档   1.Requests模块说明 Requests 是使用 Apache2 Li ...

  5. Python—requests模块详解

    1.模块说明 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支持使用co ...

  6. Windows下安装Python requests模块

    在使用自己写的或者别人的python小工具时可能会出现类似ImportError: No module named Requests的问题: D:\tool\python\fuzz>Fuzz.p ...

  7. 使用monkey技术修改python requests模块

    例如请求前和请求后各来一条日志,这样就不需要在自己的每个代码都去加日志了. 其实也可以直接记录'urllib3.connectionpool'  logger name的日志. 修改了requests ...

  8. Python requests模块params、data、json的区别

    json和dict对比 json的key只能是字符串,python的dict可以是任何可hash对象(hashtable type): json的key可以是有序.重复的:dict的key不可以重复. ...

  9. python requests模块session的使用建议及整个会话中的所有cookie的方法

    话不多说,直接上代码 测试代码 服务端 下面是用flask做的一个服务端,用来设置cookie以及打印请求时的请求头 # -*- coding: utf-8 -*- from flask import ...

  10. Python requests模块

    import requests 下面就可以使用神奇的requests模块了! 1.向网页发送数据 >>> payload = {'key1': 'value1', 'key2': [ ...

随机推荐

  1. 使用Go语言开发一个短链接服务:四、生成code算法

    章节  使用Go语言开发一个短链接服务:一.基本原理  使用Go语言开发一个短链接服务:二.架构设计  使用Go语言开发一个短链接服务:三.项目目录结构设计  使用Go语言开发一个短链接服务:四.生成 ...

  2. QT之数据显示

    引言 目前,为了提高数据校对的效率,使用合理的显示工具完成具体的数据处理,可以加速设计中调试的速度,这也是自行设计上位机的意义所在.数据处理在LabVIEW中是比较简单的,直接调用即可.在QT中可能需 ...

  3. KingbaseES数据库改写SQL Server数据库CROSS APPLY和OUTER APPLY

    一.功能介绍: CROSS APPLY和OUTER APPLY是SQL Server中的一种连接操作,类似于JOIN语句可以将一张表与一个表函数或一个子查询进行关联.表函数是一种返回一个表类型的数据的 ...

  4. KingbaseES V8R6 运维案例 -- sys_filenode.map故障案例

    ​ 案例说明: 数据库下的sys_filenode.map文件被破坏,导致此数据库无法连接访问. Nail表(内核系统表)Relfilenode的存储机制: 经过研究发现,在数据目录里存在着pg_fi ...

  5. 算法学习笔记【8】| 单调队列优化DP

    单调队列:就是滑动窗口,可以求出定长 RMQ,时间复杂度线性. 优化 DP 首先把dp方程写成这个样子: 或者其他运算f[i]=max(或者其他运算){f[j]+calc(i,j)}<scrip ...

  6. Ubuntu一键安装/卸载docker和docker compose,可指定版本或安装最新版本。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @ 目录 前言 一.docker是什么? 二.docker compose是什么? 三.安装步骤 1.Ubuntu安装脚本 2.生成脚 ...

  7. [Linux]将ArchLinux安装到U盘

    将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安装教程,同时由于当时硬盘空间不太够于是就打算安装到U盘上,也因此踩了不少坑. 但128G的U盘都拿来装Arch的话未免也太浪费了 ...

  8. #Every-SG#HDU 3595 GG and MM

    题目 有\(n\)个游戏,每个游戏只要能进行就必须进行, 对于每个游戏有两堆石子,每次可以将数量多的中取出小堆石子数量的整数倍, 无法操作者为负,问先手是否必胜 分析 如果单个游戏最大操作次数为奇数次 ...

  9. 深入理解java的泛型

    目录 简介 泛型和协变 泛型在使用中会遇到的问题 类型擦除要注意的事项 总结 简介 泛型是JDK 5引入的概念,泛型的引入主要是为了保证java中类型的安全性,有点像C++中的模板. 但是Java为了 ...

  10. js实现电子白板

    功能:使用画笔绘制笔迹(线条).橡皮檫 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...