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 ...
随机推荐
- sql 用过记住
1 递归查询一个节点下的所有子节点 包括该节点 connect by h.parent_menu_id= prior h.menu_idstart with h.menu_id='当前节点' h.pa ...
- VS调试快捷键配置更改
VS进行调试时,默认情况下需按下Fn+F5等组合按键,手短的用起来很不便利 如何去掉组合键只按下F5? 解决:即按下Fn+Esc,然后就可以直接按下F1-F12使用VS的快捷键,如果想回到组合键也是同 ...
- YOLO理解
一.YOLO v1 1.网络结构 (1)最后一层使用线性激活函数: (2)其他各层使用leaky ReLU的激活函数: 2.Training (1) 将原图划分为SxS的网格.如果一个目标的中心落入某 ...
- gcc ld 链接器相关知识,调试指令(程序员的自我修养----链接、装载与库)
最近解决一个动态链接上的问题,因为以前从来没有接触过这方面的知识,所以恶补了一下,首先要了解gcc编译指令(makefile),ld链接器的选项(还有连接脚本section指定内存位置),熟悉查看连接 ...
- python基础知识8---条件和循环
阅读目录 一.if语句 1.1 功能 1.2 语法 1.2.1:单分支,单重条件判断 1.2.2:单分支,多重条件判断 1.2.3:if+else 1.2.4:多分支if+elif+else 1.2. ...
- sed命令的基本使用方法
sed命令 stream editor,用程序的方式编辑文本.基本上是玩正则模式匹配. 用s命令替换 $ sed "s/my/Hao Chen's/g" pets.txt 单引号去 ...
- 浏览器F12(开发者调试工具) 功能介绍
调试时使用最多的功能页面是:元素(ELements).控制台(Console).源代码(Sources).网络(Network)等. 元素(Elements):用于查看或修改HTML元素的属性.CSS ...
- 你真的理解了for循环吗?反正我是没有
for循环的执行步骤 咱们先来看一个有意思的关于for循环的程序 public class TestFor { public static void main(String[] args) { int ...
- DynamicEnumUtil 动态添加枚举类的枚举值
import java.lang.reflect.AccessibleObject; import java.lang.reflect.Array; import java.lang.reflect. ...
- php结合layui前端实现 多图上传
前端html代码 <div class="layui-upload"> <button type="button" class="l ...