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

  • 相关阅读:
    Hall定理
    c#汉字转为拼音
    asp.net导出Excel 按照预定格式,以及解决导出乱码
    asp.net导出Excel
    SQL正常工作日上班安排
    SQL做日历
    T-SQL数组循环
    存储过程删除 用于更改,
    数组操作-去除重复和空白元素
    TreeView递归取值
  • 原文地址:https://www.cnblogs.com/gsxl/p/11964174.html
Copyright © 2011-2022 走看看