ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python笔记39-unittest框架如何将上个接口的返回结果给下个接口使用(面试必问)

2021-06-03 10:06:04  阅读:214  来源: 互联网

标签:39 必问 self 接口 用例 globals result 返回值 unittest


前言

面试必问:如何将上个接口的返回结果,作为下个接口的请求入参?使用unittest框架写用例时,如何将用例a的结果,给用例b使用。
unittest框架的每个用例都是独立的,测试数据共享的话,需设置全局变量,可以使用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
# 上海-悠悠 QQ交流群:717225969


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.exe D:/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

import unittest
import requests
# 上海-悠悠 QQ交流群:717225969


class TestA(unittest.TestCase):
    '''上海悠悠:QQ群:779429633'''
    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

python交流QQ群:779429633

标签:39,必问,self,接口,用例,globals,result,返回值,unittest
来源: https://blog.51cto.com/u_15249893/2848847

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有