记录python接口自动化测试--requests使用和基本方法封装(第一目)
之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对“接口”以及“接口测试”有了一个基础了解,最近找了一些用python做接口测试的资料,一方面为了学习下如何使用python进行接口测试(如何做出一个简单基础的接口测试框架),另一方面也为了锻炼下如何用python写代码(接触python也有一段时间了,但是每次自己编程总有种提笔忘字的感觉,真是欠练!!)
首先,用python做接口测试,主要用到就是requests库和json库。
1.先看一个简单的demo
# -*- coding: UTF-8 -*-
import requests
get_url = 'http://localhost:7001/XXX'
data = {'userCode':'csqy123456','userPWD':''}
r = requests.get(url=get_url, params=data, timeout=5) #产生一个名为r的Response对象,可以从这个对象中获取我们想要的信息; #get请求传参数时,使用params关键字 #timeout参数用来设定停止等待响应的时间
print(r.url) #返回请求url
print(r.json()) #以JSON格式解析响应内容
print(r.status_code) #返回状态码
print(r.raise_for_status()) #如果发送了一个错误请求,如404、500等,可以通过raise_for_status()来抛出异常
print(r.encoding) #查看requests使用了什么编码,同时可以用r.encoding属性来改变它
print(r.raw) #获取来自服务器的原始套接字响应
print(r.headers) #服务器返回给我们的响应头信息,也可以在传参时通过headers=XXX来定制请求头
print(r.request) #获取原来创建的Request对象
print(r.request.headers) #发送到服务器的请求头
# -*- coding: UTF-8 -*-
import requests
post_url = 'http://localhost:7001/XXX'
payload2 = {'approveSeq':'','userCode':'qyzh123456_88','projName':'测试项目'}
r = requests.post(post_url, data=payload2, timeout=1) #post请求传参数时,使用data关键字
6 print(r.json())
7 print(r.status_code)
2.然后通过函数调用来发送get/post请求
# -*- coding: UTF-8 -*-
import requests def send_get(url, data):
""" 定义send_get函数,用来接收参数,发送get请求 """
r = requests.get(url=url, params=data)
result = r.json()
return result def send_post(url, data):
""" 定义send_post函数,用来接收参数,发送post请求 """
r = requests.get(url=url, data=data)
result = r.json()
return result def main(url, method, data):
""" 定义一个主函数,根据method是get或post,来调用send_post()或send_get() """
if method == 'POST':
r = send_post(url, data) # 如果是POST请求,则调用send_post()
else:
r = send_get(url, data) # 如果是GET请求,则调用send_get()
return r # 将结果返回出去 url = 'http://localhost:7001/XXX'
data = {
'controlSeq': ''
}
demo = main(url, 'GET', data)
print(demo)
3.定义一个类,对post请求和get请求进行封装
run_method.py # -*- coding: UTF-8 -*- import requests
import json class RunMain:
"""含有构造器"""
def __init__(self, url, method, data=None):
self.t = self.run_main(url, method, data) def send_post(self, url, data):
r = requests.post(url=url, data=data)
result = r.json()
return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False) def send_get(self, url, data):
r = requests.get(url=url, params=data)
result = r.json()
return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)
# 利用json.dumps将响应数据进行json格式的编码解析
# indent=2将输出结果缩进2个字符显示
# sort_keys=False,输出结果是否按照关键字排序
# json.dumps 序列化时对中文默认使用的ascii编码,ensure_ascii=False才会输出中文
# return result def run_main(self, url, method, data=None):
if method == 'GET':
r = self.send_get(url, data)
else:
r = self.send_post(url, data)
return r if __name__ == '__main__':
url = 'http://localhost:7001/XXX'
data = {
'controlSeq': ''
}
test = RunMain(url, 'GET', data) # 因为有构造器 __init__,实例化时要带参数
print(test.t)
run_method.py
# -*- coding: UTF-8 -*- import requests
import json
class RunMain:
"""无构造器"""
def send_get(self, url, data):
res = requests.get(url=url, params=data).json()
return res def send_post(self, url, data):
res = requests.post(url=url, data=data).json()
return res def run_main(self, url, method, data=None):
res = None
if method == 'GET':
res = self.send_get(url, data)
else:
res = self.send_post(url, data)
return res if __name__ == '__main__':
url = 'http://192.168.0.53:7001/CommonService/api/control/controlProgress/query.v'
data = {
'controlSeq': ''
}
run = RunMain() # 先实例化,实例化时不需要带参数
print(run.run_main(url, 'GET', data))
ps.建议在封装运行方法类时,不要加构造器,这样就不需要在实例化时传参,在后面的主函数中从excel中取出参数后再传给类中的方法即可
下面是json.dumps使用前后的对比图

第一目的内容到此结束,一方面简单介绍下requests的用法,另一方面将post和get请求进行基本封装,通过实例化对象进行调用
记录python接口自动化测试--requests使用和基本方法封装(第一目)的更多相关文章
- python - 接口自动化测试 - basic_data - 基础数据参数化方法封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: basic_data.py @ide: PyCharm C ...
- 记录python接口自动化测试--简单总结一下学习过程(第十目)
至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...
- 记录python接口自动化测试--主函数(第六目)
把操作excel的方法封装好后,就可以用准备好的接口用例来循环遍历了 我的接口测试用例如下 主函数代码: run_handle_excel.py# coding:utf-8 from base.run ...
- 记录python接口自动化测试--unittest框架基本应用(第二目)
在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...
- 记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)
在第六目把主函数写好了,先来运行一下主函数 从截图中可以看到,请求参数打印出来了,和excel中填写的一致 但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中 ...
- 记录python接口自动化测试--利用unittest生成测试报告(第四目)
前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...
- 记录python接口自动化测试--把测试结果写进excel文件(第九目)
python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取 ...
- 记录python接口自动化测试--根据excel中的期望输出是否存在请求返回的响应来判断用例是否执行成功(第八目)
1.首先在excel中的expectValue列填好预期结果值 这里判断接口成功的依据是预期结果值是否存在于接口返回的数据中. 首先,要知道在之前封装的get/post请求方法中返回的是‘str’,也 ...
- python接口自动化测试 - requests库的post请求进行文件上传
前言 如果需要发送文件到服务器,比如上传图片.视频等,就需要发送二进制数据. 一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可 ...
随机推荐
- 让微信,qq,uc浏览器使用全屏模式,全屏模式里,浏览器是不会上下左右滑动出现背景的
<meta name="x5-fullscreen" content="true"> <meta name="full-screen ...
- dependencies 与 devDependencies 的区别
dependencies 与 devDependencies 的区别 在使用 npm install 安装 npm 包时,有两种命令参数可以把它们的信息写入 package.json 文件: --sa ...
- 决策树系列(四)——C4.5
预备知识:决策树.ID3 如上一篇文章所述,ID3方法主要有几个缺点:一是采用信息增益进行数据分裂,准确性不如信息增益率:二是不能对连续数据进行处理,只能通过连续数据离散化进行处理:三是没有采用剪枝的 ...
- 【转载】Apache Spark Jobs 性能调优(一)
当你开始编写 Apache Spark 代码或者浏览公开的 API 的时候,你会遇到各种各样术语,比如 transformation,action,RDD 等等. 了解到这些是编写 Spark 代码的 ...
- RobotFramework下的http接口自动化Get Response Body关键字的使用
Get Response Body 关键字在上面已经有用到了,服务器端在处理完成了发出的http请求后,会给出对应的响应结果,那么Get Response Body这个关键字就是来获取响应结果中的主体 ...
- TensorLayer官方中文文档1.7.4:API – 数据预处理
所属分类:TensorLayer API - 数据预处理¶ 我们提供大量的数据增强及处理方法,使用 Numpy, Scipy, Threading 和 Queue. 不过,我们建议你直接使用 Tens ...
- POJ 2516 Minimum Cost (费用流)
题面 Dearboy, a goods victualer, now comes to a big problem, and he needs your help. In his sale area ...
- [BZOJ1012] [JSOI2008] 最大数maxnumber (ST表)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...
- [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)
Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...
- cut命令及参数企业案列讲解及awk对比
cat oldboy.txt I am oldboy myqq is 49000448 cut -d " " -f3,6 oldboy.txt oldboy 49000448 aw ...