Python接口测试文件上传实例解析

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

首先通过抓包分析上传文件接口的请求参数:

下面是上传文件接口脚本。把目标文件以open打开,然后存储到变量file。并且使用files参数指明请求的参数名称、上传文件的类型、以及上传文件的路径。

 

这里注意:content-type参数,如果我们通过form-data的方式上传文件,我们发送post请求的时候,headers这个参数中一定不能要包括这个值,,requests库会帮忙添加这个元素,加了可能会报错。

代码实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

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_work\cmkjProject\data\market.jpg',filename='123456.jpg')

执行结果:

1

2

3

4

5

C:\Python38\python.exe D:/pyCharm_work/cmkjProject/page/marketPage.py

2020-01-02 13:48:09,580-D:\pyCharm_work\cmkjProject\utils\LogUtil.py-INFO-手机号639266558329的token值为:ba9b4f622fa4d6461523870c0d00df46

{'code': 0, 'data': '/group1/M00/00/00/rBDKPF4NhE-ABIFmAAGhT9tm-NA158.jpg', 'success': True}

Process finished with exit code 0

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值