API自动化测试

接口测试-数据的传递

2020-07-08  本文已影响0人  Jeff_9021

关键词:接口测试         数据的传递

多个接口一起测试,数据涉及多接口之间传递时,对数据的处理有两种方法:

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文件读取数据

参考:

https://www.cnblogs.com/yoyoketang/p/11241473.html

jmeter实战实现数据传递

上一篇 下一篇

猜你喜欢

热点阅读