这绝对是我见过全网最新最细没有之一的python全栈接口自动化测试框架,脚本,实例,报告。(附带源码

host = “http://httpbin.org/”
endpoint = “get”

url = ‘’.join([host,endpoint])
r = requests.get(url)
#response = r.json()

print type(r.text)
print (eval(r.text))

输出:

{
‘origin’: ‘183.14.133.88’,
‘headers’: {
‘Connection’: ‘close’,
‘Host’: ‘httpbin.org’,
‘Accept-Encoding’: ‘gzip,
deflate’,
‘Accept’: ‘/’,
‘User-Agent’: ‘python-requests/2.18.1’
},
‘args’: {

},
‘url’: ‘http: //httpbin.org/get’
}

8.2 带参数的get:

-- coding:utf-8 --

#带参数的get

import requests
import json

host = “http://httpbin.org/”
endpoint = “get”

url = ‘’.join([host,endpoint])
params = {“show_env”:“1”}
r = requests.get(url=url,params=params)

print r.url

输出:

http://httpbin.org/get?show_env=1
{
‘origin’: ‘183.14.133.88’,
‘headers’: {
‘X-Request-Id’: ‘ebe922b4-c463-4fe9-9faf-49748d682fd7’,
‘Accept-Encoding’: ‘gzip,
deflate’,
‘X-Forwarded-Port’: ‘80’,
‘Total-Route-Time’: ‘0’,
‘Connection’: ‘close’,
‘Connect-Time’: ‘0’,
‘Via’: ‘1.1vegur’,
‘X-Forwarded-For’: ‘183.14.133.88’,
‘Accept’: ‘/’,
‘User-Agent’: ‘python-requests/2.18.1’,
‘X-Request-Start’: ‘1504755961007’,
‘Host’: ‘httpbin.org’,
‘X-Forwarded-Proto’: ‘http’
},
‘args’: {
‘show_env’: ‘1’
},
‘url’: ‘http: //httpbin.org/get?show_env=1’
}

8.3带header的get:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “get”

url = ‘’.join([host,endpoint])
headers = {“User-Agent”:“test request headers”}

r = requests.get(url)
r = requests.get(url,headers=headers)
#response = r.json()
print (eval(r.text))[‘headers’][‘User-Agent’]

输出:

test request headers

8.4同时带参数和header:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “get”

url = ‘’.join([host,endpoint])
headers = {“User-Agent”:“test request headers”}
params = {“show_env”:“1”}

r = requests.get(url)
r = requests.get(url,headers=headers,params=params)

#response = r.json()
print (eval(r.text))[‘headers’][‘User-Agent’]
print r.url

输出:

test request headers
http://httpbin.org/get?show_env=1

九.requests.post()

9.1方法定义

9.1.1post方法简单使用

1、带数据的post

2、带header的post

3、带json的post

4、带参数的post

5、普通文件上传

6、定制化文件上传

7、多文件上传

十.方法定义:

10.1到官方文档去了下requests.post()方法的定义,如下:

10.2源码:

10.3常用返回信息:

十一.post方法简单使用:

11.1带数据的post:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”
url = ‘’.join([host,endpoint])
data = {‘key1’:‘value1’,‘key2’:‘value2’}

r = requests.post(url,data=data)
#response = r.json()
print (r.text)

输出:

{
“args”: {},
“data”: “”,
“files”: {},
“form”: {
“key1”: “value1”,
“key2”: “value2”
},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Content-Length”: “23”,
“Content-Type”: “application/x-www-form-urlencoded”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.18.1”
},
“json”: null,
“origin”: “183.14.133.88”,
“url”: “http://httpbin.org/post”
}

11.2带header的post:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
headers = {“User-Agent”:“test request headers”}

r = requests.post(url)

r = requests.post(url,headers=headers)
#response = r.json()

输出:

{
“args”: {},
“data”: “”,
“files”: {},
“form”: {},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Content-Length”: “0”,
“Host”: “httpbin.org”,
“User-Agent”: “test request headers”
},
“json”: null,
“origin”: “183.14.133.88”,
“url”: “http://httpbin.org/post”
}

11.3带json的post:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
data = {
“sites”: [
{ “name”:“test” , “url”:“www.test.com” },
{ “name”:“google” , “url”:“www.google.com” },
{ “name”:“weibo” , “url”:“www.weibo.com” }
]
}

r = requests.post(url,json=data)

r = requests.post(url,data=json.dumps(data))

response = r.json()

输出:

{
“args”: {},
“data”: “{“sites”: [{“url”: “www.test.com”, “name”: “test”}, {“url”: “www.google.com”, “name”: “google”}, {“url”: “www.weibo.com”, “name”: “weibo”}]}”,
“files”: {},
“form”: {},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Content-Length”: “140”,
“Content-Type”: “application/json”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.18.1”
},
“json”: {
“sites”: [
{
“name”: “test”,
“url”: “www.test.com”
},
{
“name”: “google”,
“url”: “www.google.com”
},
{
“name”: “weibo”,
“url”: “www.weibo.com”
}
]
},
“origin”: “183.14.133.88”,
“url”: “http://httpbin.org/post”
}

11.4带参数的post:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
params = {‘key1’:‘params1’,‘key2’:‘params2’}

r = requests.post(url)

r = requests.post(url,params=params)
#response = r.json()
print (r.text)

输出:

{
“args”: {
“key1”: “params1”, 
“key2”: “params2”
}, 
“data”: “”, 
“files”: {}, 
“form”: {}, 
“headers”: {
“Accept”: “*/*”, 
“Accept-Encoding”: “gzip, deflate”, 
“Connection”: “close”, 
“Content-Length”: “0”, 
“Host”: “httpbin.org”, 
“User-Agent”: “python-requests/2.18.1”
}, 
“json”: null, 
“origin”: “183.14.133.88”, 
“url”: “http://httpbin.org/post?key2=params2&key1=params1”
}

11.5普通文件上传:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
#普通上传
files = {
‘file’:open(‘test.txt’,‘rb’)
}

r = requests.post(url,files=files)
print (r.text)

输出:

{
“args”: {},
“data”: “”,
“files”: {
“file”: “hello world!\n”
},
“form”: {},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Content-Length”: “157”,
“Content-Type”: “multipart/form-data; boundary=392865f79bf6431f8a53c9d56c62571e”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.18.1”
},
“json”: null,
“origin”: “183.14.133.88”,
“url”: “http://httpbin.org/post”
}

11.6定制化文件上传:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
#自定义文件名,文件类型、请求头
files = {
‘file’😦‘test.png’,open(‘test.png’,‘rb’),‘image/png’)
}

r = requests.post(url,files=files)
print (r.text)heman793

11.7多文件上传:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])
#多文件上传
files = [
(‘file1’,(‘test.txt’,open(‘test.txt’, ‘rb’))),
(‘file2’, (‘test.png’, open(‘test.png’, ‘rb’)))
]

r = requests.post(url,files=files)
print (r.text)

11.8流式上传:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “post”

url = ‘’.join([host,endpoint])

#流式上传
with open( ‘test.txt’ ) as f:
r = requests.post(url,data = f)

print (r.text)

输出:

{
“args”: {},
“data”: “hello world!\n”,
“files”: {},
“form”: {},
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Content-Length”: “13”,
“Host”: “httpbin.org”,
“User-Agent”: “python-requests/2.18.1”
},
“json”: null,
“origin”: “183.14.133.88”,
“url”: “http://httpbin.org/post”
}

十二.Cookie&Session

掌握了前面几节的的内容,就可以做一些简单的http协议接口的请求发送了,但是这些还不够。HTTP协议是一个无状态的应用层协议,也就是说前后两次请求是没有任何关系的,那如果我们测试的接口之前有相互依赖关系怎么办呢(比如我要在博客园发文章,是需要先登录的),这时我们就要用到cookie和session技术来保持客户端与服务器端连接的状态,这也就是本节要介绍的内容:

十三.Cookie:

13.1获取cookie:

-- coding:utf-8 --

#获取cookie
import requests
import json

url = “https://www.baidu.com/”
r = requests.get(url)

#将RequestsCookieJar转换成字典
c = requests.utils.dict_from_cookiejar(r.cookies)

print r.cookies
print c

for a in r.cookies:
print a.name,a.value

输出:

<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{‘BDORZ’: ‘27315’}
BDORZ 27315

13.2发送Cookie

-- coding:utf-8 --

#发送cookie到服务器
import requests
import json

host = “http://httpbin.org/”
endpoint = “cookies”

url = ‘’.join([host,endpoint])
#方法一:简单发送

cookies = {“aaa”:“bbb”}

r = requests.get(url,cookies=cookies)

print r.text

#方法二:复杂发送
s = requests.session()
c = requests.cookies.RequestsCookieJar()
c.set(‘c-name’,‘c-value’,path=‘/xxx/uuu’,domain=‘.test.com’)
s.cookies.update©

十四.Session

14.1保持会话同步

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “cookies”

url = ‘’.join([host,endpoint])
url1 = “http://httpbin.org/cookies/set/sessioncookie/123456789”

r = requests.get(url)
print r.text

print “------”

s = requests.session() #初始化一个session对象
s.get(url1) #cookie的信息存在了session中
r = s.get(url)

print r.text

输出:

{
“cookies”: {}
}


{
“cookies”: {
“sessioncookie”: “123456789”
}
}

14.2保存绘画信息:

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “headers”

url = ‘’.join([host,endpoint])

header1 = {“testA”:“AAA”}
header2 = {“testB”:“BBB”}

s = requests.session() #初始化一个session对象
s.headers.update(header1) #已经存在于服务中的信息
r = s.get(url,headers=header2) #发送新的信息

print r.text

输出:

{
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Host”: “httpbin.org”,
“Testa”: “AAA”,
“Testb”: “BBB”,
“User-Agent”: “python-requests/2.18.1”
}
}

14.3删除已存在的会话信息,保存为No

-- coding:utf-8 --

import requests
import json

host = “http://httpbin.org/”
endpoint = “headers”

url = ‘’.join([host,endpoint])

header1 = {“testA”:“AAA”}
header2 = {“testB”:“BBB”}

s = requests.session() #初始化一个session对象
s.headers.update(header1) #已经存在于服务中的信息
r = s.get(url,headers=header2) #发送新的信息

print r.text

print ‘--------’

s.headers[‘testA’] = None #删除会话里的信息testA
r1 = s.get(url,headers = header2)
print r1.text

{
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Host”: “httpbin.org”,
“Testa”: “AAA”,
“Testb”: “BBB”,
“User-Agent”: “python-requests/2.18.1”
}
}


{
“headers”: {
“Accept”: “/”,
“Accept-Encoding”: “gzip, deflate”,
“Connection”: “close”,
“Host”: “httpbin.org”,
“Testb”: “BBB”,
“User-Agent”: “python-requests/2.18.1”
}
}

14.4提供默认数据:

s = requests.Session()
s.auth = (‘user’, ‘pass’)
s.headers.update({‘x-test’: ‘true’})

both ‘x-test’ and ‘x-test2’ are sent

s.get(‘http://httpbin.org/headers’, headers={‘x-test2’: ‘true’})

参考:

http://docs.python-requests.org/en/master/user/quickstart/#cookies
http://docs.python-requests.org/en/master/user/advanced/#session-objects

十五.其他(认证&代理&超时设置)

15.1认证

15.1.1基本认证:

-- coding:utf-8 --

import requests

url = “http://httpbin.org/basic-auth/user/passwd”

r1 = requests.get(url)
print “未提供用户名密码:” + str(r1.status_code)

#Basic Authentication
r2 = requests.get(url,auth=(‘user’,‘passwd’))
print “已提供用户名密码:” + str(r2.status_code)

输出:

未提供用户名密码:401
已提供用户名密码:200

15.2数字认证:

from requests.auth import HTTPDigestAuth
url = ‘http://httpbin.org/digest-auth/auth/user/pass’
requests.get(url, auth=HTTPDigestAuth(‘user’, ‘pass’))
<Response [200]>

15.3OAuth认证:

参考:http://docs.python-requests.org/en/master/user/authentication/

十六.代理

16.1方法一:proxy参数:

import requests

proxies = {
“https”: “http://41.118.132.69:4433”
}
r = requests.post(“http://httpbin.org/post”, proxies=proxies)
print r.text

16.2方法二:设置环境变量:

$ export HTTP_PROXY=“http://10.10.1.10:3128”
$ export HTTPS_PROXY=“http://10.10.1.10:1080”

$ python

import requests
requests.get(‘http://example.org’)

16.3HTTP Basic Auth使用代理方法:http://user:password@host/

proxies = {‘http’: ‘http://user:pass@10.10.1.10:3128/’}

十七.证书验证

17.1SSL证书(HTTPS):

import requests

#跳过12306 的证书验证,把 verify 设置为 False:
r = requests.get(‘https://kyfw.12306.cn/otn/’, verify=False)
print r.text

17.2客户端证书:

requests.get(‘https://kennethreitz.org’, cert=(‘/path/client.cert’, ‘/path/client.key’))
<Response [200]>

or

s = requests.Session()
s.cert = ‘/path/client.cert’

十八.超时配置

18.1利用timeout参数来配置最大请求时间:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

e [200]>

or

s = requests.Session()
s.cert = ‘/path/client.cert’

十八.超时配置

18.1利用timeout参数来配置最大请求时间:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-ATWhkFis-1713086102372)]
[外链图片转存中…(img-m7mtB4my-1713086102373)]
[外链图片转存中…(img-cxyYY3Ap-1713086102373)]
[外链图片转存中…(img-f883qzBz-1713086102374)]
[外链图片转存中…(img-AvC0zRsm-1713086102374)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-nrvfM9OW-1713086102375)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值