前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python笔记39-unittest框架如何将上个接口的返回结果给下个接口适用(面试必问)

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

作者头像
上海-悠悠
发布2019-07-30 18:57:18
1.4K0
发布2019-07-30 18:57:18
举报

前言

面试必问:如何将上个接口的返回结果,作为下个接口的请求入参?使用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 requestsclass 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.000sOK
用例b引用用例a的返回值:aaaaaa

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

globals()优化

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

import unittest
import requestsclass 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.001sOK
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • globals()函数
  • unittest框架用例
  • globals()优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档