• 0
  • 0
分享

  前言

  通常在接口自动化中,经常会参数关联的问题,那么什么是参数关联?

  参数关联就是上一个接口的返回值会被下一个接口当做参数运用,其中Python中可以实现参数关联的方法有很多种,今天小编给大家介绍下,如何通过Python来实现接口自动化中的参数关联。

  UnitTest

  虽然说目前Pytest框架比较流向,但是目前应该有绝大部分公司还是在使用UnitTest框架,那么小编先介绍下如何通过UnitTest来实现接口自动化的参数关联。

  方法一

  下面小编通过测试用例返回参数的形式进行实现参数关联。

# coding:utf-8
import requests
import unittest
class Test(unittest.TestCase):
    def test_01(self):
        '''查询天气接口测试用例'''
        url = 'http://apis.juhe.cn/simpleWeather/query'
        data = {
            'city': '上海',
            'key': 'xxxxxxxxxxxx'
        }
        r = requests.post(url, data=data).json()
        info = r['result']['realtime']['info']
        print(info)
        return info
    def test_02(self):
        '''查询字典测试用例'''
        a = self.test_01()
        url = 'http://v.juhe.cn/xhzd/query'
        data = {
            'word': a,
            'key': 'xxxxxxxxxxxx'
        ''
        }
        r = requests.post(url,data=data)
        result = r.json()
        print(result)
if __name__ == '__main__':
    unittest.main()

  通过使用上述方法返回的结果来进行供给下一个接口使用,不会因为执行顺序所影响,但是就是会把上面的的用例多执行一遍。可以通过下方执行结果看出,已经成功的实现了接口关联。

1-1.png

  方法二

  小编在这里使用一种全局变量的方法,我们先定义一个名称,然后用这个名称去接收我们即将返回的参数值,最后在下一条用例中进行使用。

# coding:utf-8
import requests
import unittest
class Test(unittest.TestCase):
    def test_01(self):
        '''查询天气接口测试用例'''
        global info
        url = 'http://apis.juhe.cn/simpleWeather/query'
        data = {
            'city': '上海',
            'key': 'xxxxxxxxxxx'
        }
        r = requests.post(url, data=data).json()
        info = r['result']['realtime']['info']
        print(info)
    def test_02(self):
        '''查询字典测试用例'''
        url = 'http://v.juhe.cn/xhzd/query'
        data = {
            'word': info,
            'key': 'xxxxxxxx'
        ''
        }
        r = requests.post(url,data=data)
        result = r.json()
        print(result)
if __name__ == '__main__':
    unittest.main()

  通过运行上述代码,发现已经成功将天气接口中的参数“晴”提出来,然后供下一个接口进行查询。

1-2.png

  Pytest

  介绍完UnitTest了,那么小编来介绍下如何通过Pytest来进行实现参数关联,其实原理都是一样的,只不过小编多介绍几种类似的方法。

# coding:utf-8
import requests
import re
def test_01():
    '''查询天气接口测试用例'''
    url = 'http://apis.juhe.cn/simpleWeather/query'
    data = {
        'city': '上海',
        'key': 'xxxxxxxx'
    }
    r = requests.post(url, data=data).json()
    # 通过正则获取想要的数据
    a = re.findall("'info': '(.*?)', 'wid': '00', ", str(r))
    info = globals()['info'] = a[0]
    print(info)
def test_02():
    '''查询字典测试用例'''
    url = 'http://v.juhe.cn/xhzd/query'
    data = {
        'word': globals()['info'],
        'key': 'xxxxxxx'
    ''
    }
    r = requests.post(url,data=data)
    result = r.json()
    print(result)

  上述测试用例中,小编使用了globals()函数用来获取全局作用域,结果通过字典的形式进行返回,而且小编通过获取下一个借口的参数值时,使用了正则表达式的提取,形成了多种方法均可实现我们的功能。

1-3.png

  总结

  小编分别通过Pytest和UnitTest两种框架介绍了在做接口测试时,如何通过全局变量的形式进行参数关联,其中也分别介绍了提取参数值时也采用了不同的方法,小伙伴们可以自己动手尝试下。

  如果有更好的方法也可以进行留言,大家一起参考学习,当然至于怎么运用到公司项目中,这个就要看小伙伴们对参数关联和全局变量的掌握以及项目实际情况来看了,感谢您的阅读,希望本篇文章对您有所帮助。


作者:测试安静    

来源:http://www.51testing.com/html/40/n-7797840.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • Dify 一词源自 Define + Modify,意指定义并持续改进你的 AI 应用。随着大型语言模型(LLM)不断涌现的各种能力,AI 应用的场景变得更加广阔。然而,对于大多数开发者而言,基于 GPT 等大型语言模型、Langchain 等技术框架开发 AI 应用仍然是一项门槛极高的任务。开发者必须花费大量时间学习各种晦涩的概念和技术研究,也无法进行 AI 应用的持续运营。是否有这样一个工具,开发者无需关注基础设施的底层原理,只需专注于将想象力转化为实际落地的 AI 应用并持续运营,可以将大型语言模型变成像云计算服务一样易于使用?基于这个问题,Dify.AI 诞生了。它是为你而做的(Do ...
            0 0 1134
            分享
          • 每年底除了对上一年的回顾以外,大家是不是都已经到了需要对下一年展望的时候?让我们回想一下过去的一年中,测试人员最烦的事情是什么呢?点点点比"点点点"更可怕的事情是什么呢?一直点点点不想一直点点点怎么办?上自动化!!!为什么公司之前没上自动化呢?老板一直没同意。。。以上的内心OS相信很多测试人员都经历过。反过来想一下,老板怎样会同意你的提议呢?一般的策略都是"动之以情,晓之以理"。动之以情这个改天展开说,就算是不混技术圈的老板,其实很多人对技术还是有一定的仰慕之情的。CC先生今天想聊聊的是晓之以理。金融学上一般会用ROI来判定一件事情是否值得做。Wikip...
            1 3 1703
            分享
          •   据 WindowsCentral 报道,微软 Xbox 从 11 月 17 日起正式实施一项新的政策,将禁止用户使用未经官方授权的配件,如手柄、耳机、转换器等。  一些使用未授权配件的用户已经在他们的 Xbox 上收到了错误信息 0x82d60002,提示他们“使用未授权的配件会影响您的游戏体验,该配件将在 2023 年 11 月 12 日被屏蔽。”并引导他们去 Xbox 官网查看授权的配件。  还有用户反映,他们买的“廉价版”第三方手柄已经无法在 Xbox 主机上使用。  一些生产第三方游戏配件的品牌,如 Brook Gaming,已经感受到了这一变化的压力。他们在 X 上发布了声明,表...
            0 0 468
            分享
          •   据报道,针对美国政府起诉微软690亿美元收购动视暴雪交易,法官将于1月3日举行首次审前听证会。  去年1月,微软宣布将以每股95美元的现金,收购游戏开发和互动娱乐内容发行商动视暴雪,交易总金额约为690亿美元。交易完成后,微软将成为世界上营收第三高的游戏公司,仅次于腾讯和索尼。  上个月,负责反垄断执法的美国联邦贸易委员会(FTC)要求法官阻止这笔交易,理由是交易将使微软的Xbox游戏平台获得动视暴的独家内容,从而导致竞争对手任天堂和索尼的游戏平台被冷落。  而微软则反驳称,这笔交易将使游戏玩家和其他游戏公司从中受益。同时,微软还承诺,至少在10年内继续向索尼等竞争对手提供《使命召唤》游戏...
            0 0 665
            分享
          • Linux系统的稳定、安全、免费、开源等特点,使其在软件行业中应用越来越广,越来越普遍。测试岗位的招聘要求中,也都会涉及要熟悉Linux命令,Linux也逐渐成为测试人员必不获取的一项技能。工作中用到的Linux远程管理工具有Xshell/PuTTY/SecureCRT等,使用最多的还是Xshell。基于Xshell,整理测试工作中常用的Linux命令,由于命令区分大小写,使用过程中一定注意。一、系统相关shutdown -h now或init 0:关闭系统shutdow -r now或reboot:重启系统logout:注销Ctrl+C:退出命令行date:显示系统日期ifconfig:查看...
            2 5 4242
            分享
      • 51testing软件测试圈微信