zoukankan      html  css  js  c++  java
  • Python接口测试文件上传

    Python接口测试文件上传


    2020.01.02 22:32:44字数 242阅读 267

    接口测试中,上传文件的测试场景非常常见。例如:上传头像(图片)、上传文件、上传视频等。下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口。

    1. 首先通过抓包分析上传文件接口的请求参数:
     
    文件上传.png
    1. 下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。
     
    image.png
    • 这里注意:content-type参数,如果我们通过form-data的方式上传文件,我们发送post请求的时候,headers这个参数中一定不能要包括这个值,,requests库会帮忙添加这个元素,加了可能会报错。

    代码实现:

    import requests
    from utils.LogUtil import my_log
    from faker import Faker
    log=my_log()
    faker = Faker('zh_CN')
    
    
    class marketCreate():
    
    
        def loginToken(self,mobile,code):
            '''
            登陆、注册接口
            :param mobile: 手机号
            :param code:   验证码
            :return:
            '''
            url='http://api.xxxxxx.net/v1/user/loginOrRegister'     #登陆接口请求地址
            headers={'Content-Type': 'application/json'}            #请求头信息,json数据类型
            json={"code":code,"deviceId":"5de548ad0e268bc0","deviceName":"HWNXT","mobile":mobile,"mobilePrefix":"63","version":"39"}     #请求数据
            r=requests.post(url,headers=headers,json=json)  #发送请求
            token=r.json()['data']['userVO']['token']       #获取token
            log.info('手机号'+mobile+'的token值为:'+token) #打印日志
            return token                                    #将token返回出去
    
        def uploadimages(self,mobile,file_path,filename):
            '''
            上传图片接口
            :param mobile:      手机号
            :param file_path:   文件路径
            :param filename:    文件名称
            :return:
            '''
            token = self.loginToken(mobile=mobile, code='789789')       #请求登陆接口,获取token
            url='http://api.xxxxxx.net/v1/upload/images'                #上传文件接口请求地址
            headers={'token': token}      #请求头信息关联token。不需要赋值Content-Type,requests库会帮忙添加这个元素,加了可能会报错。
            file_data={'file':(filename,open(file_path,'rb'),'image/jpeg')} #重点:上传文件请求数据。
            r=requests.post(url=url,headers=headers,files=file_data)        #发送请求
            print(r.json())     #打印响应结果
    
    if __name__ == '__main__':
        m=marketCreate()
        # 测试,输入手机号、文件地址、文件名称信息;
        m.uploadimages(mobile='639266558329',file_path='D:pyCharm_workcmkjProjectdatamarket.jpg',filename='123456.jpg')
    
    

    执行结果:

    C:Python38python.exe D:/pyCharm_work/cmkjProject/page/marketPage.py
    2020-01-02 13:48:09,580-D:pyCharm_workcmkjProjectutilsLogUtil.py-INFO-手机号639266558329的token值为:ba9b4f622fa4d6461523870c0d00df46
    {'code': 0, 'data': '/group1/M00/00/00/rBDKPF4NhE-ABIFmAAGhT9tm-NA158.jpg', 'success': True}
    
    Process finished with exit code 0

    转自:https://www.jianshu.com/p/231e4773f7f3
     
     
  • 相关阅读:
    poj 3320 Jessica's Reading Problem
    uva 120 C
    vim使用教程-转自
    2015 俄罗斯网络赛 D. Boulevard
    HTML转义字符大全
    介绍个好点的,JAVA技术群
    JAVA学习路线
    linux常用命令大全(转)好东西要分享
    Jqprint 轻量级页面打印插件
    hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/erinsuo/p/12915936.html
Copyright © 2011-2022 走看看