在进行接口测试时,我们可以使用已有的工具(如:jmeter)进行,也可以使用python+requests进行。以下为简单的接口测试模板:

一、提取常用变量,统一配置

  新建一个config.py文件,用来存放统一变量

  如:

 # _*_ coding:;utf--8 _*_
import json #接口测试中,使用的头文件信息
headers={
"Accept":"application/json",
"Connection":"keep-alive",
"Accept-Language":"zh-Hans-CN;q=1",
"Accept-Encoding":"gzip, deflate"
} #测试地址:IP+端口
service="http://192.168.1.1:8080" #读取测试用例文件
interfile=open("D:\\testcase\接口测试脚本-总接口.csv","r")
intercase=interfile.readlines()
interfile.close() #读取测试结果文件,并保存结果
def resultmode(interresult):
testresult=open("D:\\testresult\\testresult.csv","a")
# interresult="测试结果"
testresult.write(interresult)
testresult.close()

二、提取requests的方法,方便调用

  如:

 #_*_ coding:utf-8 _*_
import json
from Interface_test.config import service,headers,resultmode,intercase
import requests
import re,time
import types def Interface_post(interface,paramter):
url = service + interface
# paramter = json.dumps(paramter)
try:
resp = requests.post(url, headers=headers, data=paramter,timeout=30)
resp.json()
return resp
except ValueError:
print("响应值不是json格式")
return resp
except ConnectionError:
print("网络异常")
return resp
except TimeoutError:
print("请求超时")
return resp
def Interface_get(interface,paramter):
url = service + interface
paramter = json.dumps(paramter) resp = requests.get(url, headers=headers,timeout=1)
# print(resp.json())
return resp

三、针对接口的测试

  如:

 # _*_ coding:utf-8 _*_

 import json
from Interface_test.config import service,headers,intercase,resultmode
from Interface_test.mode import Interface_post
import re,time
import requests class interface_test():
def __init__(self):
"""init""" if __name__=='__main__': #输出接口测试执行的时间到结果文件
rtime=time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())
resultmode("\n"+"本次测试时间为:"+rtime+"\n") #循环读取测试用例文件中的信息
for i in range(len(intercase)):
param=intercase[i].split(",") ###赋值接口请求路径
inter = param[2] ####赋值接口参数
para = (str(param[3])).strip() ###发起请求
responses=Interface_post(inter,para)
# print(responses.encoding)
# print(responses.text) # print(responses.cookies) ###查看请求结果
#请求响应code
code=responses.status_code
# print(responses.status_code==requests.codes.ok)
# print(responses.raise_for_status()) #判断请求结果
if code==200:
##当请求成功时,获取响应数据
results = json.loads((responses.content).decode())
##在响应数据中提取result的值
bool = results.get("result")
# body=results.get("body")
##判断result值:为1时成功,输出信息
if bool=='':
###将响应结果输出到文件
resultstring=param[0]+","+param[1]+","+str(code)+","+"请求成功,响应成功"+"\n"
resultmode(resultstring)
##判断result结果:为0时,表示请求发送成功,但是响应的数据有问题,返回响应的error信息
elif bool=='':
errorstring=results["body"]["errorDescription"]
resultstring=param[0]+","+param[1]+","+str(code)+","+"请求成功,响应报错"+\
","+errorstring+"\n"
resultmode(resultstring)
else:
resultstring = param[0] + "," +param[1]+","+ str(code)+ ","+"请求响应失败"+"\n"
resultmode(resultstring)
#当响应code不为200时,输出响应code
else:
resultstring = param[0] + "," +param[1]+","+ str(code) + ","+"请求响应失败"+"\n"
resultmode(resultstring)

四、涉及的知识点说明

1、requests

  地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

2、文件操作

  地址:https://www.cnblogs.com/smallstone2018/p/9841957.html

3、Json

  使用json前,需要先导入包:import json

  json与python的字典之间的转换

  json模块有两个方法:

  loads():将json数据转换成disc数据;

  dumps():将dict数据转换成json数据;

  load():读取json文件数据,转换成dict数据;

  dump():将dict数据转换成json数据后 写入json文件;

基于python+requests的简单接口测试的更多相关文章

  1. 基于Python Requests的数据驱动的HTTP接口测试

    发表于:2017-8-30 11:56  作者:顾翔   来源:51Testing软件测试网原创 http://www.51testing.com/html/69/n-3720769-2.html   ...

  2. 基于python的直播间接口测试实战 详解结合项目

    基于python的直播间接口测试详解 一.基本用例内容描述 以设置白名单 /advisor/setUserWhiteList.do接口为例,该方法为POST at first,先要导入一些常用到的模块 ...

  3. Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据

    Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...

  4. 基于Python PIL实现简单图片格式转化器

    基于Python PIL实现简单图片格式转化器 目录 基于Python PIL实现简单图片格式转化器 1.简介 2.前期资料准备 2.1.1如何实现图片格式转换? 2.1.2如何保存需要大小的图片? ...

  5. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  6. Python Requests库简单入门

    我对Python网络爬虫的学习主要是基于中国慕课网上嵩天老师的讲授,写博客的目的是为了更好触类旁通,并且作为学习笔记之后复习回顾. 1.引言 requests 库是一个简洁且简单的处理HTTP请求的第 ...

  7. 基于Python + requests 的web接口自动化测试框架

    之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护. 项目背景 公司的软件采用B/S架构,进行数据存储.分析.管理 工具选择 pytho ...

  8. python+requests+unittest API接口测试

    黑熊再网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,见用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空, ...

  9. 基于python创建一个简单的HTTP-WEB服务器

    背景 大多数情况下主机资源只有开发和测试相关人员可以登录直接操作,且有些特定情况"答辩.演示.远程"等这些场景下是无法直接登录主机的.web是所有终端用户都可以访问了,解决了人员权 ...

随机推荐

  1. MSDN上对yield关键字的示例

    public class PowersOf2 { static void Main() { // Display powers of 2 up to the exponent of 8: , )) { ...

  2. Error:Unexpected lock protocol found in lock file. Expected 3, found 49.

    关于这个错误,今天研究了两三个小时的时间,查看网上的教程都解决不了问题,后来发现是自己的文件目录导入的有问题. 现在把自己关于解决这个问题的详细步骤说明一下. (1)首先,你先查看一下自己导入文件的目 ...

  3. CentOS 7.4 下安装部署Nagios监控系统详细攻略(三)

    Nagios是一个流行的电脑系统和网络监控程序,它检测主机和服务,当异常发生和解除时能提醒用户.它是基于GPLv2开发的开源软件,可免费获得及使用. nagios工作原理 nagios的功能是监控服务 ...

  4. 在python里使用WriteProcessMemory修改内存地址上的值

    import os import sys from ctypes import * windll.kernel32.WriteProcessMemory.argtypes = [c_void_p, c ...

  5. shell之文本过滤(awk)

    shell之文本过滤(awk) 分类: linux shell脚本学习2012-09-19 15:53 1241人阅读 评论(0) 收藏 举报 shell正则表达式脚本任务语言 如果要格式化报文或从一 ...

  6. hive严格模式

    说真的,这个模式在我做sql开发的岁月里,从未用到过.用的都是动态分区非严格模式. 我的好友东岳同学在车上问我.确实问到了我 .体现出了我基本功不扎实的情况. 1.what is Hive严格模式 H ...

  7. 阅读之SQL优化

    一.性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句, ...

  8. 【BZOJ 3681】Arietta

    传送门 题目描述 Arietta 的命运与她的妹妹不同,在她的妹妹已经走进学院的时候,她仍然留在山村中. 但是她从未停止过和恋人 Velding 的书信往来.一天,她准备去探访他. 对着窗外的阳光,临 ...

  9. iview2.0 日期选择器DatePicker 所选时间格式不对

    网上有很多解决方式,大部分都是加个@on-change事件.比如下图: 但是如果是编辑的时候,打开编辑页面,通过数据库返回时间显示出来是对的,但是不触发change事件,直接点保存的话,保存后还是少8 ...

  10. sh_08_石头剪刀布

    sh_08_石头剪刀布 # 导入随机工具包 # 注意:在导入工具包的时候,应该将导入的语句,放在文件的顶部 # 因为,这样可以方便下方的代码,在任何需要的时候,使用工具包中的工具 import ran ...