2种方法,教你使用Python实现接口自动化中的参数关联

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


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

参数关联就是上一个接口的返回值会被下一个接口当做参数运用,其中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()

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

方法二

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

# 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()

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

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()函数用来获取全局作用域,结果通过字典的形式进行返回,而且小编通过获取下一个借口的参数值时,使用了正则表达式的提取,形成了多种方法均可实现我们的功能。

总结

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

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

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​

​​

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值