python+requests库,接口自动化
1.requests库的使用
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的:
“python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。”
1. 安装
https://pypi.python.org/pypi/requests
api:http://cn.python-requests.org/zh_CN/latest/
pip install requests
2.import requests
3.发送请求
requests.get('http://www.baidu.com')
配置url参数
params 关键字参数,以一个字典来提供这些参数
payload = {'key1': 'value1', 'key2': 'value2'}
requests.get("http://httpbin.org/get", params=payload)
requests.post(url)
表单提交
data传入字典
payload = {'key1': 'value1', 'key2': 'value2'}
requests.post("http://httpbin.org/post", data=payload)
x-www-form-urlencoded形式
headers增加配置 Content-Type:application/x-www-form-urlencoded
data传入字典
raw(文本)提交
字符串形式\xml形式
payload = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
r = requests.post(url, data=payload)
json形式
方式一:字典转字符串
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
payload = {'some': 'data'}
r = requests.post(url, json=payload)
二进制形式(文件)提交
files参数
files = {'file': open('report.xls', 'rb')}
requests.post(url, files=files)
定制请求头
headers 字典
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
requests.get(url, headers=headers)
添加Cookie
cookies 字典
cookies = dict(cookies_are='working')
cookies ={'cookies_are':'working'}
requests.get(url, cookies=cookies)
超时
requests.get('http://github.com', timeout=0.001)
timeout 仅对连接过程有效,与响应体的下载无关
超时则抛出requests.exceptions.Timeout
4.接收请求
requests的get和post方法返回值都是Response对象,其存储了服务器响应的内容
响应状态码:response.status_code
response.raise_for_status() #失败请求(非200响应)抛出异常
响应头:response.headers--字典
Cookie: response.cookies--字典
响应体:response.text
内容编码格式问题
Requests 会基于 HTTP 响应头对响应的编码作出有根据的推测
response.encoding = 'utf-8' 指定编码格式,之后再调用response.text显示的编码格式就是设置后的
响应中的字节内容(二进制):response.content
解析响应
1.json格式
response.json() --响应字符串转json对象(字典)
2.xml格式
python解析xml方式
使用ElementTree
1.加载xml--加载XML文件共有2种方法,一是加载指定字符串,二是加载指定文件
root = ElementTree.fromstring(text)
root = ElementTree.parse("D:/test.xml")
2.获取对象
find方法 (支持部分xpath语法)
findall方法 (支持部分xpath语法)
注意命名空间:节点tag名称之前添加 {xxxx}
3.获取值、属性
.text
.attrib['category']
4.添加命名空间
2.完成天气预报两个接口的脚本编写
getSupportCityString01
getSupportCityString02
3.单元测试框架的使用
三个概念
Test Case
一个测试用例就是一个完整的测试单元,包含初始和收尾工作
基本单元为函数
Test Suite
一个功能往往有多个测试用例验证,用例的集合称为测试套件
Test Runner
测试用例执行的基本单元
用例组织
方式一:函数是用例,集中在一个类中
继承unittest.TestCase
每个用例都是一个无参的成员方法
方法名为test开头
名为runTest
主函数中调用unitest.main()函数 运行类中以test开头的所有测试用例
方式二:构造测试集合
unittest.TestSuite()
.addTest(类名("方法名"))
类需要事先import
unittest.TextTestRunner().run(suite)
创建run.py
断言使用
用例执行结果2
成功 没有未处理的异常 and 一个或多个断言全部成功
失败 抛出任何未知的或未捕获的异常 or 至少一个断言失败
unittest的原始断言
unittest.TestCase类的成员方法
assertEqual(a, b)判断a==b
assertNotEqual(a, b)判断a!=b
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b)a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a, b)
assertNotIsInstance(a, b) not isinstance(a, b)
python+requests库,接口自动化的更多相关文章
- python+requests实现接口自动化
1. 前言 今年2月调去支持项目接口测试,测试过程中使用过postman.jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦.比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手 ...
- python requests简单接口自动化
get方法 url:显而易见,就是接口的地址url啦 headers:定制请求头(headers),例如:content-type = application/x-www-form-urlencode ...
- python+requests+excel 接口自动化框架
一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...
- 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...
- Python——Requests库的开发者接口
本文介绍 Python Requests 库的开发者接口,主要内容包括: 目录 一.主要接口 1. requests.request() 2. requests.head().get().post() ...
- python requests库学习笔记(上)
尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...
- Python requests库的使用(一)
requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/z ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
- Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)
Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
随机推荐
- js通過name获取input框输入值
var account = $("input[name='account']").val();//获取input框输入值
- 运维wiki
意识 1.责任心 要有 owner 意识.运维是线上产品的首要负责人,出现故障都默认是运维的故障,要推动改进. 2.细心 要有敏感的风险意识,稳定和安全是运维的最高责任 3.上进心 要善于学习,不断反 ...
- MySQL常用命令(数据库,表相关的命令)
数据库相关命令 显示数据库列表 mysql> SHOW DATABASES; 创建数据库 mysql> CREATE DATABASE 库名; 如下,创建一个名为crashcours ...
- spring事务详解(四)测试验证
系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...
- Linux文件夹文件改英文
打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 跳出对话框询问是否将目录转化为英文路径,同意并关闭. 在终端中输入命令: expor ...
- c# 程序只能运行一次(多次运行只能打开同一个程序)
转自:https://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9/2291420309357 ...
- 在虚拟机上配置安装hadoop集群
原本以为有大神已经总结的很清楚了,就不自己在写了, 但是在自己安装的过程中还是出现了一些问题, 所以打算以自己的方式重新总结一下. 参考https://blog.csdn.net/hliq539 ...
- 项目中使用package-lock.json锁版本问题
package-lock.json的作用: 锁版本,确保项目在后续拉去中,安装依赖包时依赖包的版本始终是统一的 在npm install时会自动生成package-lock.json package. ...
- FBI树-数据结构(二叉树)
问题 B: [2004_p4]FBI树-数据结构 时间限制: 1 Sec 内存限制: 125 MB提交: 57 解决: 46 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称 ...
- js调试工具及微博登录分析
js调试工具 网页 都是采用ajax 需要提交一些参数 断点 自己去直接断点 事件断点, network 方法 靠近边栏顶部的是Call Stack(调用堆栈)窗格.当代码在断点处暂停时,Call ...