我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

java__张国荣__20210318

[复制链接]
淰7331学员认证 发表于 2021-3-18 19:17:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题


'''
使用python-requests 包进行接口测试
1、构造参数
2、发送请求
3、校验结果
'''

#加载包
import requests


#百度搜索的接口,搜索的内容为requests
#url = "http://www.baidu.com/s?wd=requests"
#发送请求,将服务器返回的结果放到变量r中
#r = requests.get(url)
#打印文本格式的响应体
#print(r.text)
#对结果进行断言,判断关键字在不在结果中
#assert "Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档" in r.text

#金融项目注册接口的测试
#get请求的参数拼接到url的后面,
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register?mobilephone=12345&pwd=12345"
r = requests.get(url)
print(r.text)
print(r.json()) #如果相应体是json格式的,使用r.json()
print(r.json()['code'])
assert r.json()['code'] == "20108"
assert r.json()['msg'] == "密码长度必须为6~18"

#get请求的参数,使用params传递
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register"
cs = {
    "mobilephone":"18012345678",
    "pwd":"12345",
    "regname":"hello"
}

r = requests.get(url,params=cs)
print(r.text)
assert r.json()['code'] == "20108"
assert r.json()['msg'] == "密码长度必须为6~18"

print("状态码",r.status_code)
print("状态原因",r.reason)
print("响应头",r.headers)
print("cookies",r.cookies)
print("文本格式的响应体",r.text)
print("请求头",r.request.headers)

#新知天气查询天气的接口
url = "https://api.seniverse.com/v3/weather/now.json?key=Sh-LsrOsCyo4vp8Tp&location=xian"
r = requests.get(url)
print(r.json())
#西安
print(r.json()['results'][0]['location']['name'],end='当前温度:')
#温度
print(r.json()['results'][0]['now']['temperature'])

#分割线
print("*"*50)
#获取用户列表
url = "http://192.168.2.36:8089/futureloan/mvc/api/member/list"
r = requests.get(url)
print(r.json())
print(r.request.headers)  #‘’

#分割线
print("*" * 50)
hds = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 QQBrowser/9.3"
}
r = requests.get(url, headers=hds)
print(r.json())
print(r.request.headers)

'''
用requests 发送post请求
1.data传参,传的是表单格式的参数
2.json传参,传的是json格式的参数
具体用data还是json传参要看接口是如何实现的
'''

#金融登录接口

import requests

url = "http://192.168.2.36:8089/futureloan/mvc/api/member/login"
cs = {
    "mobilephone":"18012345678",
    "pwd":"123456"
}
#用data传参
r = requests.post(url,data=cs)
print(r.text)
#请求头中 'Content-Type':
print(r.request.headers)

#用json传参
r = requests.post(url,json=cs)
print(r.text) #"手机号不能为空",不支持手机号传参
#请求头中  'Content-Type': 'application/json'
print(r.request.headers)

#租车系统的登录接口(没有接口文档,但是有界面时,可以通过操作界面抓取接口)
url = "http://192.168.2.36:8089/carRental/login/login.action"
cs = {
"loginname":"admin",
    "pwd":"123456"
}
#
r = requests.post(url,data=cs)
print(r.text)
assert "<title>首页-汽车出租系统</title>" in r.text

'''
上传文件
'''

import requests

#接口测试的网站,该网站把收到的请求,
# 组装成json格式的响应,返回给用户
#/post 是post方法
#/get 是get方法
#/delete 是delete方法
url = "http://www.httpbin.org/post"
cs = {
    "user":"admin",
    "e-mail": "123213@qq.com"
}
path = "c:/test.txt"
with open(path,mode='r') as f:
    fs = {
        #"file1" 上传接口的参数名,是接口定义的
        "file1"path,f), #二元组:(文件名字,文件对象)
        "file2"path,f,"text/plain") #三元文件

    }
    r = requests.post(url,data=cs,files=fs)
    print(r.text)

#租车系统,添加车辆时,先上传车辆图片
path = "c:/test.jpg"
url = "http://192.168.2.36:8089/carRental/file/uploadFile.action"
with open(path,mode='rb') as f:
    fs = {
        "mf": (path,f,"image/jpg")  #三元组:(文件名字,文件对象,文件类型)
    }
    r = requests.post(url,data=cs,files=fs)
    print(r.text)
    assert "2021-03-18" in r.json()['data']['src']

#一次上传多个文件(接口支持一次性上传多个文件)
url = "http://www.httpbin.org/post"
path1 = "c:/test.txt"
path2 = "c:/test.jpg"
with open(path1,mode='r')as f1:
    with open(path2,mode='rb')as f2:
        fs = {
            "f1"path1,f1),
            "f2"path2,f2,"image/jpg")
        }
        r = requests.post(url,files=fs)
        print(r.text)
回复

使用道具 举报

关注0

粉丝0

帖子23

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备20001493号-1 )

版权所有 © 西安菁英教育科技有限公司 2023-2026