美文网首页
Postman-Python的一键导入导出文件

Postman-Python的一键导入导出文件

作者: 莫依痕 | 来源:发表于2019-03-25 20:28 被阅读0次

    背景:在做一个教育项目,开通园所需要用到user_id值进行权限分配,但是第三方只提供了账号和密码。虽然我们用账号和密码在教育后台登录后,可以在F12控制台中获取到user_id值,如果只是单个账号,直接获取一下并不麻烦,但是第三方提供了20个账号,如果一个一个登录去获取,比较费时,除了测试环境开通园所需要这样操作,预生产和生产环境都会遇到这个问题,傻瓜式的一个一个登录,明显不是可取的。于是就有了下面的尝试。

    一、简单版本:
    1、postman实现单个user_id值获取
    【post】https://xxx.101.com/v0.93/tokens
    请求体:

    {
        "login_name":"mytest1@O1135009552",
        "password":"80fba977d063a6f7262a8a9c95f61140"
    }
    

    2、直接看请求体返回的user_id值即可

    获取单个suer_id值.png
    二、升级版本:
    1、postman结合*.txt作为输入值,实现多个user_id输出值获取
    【post】https://xxx.101.com/v0.93/tokens
    Pre-request Script
    postman.setEnvironmentVariable("username1",data["username"]); //username是txt第一行命名的内容(表头),第二行开始输入具体用户名
    
    Pre-request Script设置.png

    2、txt内容:


    txt内容.png

    3、Body请求体:

    {
        "login_name":"{{username1}}",  //请求体用变量替代,这个值与Pre-request Script里key一致
        "password":"80fba977d063a6f7262a8a9c95f61140"
    }
    
    body设置.png
    4、Tests获取响应中的user_id值
    Tests设置.png
    5、打开Postman Console,获取多个结果值(运行前打开才能获取到,运行后再打开需要重新执行)
    Postman Console.png
    6、打开Runner,选择需要跑的接口所在文件夹(只能跑文件夹,不能跑某个单独的接口),如果有设置全局或者局部环境变量,Environment需要选择具体的环境名称,选择设置好的txt文件,Data File Type选择text/csv,可以点击preview查看上传文件是否正确,Iterations是迭代次数,根据自己需要,选择要执行的次数(这个接口一次返回一个user_id,需要获取20个用户的user_id,这边需要执行20次),点击Run获取user_id值(执行前确保postman console打开)
    Runner设置.png
    7、postman控制台显示结果:
    Postman Console结果.png
    8、通过过滤条件,把user_id值筛选后拷贝出来就可以了
    过滤postman控制台user_id值.png
    9、数据处理技巧:拷贝处理后会带有时间,我们可以在excel里通过奇偶数来筛选
    excel未处理.png
    10、获取最终数据
    最终获取到多个user_id值.png
    终极版本:
    python实现一键自动化,代码如下:
    输入文件username.txt
    mytest1@O1135009552
    mytest2@O1135003864
    mytest3@O1135008001
    123@O1135003567
    mytest4@O1135006125
    mytest5@O1135000707
    mytest6@O1135006106
    mytest7@O1135010410
    mytest8@O1135006131
    mytest9@O1135004728
    mytest10@O1135004933
    mytest11@O1135002882
    mytest12@O1135005933
    mytest13@O1135000659
    mytest14@O1135003944
    mytest15@O1135008007
    mytest16@O1135010039
    mytest17@O1135007717
    mytest18@O1135002053
    mytest19@O1135003331
    

    运行入口run.py

    # coding=utf-8
    import sys
    from testcase import *
    
    __author__ = 'ND'
    
    UserTest().get_userid()
    

    具体功能实现代码testcase.py

    # coding=utf-8
    import sys
    
    import requests
    import random
    __author__ = 'ND'
    
    reload(sys)
    sys.setdefaultencoding('utf-8')
    sys.path.insert(0,'..')
    
    class UserTest():
        def __init__(self):
            self.url = "https://xxx/xx/tokens"
            self.header = {'Content-Type':'application/json'}
    
        def resultConfirm(self,status,url,error_info):
            if status in (200,201,204):
                print ('用例执行成功:status= ' + str(status)+ ' URL= ' + url)
            else:
                print ('用例执行失败:status=' + str(status) + ' URL= ' + url + '\n' + error_info)
    
        def get_file(self,filepath):
            output = []
            fileContent = open(filepath,'r')
            try:
                lines = fileContent.readlines()
                for line in lines:
                    output.append(str(line.replace('\n','')))
            finally:
                fileContent.close()
            return output
    
        def get_userid(self):
            inpath = "username.txt"
            usernames = self.get_file(inpath)
            outpath = "C:\Users\ND\Desktop\userid.txt"
            outfile = open(outpath,'w+')
            outfile.write("账号,user_id\n")
            for i in range(len(usernames)):
                self.body ={
                    "login_name":usernames[i],
                    "password":"80fba977d063a6f7262a8a9c95f61140"
                    }
                res = requests.post(self.url,headers=self.header,json=self.body)
                userid = res.json()['user_id']
                outfile.writelines(usernames[i]+','+str(userid)+'\n')
                #结果校验
                self.resultConfirm(res.status_code,self.url,res.text)
            #关闭文件
            outfile.close()
    

    运行后最后的结果

    2133174041
    2133200833
    2133164376
    2132778031
    2133158467
    2133171908
    2133183907
    2133174669
    2133171297
    2133174716
    2133182865
    2133139952
    2133202581
    2133155904
    2133195766
    2133187417
    2133176166
    2133181450
    2133200798
    2133138696
    

    四、进一步简化,用bat一键运行python文件

    @echo off
    e:
    cd E:\svnProject\testUserid\main
    start run.py
    

    相关文章

      网友评论

          本文标题:Postman-Python的一键导入导出文件

          本文链接:https://www.haomeiwen.com/subject/gptivqtx.html