zoukankan      html  css  js  c++  java
  • Python接口自动化测试-下载文件

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author : shenqiang
    
    '''
    注意:定义类的时候,内部方法之间的互调
    步骤:
    1.按照流的方式进行下载
    2.存储在某个文件中
    '''
    import requests
    import shutil
    import time
    
    class DownLoadFile():
    
        def readyDatas(self):
            '''
            准备数据:固定参数
            :param datas 接口参数
            :param downLoadPath 下载文件地址
            '''
            times = time.strftime("%Y-%m_%d %H_%M_%S", time.localtime(time.time()))
    
            self.datas = {"username":"","password":""}
            self.downLoadPath = '/Users/apple/Documents/TestCode/tryApiTest/requestsPractice/Files{0}.xlsx'.format(times)
    
            return self.datas,self.downLoadPath
    
        def getHearders(self):
            '''
            :return: Hearders 接口报文的头信息
            '''
            self.Hearders = {'Content-Type':'application/json;charset=UTF-8','Referer':'http://lyfadmin.edu.laiyifen.com/plugins/platform-include/views/login.html',
                   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'}
            return  self.Hearders
    
        def setSession(self):
            '''
            :return: SessionId 返回网址的Session信息
            '''
            self.readyDatas()
            self.getHearders()
            self.sessionId = requests.Session()
            self.sessionId.post(url='http://lyfadmin.edu.laiyifen.com/ouser-web/mobileLogin/login.do',
                                      json = self.datas,
                                      headers = self.Hearders)
            return self.sessionId
    
        def downFiles(self):
            '''
            下载文件
            '''
            self.setSession()
            loginStatus = self.sessionId.get('http://lyfadmin.edu.laiyifen.com/promotion-static/template/coupon.xlsx',
                                             headers = self.Hearders,
                                             stream = True )
            if loginStatus.status_code == 200:
                with open(self.downLoadPath,'wb') as files:
                    '''Function1'''
                    # for chunk in loginStatus.iter_content(chunk_size=1024):
                    #     files.write(chunk)
                    '''function2'''
                    loginStatus.raw.decode_content = True
                    shutil.copyfileobj(loginStatus.raw, files)
                print('file download succeed')
            else:
                print('file download failed')
    
    
    if __name__ == '__main__':
        DownLoadFile = DownLoadFile()
        DownLoadFile.downFiles()
  • 相关阅读:
    SQL随机生成6位数字
    安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
    Windows 7 完美安装 Visual C++ 6.0
    解决js中window.location.href不工作的问题
    DataList中动态显示DIV
    Gridview、DataList、Repeater获取行索引号
    Java多jdk安装
    【CentOS】samba服务器安装与配置
    【CentOS】IBM X3650M4 IMM远程管理【转载】
    【Java】Eclipse导出jar包与javadoc
  • 原文地址:https://www.cnblogs.com/shen-qiang/p/11942149.html
Copyright © 2011-2022 走看看