将接口相关信息写入到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. [Vue warn]: Unknown custom element: <el-row> - did you register the component correctly? For recursi

    babel.config.js 文件中 module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] } 替换为 module.expo ...

  2. 可变形卷积系列(一) 打破常规,MSRA提出DCNv1 | ICCV 2017 Oral

    论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习   来源:晓飞的算法工程笔记 公众号 论文: Deformable Convo ...

  3. KingbaseES flashback drop table

    KingbaseES 引入回收站功能,实现drop table操作的数据恢复.回收站功能默认关闭,参数名称:kdb_flashback.db_recyclebin.如果不允许一个删除的表进回收站,需要 ...

  4. java实战字符串2:中英字符串相互转换

    题目描述 输入字符串为中文拼音号码串或者英文号码串,如果输入是中文拼音号码串则转成英文号码串,如果输入是英文号码串则转成中文号码串. 特殊情况是英文号码串会出现Double + 英文数字或者拼音数值. ...

  5. 【Java】多线程之实现Runnable接口

    1 /** 2 * 3 */ 4 package com.raliable.chapter_0; 5 /** 6 * @author : Administrator 7 * @date :2022年4 ...

  6. Scala 不可变数组Array

    1 package chapter07 2 3 object Test01_ImmutableArray { 4 def main(args: Array[String]): Unit = { 5 / ...

  7. #差分,前缀和#nssl 1469 U

    分析 考虑离线,因为异或和很难在线处理 然后可以用两个数组来差分斜与横的情况,然后将答案竖着传 时间复杂度\(O(n^2)\) 代码 #include <cstdio> #include ...

  8. #线性筛,斐波那契数列,GCD#BZOJ 2813 奇妙的Fibonacci

    题目 有一个斐波那契数列,满足 \[F_n=\begin{cases}1\qquad (n==1)\\1\qquad (n==2)\\F_{n-1}+F_{n-2}\qquad (n>2)\en ...

  9. OpenHarmony嵌套类对象属性变化:@Observed装饰器和@ObjectLink装饰器

    上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开发中,应用会根据开发需要,封装自己的数据模型.对于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第 ...

  10. Go 语言中切片的使用和理解

    切片与数组类似,但更强大和灵活.与数组一样,切片也用于在单个变量中存储相同类型的多个值.然而,与数组不同的是,切片的长度可以根据需要增长和缩小.在 Go 中,有几种创建切片的方法: 使用[]datat ...