关键词:接口测试 数据的传递
多个接口一起测试,数据涉及多接口之间传递时,对数据的处理有两种方法:
1)将前一个接口返回数据设置为全局变量globals()函数
函数介绍:globals()函数以字典类型返回当前位置的全部全局变量
函数用法:globals()函数实现用例之间的数据共享
globals()函数
globals() 函数会以字典类型返回当前位置的全部全局变量。
print(globals())
# 用法
globals()["a"] ="用例a的返回结果"
# 用例b引用
b = globals()["a"]
print(b)
unittest框架用例
使globals()函数实现用例之间的数据共享,比如用例a返回的结果写到globals()["a"]中,用例b调用globals()["a"]的值
import unittest
import requests
class TestA(unittest.TestCase):
def setUp(self):
self.s = requests.session()
def test_a(self):
'''用例a'''
result_a ="aaaaaa"
# 用例a的返回值
# 返回值先给全部办理,存到字典对应key
globals()["a"] = result_a
self.assertEqual(result_a,"aaaaaa")
def test_b(self):
'''用例b'''
b = globals()["a"]
# 引用用例a的返回值
print("用例b引用用例a的返回值:%s"%b)
result_b = b+"111"
self.assertEqual(result_b,"aaaaaa111")
if__name__ =='__main__':
unittest.main()
运行结果:
E:\python36\python.exeD:/jiekou9/debug/yilai.py..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
用例b引用用例a的返回值:aaaaaa
但是这样会有个隐患:用例b是用来用例a的,所以用例有先后顺序,用例a先执行,用例b后执行
globals()优化
当用例c的的请求参数依赖用例a和用例b时,使用太多的globals()会不太好关联,可以把globals()函数放到setUp前置里面,如下:
用例c需要依赖a的返回值result_a和用例b的返回值result_b
def setUp(self):
self.s = requests.session()
self.g = globals()
def test_a(self):
'''用例a'''
result_a ="aaaaaa"
# 用例a的返回值
# 返回值先给全部办理,存到字典对应key
self.g["a"] = result_a
self.assertEqual(result_a,"aaaaaa")
def test_b(self):
'''用例b'''
b = self.g["a"]
# 引用用例a的返回值
print("用例b引用用例a的返回值:%s"%b)
result_b = b+"111"
self.g["b"] = result_b
self.assertEqual(result_b,"aaaaaa111")
def test_c(self):
'''用例c'''
print("用例c依赖用例a和用例b")
c_a = self.g["a"]
c_b = self.g["b"]
print("用例c的请求入参:%s"% c_a)
print("用例c的请求入参:%s"% c_b)
if__name__ =='__main__':
unittest.main()
运行结果
.用例b引用用例a的返回值:aaaaaa
.用例c依赖用例a和用例b
用例c的请求入参:aaaaaa
用例c的请求入参:aaaaaa111
.
----------------------------------------------------------------------
Ran 3 tests in 5.001s
OK
2)利用configparser函数
a)configparser.ConfigParser().set(file_name, section_name, option, value)函数,将上一个接口的返回数据写入.ini文件中
b)configparser.ConfigParser().get(file_name, section_name, option)函数,从.ini文件读取数据
参考:
网友评论