在进行接口测试时,我们可以使用已有的工具(如: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. 关于Pandas中Dataframe的操作(一)

    1.如何实现两个dataframe去重()? 假设df1是所有的数据,现在想去除与df2中重复的数据,也就是实现对df1进行操作,让他的数据不再包括df2. 方法一:先把需要剔除的df2的某一列(如i ...

  2. python编码环境安装与基本语法

    一.pycharm的基本使用 1.python以及pycharm的安装 python的版本选择:3.x版本就行 pycharm的版本选择:社区版就够用 pycharm只是一个编写工具,python才是 ...

  3. 牛客OI周赛13-提高组 比赛总结

    比赛情况 1h才写出T1 100pts + T2 50pts(都是简单dp可还行).然后就去颓废了.颓废完来康康T3的暴力,wow,T3咋这么难呢!?期望概率好像不太会了,退了吧qwq. 所以最后 1 ...

  4. Java编程思想 第21章 并发

    这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...

  5. 【洛谷P2447】外星千足虫

    题目大意:给定一个 M 个含 N 个未知数的异或方程组,保证有解,若存在唯一解,给出至少需要几个方程才能得出唯一解,若不存在,直接输出不存在. 题解:异或方程组也满足类似初等行变换的操作,只不过所有的 ...

  6. redis分布式锁原理与实现

    分布式锁原理 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调他们的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候, ...

  7. pyqt-swf

    # pyqt5界面打开flash.swf文件 from PyQt5 import QtCore, QtGui, QAxContainer, QtWidgets class Ui_Flash(QAxCo ...

  8. 跨平台信息获取小工具第三版本(增加了继承、多线程、异常处理模块、excel表格内容剔除空格)

    # coding=utf-8 import threadingimport paramikoimport osimport timeimport xlrdimport xlwtimport openp ...

  9. 伸展树splay之求区间极值

    前言 这篇博客是根据我在打这道题的时候遇到的问题,来打的,有些细节可能考虑不到. 题目 在N(1<=N<=100000)个数A1-An组成的序列上进行M(1<=M<=10000 ...

  10. C# 、Java数组申明、初始化区别

    一.数组申明   int[] a1 int a2[] C# 支持 不支持 Java 支持 支持 二.数组申明且初始化    int[] a1 = new int[] { 2, 31 } int a1[ ...