python笔记39-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
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
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
python笔记39-unittest框架如何将上个接口的返回结果给下个接口适用(面试必问)的更多相关文章
- postman 上一个接口的返回值作为下一个接口的入参
在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是: 1.获取上一个接口的返回值 2.将返回值设置成环境变量或者全局变量 3.设置下 ...
- Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)
前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...
- jmeter将上一个接口的返回值作为下一个接口的请求参数
接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...
- jmeter将上一个接口返回值作为下一个接口的请求参数
在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...
- Python的Django REST框架中的序列化及请求和返回
Python的Django REST框架中的序列化及请求和返回 序列化Serialization 1. 设置一个新的环境 在我们开始之前, 我们首先使用virtualenv要创建一个新的虚拟环境,以使 ...
- 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
[面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...
- 互联网公司面试必问的mysql题目(上)
又到了招聘的旺季,被要求准备些社招.校招的题库.(如果你是应届生,尤其是东北的某大学,绝对福利哦) 介绍:MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品.虽然单机性能比不上or ...
- 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)
现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...
- python学习笔记之——unittest框架
unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...
随机推荐
- 破解FTP登录密码的几种方法
工具 Hydra X-Hydra Medusa Ncrack Patator Metasploit Hydra hydra -L /root/Desktop/user.txt -P /root/Des ...
- linux 高级
linux命令: top 查看整机的性能: ----(看内存(mem)和cpu) 1:查看cpu的cpu的核数按1连续: 2:id=idle(空闲率),值越大越好, 3:load av ...
- fineui grid自定义选项框 带全选
为什么要写这功能? 1 当你用可编辑列的时候,是不能用选择框的,这是ext设定的. 2 如果有不允许选择行,默认的选择框是没有这个功能的. 参考: 遍历asp.net控件 http://fineu ...
- 有些CCS工程中为什么会有两个CMD文件?
这里的CCS就是TI公司的Code Composer Studio 集成开发环境,所以这篇随笔也就是关于TI公司DSP开发过程中对于刚入门同学的一个常见问题了. 那作为一个初学者,对于CCS工程中的c ...
- Go基础编程实践(五)—— 错误和日志
自定义错误类型 Go中可以使用errors.New()创建错误信息,也可以通过创建自定义错误类型来满足需求.error是一个接口类型,所有实现该接口的类型都可以当作一个错误类型. // error类型 ...
- vuex的Store简单使用过程
介绍 Store的代码结构一般由State.Getters.Mutation.Actions这四种组成,也可以理解Store是一个容器,Store里面的状态与单纯的全局变量是不一样的,无法直接改变st ...
- C#高效编程
一. 使用readonly而不是const const是编译时常量,readonly是运行时常量.如果引用了一个库中的const常量,则在更新了程序集,但应用程序没有重新编译时,运行结果会出错 如程序 ...
- C# vb .net实现淡出效果特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的淡出效果特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- 2019 昆仑万维java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.昆仑万维等公司offer,岗位是Java后端开发,因为发展原因最终选择去了昆仑万维,入职一年时间了,也成为了面 ...
- 安装VMware14可能出现的问题
未能提取文件 安装程序未能提取安装vmware workstation所必须的文件 在没有关闭这个弹框的前提下,Win+R输入%temp%,找到以~setup结尾的文件夹,双击下面的临时文件VMwar ...