python自动化之获取实际响应数据-登录模块与我的商铺(第四天)

1.配置文件

新建config.py(config包)

2.登录

新建login.py模块(lib-apiLib)

根据接口文档,可知道登录接口的密码需要md5加密

接口文档,如有需要,可在评论区留言!!!

login.py代码

# -*- coding: utf-8 -*-
# @File : login.py
# @Time : 2024/3/4 15:32
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
import hashlib
import pprint

import requests
from config.config import HOST

#1.md5加密方法
def get_md5(password):
    #创建md5对象
    md5=hashlib.md5()
    #加密
    md5.update(password.encode('utf-8'))
    #返回加密结果
    return md5.hexdigest()

#2.登录类
class Login:
    #3.登录方法
    def login(self,respData,getToken=False):
        url=f'{HOST}/account/sLogin'
        respData['password']=get_md5(respData['password'])
        #4用requests库,获取响应结果
        resReal=requests.post(url,data=respData)
        #5.判断返回的结果
        if getToken==False:
            return resReal.json()
        else:
            return resReal.json()['data']
if __name__ == '__main__':
    login=Login()
    resReal=login.login({"username":"ct0909","password":"89254"})
    pprint.pprint(resReal)

 运行结果:

3.商铺

3.1商铺列表

新建shop.py模块 (lib-apiLib)

根据接口文档可知,请求消息头的token值要知道

(token值根据上一个登录接口获取)

shop.py代码

# -*- coding: utf-8 -*-
# @File : shop.py
# @Time : 2024/3/4 16:05
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
#1.商铺类
import pprint
import requests
from lib.apiLib.login import Login
from config.config import HOST

class Shop:
    #2.token值
    def __init__(self,token):
        self.headers={'Authorization':token}
    #3.获取商铺列表的响应结果
    def shop_list(self,respData):
        url=f'{HOST}/shopping/myShop'
        resReal=requests.get(url,params=respData,headers=self.headers)
        return resReal.json()
if __name__ == '__main__':
    #验证我的商铺接口代码是否没有问题
    token=Login().login({"username":"ct0909","password":"89254"},getToken=True)
    shop=Shop(token)
    resReal=shop.shop_list({"page":1,"limit":1})
    pprint.pprint(resReal)

结果

3.2文件上传

再shop.py模块中新增如下代码:

    def file_update(self,fileName,fileDir,fileType):
        url=f'{HOST}/file'
        fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}
        resReal=requests.post(url,files=fileBody,headers=self.headers)
        return resReal.json()['data']['realFileName']

fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}

在这个字典中,'file'是键,后面的部分 ((fileName,open(fileDir,'rb'),fileType)) 是值,值又是由三部分组成的元组。

这三部分分别是:

  1. fileName:上传后的文件名。
  2. open(fileDir, 'rb'):这部分是Python的内置函数open,它用于打开本地文件。'rb'模式代表以二进制格式打开一个文件用于只读。并且,文件会在被请求时读取,不会马上读取。这很重要,因为这意味着你可以上传超大的文件,不用担心内存使用过多。
  3. fileType:代表文件类型;'image/png':这是MIME类型(多用途互联网邮件拓展类型)。对于图像,可能的类型包括'image/jpeg', 'image/png'等。

3.3商铺更新

再shop.py模块中新增如下代码:

    def shop_update(self,respData,shopId,image_path):
        url=f'{HOST}/shopping/updatemyshop'
        respData['id']=shopId
        respData['image_path']=image_path
        respData['image']=f'{HOST}/file/getImgStream?fileName={image_path}'
        resReal=requests.post(url,data=respData,headers=self.headers)
        return resReal.json()

新增后的shop.py模块的代码为

# -*- coding: utf-8 -*-
# @File : shop.py
# @Time : 2024/3/4 16:05
# @Author : syq
# @Email : 1721169065@qq.com
# @Software: PyCharm
#1.商铺类
import pprint
import requests
from lib.apiLib.login import Login
from config.config import HOST

class Shop:
    #2.token值
    def __init__(self,token):
        self.headers={'Authorization':token}
    #3.获取商铺列表的响应结果
    def shop_list(self,respData):
        url=f'{HOST}/shopping/myShop'
        resReal=requests.get(url,params=respData,headers=self.headers)
        return resReal.json()
    #4.文件上传接口-目的为了给商铺更新接口传参
    #文件上传接口包括:文件名字,文件对象,文件类型
    def file_update(self,fileName,fileDir,fileType):
        url=f'{HOST}/file'
        fileBody={'file':(fileName,open(fileDir,'rb'),fileType)}
        resReal=requests.post(url,files=fileBody,headers=self.headers)
        return resReal.json()['data']['realFileName']
    #5.获取商铺修改的响应结果
    def shop_update(self,respData,shopId,image_path):
        url=f'{HOST}/shopping/updatemyshop'
        respData['id']=shopId
        respData['image_path']=image_path
        respData['image']=f'{HOST}/file/getImgStream?fileName={image_path}'
        resReal=requests.post(url,data=respData,headers=self.headers)
        return resReal.json()
if __name__ == '__main__':
    #验证我的商铺接口代码是否没有问题
    token=Login().login({"username":"ct0909","password":"89254"},getToken=True)
    shop=Shop(token)
    #验证商铺列表接口
    # resReal=shop.shop_list({"page":1,"limit":1})
    # pprint.pprint(resReal)
    #验证文件上传接口
    image_path=shop.file_update('温州修改.png','../../data/温州修改.png','image/png')
    pprint.pprint(image_path)
    #根据商铺列表接口获取商铺id
    shopId=shop.shop_list({"page":1,"limit":1})['data']['records'][0]['id']
    print(shopId)
    respData={
            "name": "星巴克新建店",
            "address": "上海市静安区秣陵街道303号路",
            "id": "3269",
            "Phone": "13176876632",
            "rating": "6.0",
            "recent_order_num":100,
            "category": "快餐便当/简餐",
            "description": "满30减5,满60减8",
            "image_path": "b8be9abc-a85f-4b5b-ab13-52f48538f96c.png",
            "image": "http://121.41.14.39:8082/file/getImgStream?fileName=b8be9abc-a85f-4b5b-ab13-52f48538f96c.png"
        }
    #验证商铺更新接口
    resReal=shop.shop_update(respData,shopId,image_path)
    print(resReal)



结果:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布凡哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值