前言
通常在接口自动化中,经常会参数关联的问题,那么什么是参数关联?
参数关联就是上一个接口的返回值会被下一个接口当做参数运用,其中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两种框架介绍了在做接口测试时,如何通过全局变量的形式进行参数关联,其中也分别介绍了提取参数值时也采用了不同的方法,小伙伴们可以自己动手尝试下。
如果有更好的方法也可以进行留言,大家一起参考学习,当然至于怎么运用到公司项目中,这个就要看小伙伴们对参数关联和全局变量的掌握以及项目实际情况来看了,感谢您的阅读,希望本篇文章对您有所帮助。
作者:测试安静