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库,接口自动化的更多相关文章

  1. python+requests实现接口自动化

    1. 前言 今年2月调去支持项目接口测试,测试过程中使用过postman.jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦.比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手 ...

  2. python requests简单接口自动化

    get方法 url:显而易见,就是接口的地址url啦 headers:定制请求头(headers),例如:content-type = application/x-www-form-urlencode ...

  3. python+requests+excel 接口自动化框架

    一.项目框架如图: 1.common :这个包都是一些公共的方法,如:手机号加解密,get/post接口请求的方法封装,接口鉴权,发邮件,读写excel文件方法等等 2.result:存放每次运行的l ...

  4. 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)

    一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...

  5. Python——Requests库的开发者接口

    本文介绍 Python Requests 库的开发者接口,主要内容包括: 目录 一.主要接口 1. requests.request() 2. requests.head().get().post() ...

  6. python requests库学习笔记(上)

    尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ...

  7. Python requests库的使用(一)

    requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/z ...

  8. 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。

    python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...

  9. Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)

    Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...

  10. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

随机推荐

  1. NFC 大电池 高性价比手机

    NFC 大电池 高性价比手机三星 Galaxy A60元气版 黑瞳全视屏 3200万超广角拍照手机 骁龙675 6GB+64GB 丹宁黑 全网通4G 双卡双待 1499 https://item.jd ...

  2. Teamviewer远程控制

    设置无人值守的固定密码,不使用随机码进行远程控制访问 设置好密码之后,以后只要通过Teamviewer生成的固定ID,再加上你设置的密码就可以随时进行远程访问了,而不需要使用生成的随机码.

  3. 当鼠标经过表格数据行时颜色不同且奇偶行颜色也不同 (纯CSS)

    <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Prope ...

  4. sunzl is not in the sudoers file.This incident will be reported

    Description: [sunzl@localhost nuc900bsp$] ./install.sh sorry!you are not the root !! [sunzl@localhos ...

  5. 获取邮箱使用情况、以及最后一次logon时间

    # 每天收发邮件数 # https://gallery.technet.microsoft.com/scriptcenter/Count-sent-and-recceived-f9c66cf7 # 获 ...

  6. 一个HTTP打趴80%面试者

    面试多年,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验.请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正规军. 起因 面试官:请问你了解HTTP协 ...

  7. 微信小程序中的组件使用2

    需求    上面两个页面是同一个小程序的不同页面,两个页面中都是用到了label,有相似的地方,但是也有不同之处,这个时候,如果我们想要将这些label做出组件,然后复用,有该怎么做呢? 基础组件 首 ...

  8. 对话框--pop&dialog总结

    pinguo-zhouwei/CustomPopwindow:(通用PopupWindow,几行代码搞定PopupWindow弹窗(续)): 1,通用PopupWindow,几行代码搞定PopupWi ...

  9. 转载一份kaggle的特征工程:经纬度、特征构造、转化率

    转载:https://www.toutiao.com/i6642477603657613831/ 1 如果训练/测试都来自同一时间线,那么就可以非常巧妙地使用特性.虽然这只是一个kaggle的案例,但 ...

  10. connected standby

    参考链接 https://docs.microsoft.com/en-us/windows-hardware/design/device-experiences/modern-standby http ...