ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

requests实战--(用python实现接口测试)

2022-06-21 17:01:18  阅读:133  来源: 互联网

标签:-- token filename python json url print requests


requests是python的第三方库  我们用的时候 首先需要安装它:

pip install requests

安装之后 我们在python文件中用它的方法,首先需要导入

import requests

在requests中,可以对常用的Http请求方法发送请求

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

含义:

r:表示的是返回Response(响应数据)的对象

requests:

第一个参数:method ,也就是Http的请求方法

第二个参数: url  ,请求地址

第三个参数:header ,请求头

第四个参数:json/data ,请求数据

# 测试平台的登录接口为例 通过抓包获取到请求方法 请求地址 请求参数 请求头(请求头也要带大括号)
r=requests.post(
    url="http://47.95.142.233:8000/login/auth/",
    json={"username":"13xxxxxx","password":"xxxxxx"},
    headers={"Content-Type":"application/json"}
)

print(r.status_code)
print(r.json())
print(json.dumps(r.json(),indent=True,ensure_ascii=False))      # json序列化 格式化的输出
print(r.json()["token"])

json和data 的区别:

json:数据格式就是json格式

data:

       1、表单

  2、如果数据格式是json的数据格式,但是我们要用data参数,那么就需要对参数进行序列化处理

当json类型时,如果使用data=,需要序列化处理:

1 r=requests.post(
2     url="http://47.95.142.233:8000/login/auth/",
3     data=json.dumps({"username":"13xxxxxx","password":"xxxxxx"}),
4     headers={"Content-Type":"application/json"}
5 )

requests基础方法:

import  requests
r=requests.get(url='https://www.baidu.com/')
# 获取状态码
print(r.status_code)
#获取json的数据类型
# print(r.json())
# print(r.text)
# 获取请求地址
print(r.url)
#获取二进制内容
# print(r.content)
# 获取响应头
print(r.headers)
# 获取响应时间,这边一直以毫秒为单位,没有超过1s的话一直显示为0s
print(r.elapsed.seconds)

风暴平台基本为例 (增删改查)

动态参数的处理思路:

登录成功后,会返回一个token ,我们访问个人主页的时候会带上这个token,但是每次登录返回的token值是不一样的 ,所以,我们就说这个token是个动态参数 我们就以这个为例

1、我们登录成功后 我会创建一个写的函数,调用这个写的函数把返回的token值写在一个文件里

2、我们在访问个人主页的时候,则创建一个读的函数,访问个人主页的时候我们调用读这个函数读取这个文件里的token调用

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:张红


import requests
import json

# 动态参数的写入
def writeID(filename,countent):
    with open(file=filename,mode='w')as f:
        f.write(countent)


# 动态参数的读
def getID(filename):
    with open(file=filename,mode='r')as f:
        return f.read()

# 登录
def login():
    r=requests.post(
        url='http://47.95.142.233:8000/login/auth/',
        json={"username":"13xxxxxx","password":"xxxxxx"},
        headers={'Content-Type':'application/json;charset=UTF-8'},

    )
    writeID(filename='token',countent=r.json()['token'])
    # return r.json()['token']
login()

# 首页
def index():
    r=requests.get(
        url='http://47.95.142.233:8000/interface/index',
        headers={'Authorization':'JWT {token}'.format(token=getID(filename='token'))}
    )
    print(r.json())
# index()

# 添加产品
def addProduct():
    r=requests.post(
        url='http://47.95.142.233:8000/interface/product/',
        headers={'Authorization':'JWT {token}'.format(token=getID(filename='token'))
                # 'Content - Type':'application / json;charset = UTF - 8'
                 },
        json={"name":"撒旦","product_type":"APP","version":"1","master":"是","description":"多少"}

    )
    writeID(filename='productID',countent=json.dumps(r.json()['id']))
    print(r.text)
    print(r.status_code)
addProduct()


# 修改产品名称
def modifyProduct():
    id=int(getID(filename='productID'))
    r=requests.put(
        url='http://47.95.142.233:8000/interface/product/%d/'%id,
        headers={'Authorization':'JWT {token}'.format(token=getID(filename='token'))},
        json={"name":"你好","product_type":"APP","version":"1","master":"是","description":"多少","id":id}

    )
    print(r.json())
    print(r.status_code)
modifyProduct()


# 查询产品
def queryProduct():
    r=requests.get(
        url='http://47.95.142.233:8000/interface/products',
        params={'name':'接'},
        headers={'Authorization':'JWT {token}'.format(token=getID(filename='token'))},
    )
    # print(r.json())
    print(r.status_code)
queryProduct()


# 删除产品
def deleteProduct():
    id = int(getID(filename='productID'))
    r=requests.delete(
        url='http://47.95.142.233:8000/interface/product/%d/'%id,
        headers={'Authorization':'JWT {token}'.format(token=getID(filename='token'))}
    )
    # print(r.json())
    print(r.status_code)
deleteProduct()

 

  

 

标签:--,token,filename,python,json,url,print,requests
来源: https://www.cnblogs.com/zhanghong23/p/16396989.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有