zoukankan      html  css  js  c++  java
  • python接口自动化6-参数化关联

    前言

    接口中我们经常需要用到参数关联,比如,登录token,需要传给后面的参数使用,又比如要查看某个商品需要将商品的id传入下一个接口使用。

    等等,所以我们必要学会 re 正则获取,或者返回json获取,个人认为 re 挺实用的。

    一、禅道-操作关闭需求为实例

    1、手工操作抓包,可以看到下图一个 uid 每次操作关闭需求都会不一样,即为动态参数。那我们怎样知道这个 uid 在哪里获取呢?

    2、查看上一个接口中,不难发现其 uid 就在上一个接口中。

     

     3、既然知道了 uid 在上一个接口中,那么我们就可以通过 re 提取。

    步骤:

    ①发送第一个接口,re 提取出 uid。

    ②下一个接口,在传参的时候,格式化输出管理该参数,发送请求即可,如下:

    import re
    import requests
    s = requests.session()
    
    # 禅道登录
    url = 'http://127.0.0.1:81/zentao/user-login-L3plbnRhby8=.html'
    par = 'account=admin&password=e10adc3949ba59abbe56e057f20f883e&keepLogin%5B%5D=on&referer=%2Fzentao%2F'
    r = s.post(url, params=par)
    
    # 查需求的 kuid 接口
    r2 = s.get('http://127.0.0.1:81/zentao/story-close-2.html?onlybody=yes')
    b = r2.content.decode('utf-8')
    kuid = re.findall('kuid = "(.+?)"', b)     # 注意编码格式,否则乱码
    print('获取的kuid为:%s' % kuid[0])        # kuid[0]则是提供下一个接口关联的参数
    
    # 关闭需求,%s 格式化输出,关联上面接口获取的kuid
    url = 'http://127.0.0.1:81/zentao/story-close-4.html?onlybody=yes'
    par1 = 'closedReason=done&duplicateStory=&childStories=&comment=&uid=%s' % kuid[0]
    print(par1)
    r3 = s.post(url, params=par1)

     二、re 常用三种方法

    1、取中间:(.+?)

    import re
    st = "我是一只小小鸟,怎么飞也飞不高?"
    
    # 取中间“小鸟”,取出来的是list。
    s = re.findall('小(.+?),', st)
    print(s[0])

    2、取尾:(.+?)$

    import re
    st = "我是一只小小鸟,怎么飞也飞不高?"
    
    # 取尾,逗号后面的全部。
    s = re.findall(',(.+?)$', st)
    print(s[0])

    3、取前:^(.+?)

    import re
    st = "我是一只小小鸟,怎么飞也飞不高?"
    
    # 取前,逗号前面的全部。
    s = re.findall('^(.+?),', st)
    print(s[0])

     你学会了吗?欢迎来QQ交流群:482713805

  • 相关阅读:
    2020,最新Model的设计-APP重构之路
    2020,最新APP重构:网络请求框架
    APP重构之路:引入单元测试
    接口测试中postman环境和用例集
    测试行业是该选择手动测试还是自动化测试?
    2020,必备自动生成测试脚本方案
    2020,必备自动化测试 之 “好用例、坏用例”
    2020,你需掌握go 单元测试进阶篇
    前端测试框架Jest——语法篇
    2020,测试生涯该如何转型升级?
  • 原文地址:https://www.cnblogs.com/gsxl/p/11964174.html
Copyright © 2011-2022 走看看