unittest框架如何将上个接口的返回结果给下个接口适用

问题:如何将上个接口的返回结果,作为下个接口的请求入参?使用unittest框架写用例时,如何将用例a的结果,给用例b使用。
unittest框架的每个用例都是独立的,测试数据共享的话,需设置全局变量,可以使用globals()函数来解决

globals()函数

globals() 函数会以字典类型返回当前位置的全部全局变量。

print(globals())

#用法
globals()['a'] = '用例a的返回结果'

#用例b引用
b = globals()['a']
print(b)

unittest框架用例

使globals()函数实现用例之间的数据共享,比如用例1返回的结果写到globals()["a"]中,用例2调用globals()["a"]的值
 

import unittest

# print(globals())
#
# #用法
# globals()['a'] = '用例a的返回结果'
#
# #用例b引用
# b = globals()['a']
# print(b)

class TestA(unittest.TestCase):

    #
    def setUp(self):
        self.a = 1
        self.b = 2

    def test_add(self):
        '''用例1'''
        c = self.a + self.b#用例1返回的值
        globals()['a'] = c#将用例1的返回值保存到全局变量中
        print(globals()['a'])

        self.assertEqual(c, 3)

    def test_add2(self):
        '''用例2'''
        d = globals()['a']#引用用例1的返回值
        e = d + 1
        self.assertEqual(e, 4)


if __name__ == '__main__':
    unittest.main()

运行结果:

G:\python3.5.0\python.exe "G:\pycharm\PyCharm Community Edition 2017.1.1\helpers\pycharm\_jb_unittest_runner.py" --path D:/学习/软件测试/python/python_script/tests/globals_test.py
Testing started at 20:17 ...
 Launching unittests with arguments python -m unittest discover -s D:/学习/软件测试/python/python_script/tests -p globals_test.py -t D:\学习\软件测试\python\python_script\tests in D:\学习\软件测试\python\python_script\tests
    
 
 
 
3
  
 
 
  

Ran 2 tests in 0.002s

OK

Process finished with exit code 0

但是这样会有个隐患:用例b是用来用例a的,所以用例有先后顺序,用例a先执行,用例b后执行

globals()优化

当用例3的的请求参数依赖用例1和用例2时,使用太多的globals()会不太好关联,可以把globals()函数放到setUp前置里面,如下:
用例3需要依赖1的返回值result_1和用例2的返回值result_2

import unittest

# print(globals())
#
# #用法
# globals()['a'] = '用例a的返回结果'
#
# #用例b引用
# b = globals()['a']
# print(b)

class TestA(unittest.TestCase):

    #
    def setUp(self):
        self.a = 1
        self.b = 2
        self.g = globals()

    def test_add(self):
        '''用例1'''
        c = self.a + self.a#用例1返回的值
        self.g['a'] = c#将用例1的返回值保存到全局变量中
        print(self.g['a'])

        self.assertEqual(c, 2)

    def test_add2(self):
        '''用例2'''
        result_1 = self.b + self.b  # 用例2返回的值
        self.g['b'] = result_1  # 将用例2的返回值保存到全局变量中
        print(self.g['b'])

        self.assertEqual(result_1, 4)

    def test_add3(self):
        '''用例3'''
        result_2 = self.g['a'] + self.g['b'] #引用用例1和用例2的返回结果
        self.assertEqual(result_2, 6)
        print(self.g['a'])
        print(self.g['b'])

if __name__ == '__main__':
    unittest.main()

运行结果:

G:\python3.5.0\python.exe "G:\pycharm\PyCharm Community Edition 2017.1.1\helpers\pycharm\_jb_unittest_runner.py" --path D:/学习/软件测试/python/python_script/tests/globals_test2.py
Testing started at 20:20 ...
 Launching unittests with arguments python -m unittest discover -s D:/学习/软件测试/python/python_script/tests -p globals_test2.py -t D:\学习\软件测试\python\python_script\tests in D:\学习\软件测试\python\python_script\tests
    
 
 
 
2
  
 
 
4
  
 
 
2
4
  

Ran 3 tests in 0.002s

OK

Process finished with exit code 0

参考博客:https://www.cnblogs.com/yoyoketang/p/11241473.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基于unittest接口测试框架的示例代码: ```python import unittest import requests class TestAPI(unittest.TestCase): def setUp(self): self.base_url = 'http://api.example.com/' def test_api_1(self): url = self.base_url + 'endpoint1' data = {'param1': 'value1', 'param2': 'value2'} response = requests.post(url, data=data) self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['result'], 'success') def test_api_2(self): url = self.base_url + 'endpoint2' params = {'param1': 'value1', 'param2': 'value2'} headers = {'Authorization': 'Bearer token'} response = requests.get(url, params=params, headers=headers) self.assertEqual(response.status_code, 200) self.assertIn('data', response.json()) def tearDown(self): pass if __name__ == '__main__': unittest.main() ``` 在这个示例,我们首先导入了unittest和requests库。然后定义了一个TestAPI类,继承了unittest.TestCase。在setUp方法,我们定义了接口的基础URL。接下来,我们定义了两个测试用例test_api_1和test_api_2。在每个测试用例,我们定义了接口的URL、参数、请求头,并使用requests库发送请求,然后使用断言来验证返回结果是否符合预期。最后,在tearDown方法,我们可以清理测试环境。 运行这个测试框架,可以使用命令行运行: ``` python test_api.py ``` 这个测试框架可以自动运行所有的测试用例,并输出结果。如果有测试用例失败,会在控制台输出详细的错误信息。这个测试框架可以很方便地扩展,添加更多的测试用例和断言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值