前言

面试必问:如何将上个接口的返回结果,作为下个接口的请求入参?使用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框架如何将上个接口的返回结果给下个接口适用(面试必问)的更多相关文章

  1. postman 上一个接口的返回值作为下一个接口的入参

    在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是: 1.获取上一个接口的返回值 2.将返回值设置成环境变量或者全局变量 3.设置下 ...

  2. Requests方法 -- 参数关联与JSESSION(上一个接口的返回数据作为下一个接口的请求参数)

    前言 参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅 ...

  3. jmeter将上一个接口的返回值作为下一个接口的请求参数

    接口响应结果,通常为HTML.Json格式的数据,对于HTML的响应结果的提取,可以通过正则表达式,XPath提取. 对于Json格式响应结果,可以通过正则表达式.JSON Extractor插件.B ...

  4. jmeter将上一个接口返回值作为下一个接口的请求参数

    在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...

  5. Python的Django REST框架中的序列化及请求和返回

    Python的Django REST框架中的序列化及请求和返回 序列化Serialization 1. 设置一个新的环境 在我们开始之前, 我们首先使用virtualenv要创建一个新的虚拟环境,以使 ...

  6. 【面试必问】python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别

    [面试必问]python实例方法.类方法@classmethod.静态方法@staticmethod和属性方法@property区别 1.#类方法@classmethod,只能访问类变量,不能访问实例 ...

  7. 互联网公司面试必问的mysql题目(上)

    又到了招聘的旺季,被要求准备些社招.校招的题库.(如果你是应届生,尤其是东北的某大学,绝对福利哦) 介绍:MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品.虽然单机性能比不上or ...

  8. 高级测试工程师面试必问面试基础整理——python基础(一)(首发公众号:子安之路)

    现在深圳市场行情,高级测试工程师因为都需要对编程语言有较高的要求,但是大部分又没有python笔试机试题,所以面试必问python基础,这里我整理一下python基本概念,陆续收集到面试中python ...

  9. python学习笔记之——unittest框架

    unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...

随机推荐

  1. Centos7安装部署MongoDB教程

    安装方式: RPM包安装 安装步骤: 一.下载RPM包 下图是需要注意的事项.其一选择MongoDB的社区版本,默认是企业版本.其二,选中版本后,在下方会出现下载地址,直接复制下载即可  二.安装并查 ...

  2. 【NPDP笔记】第四章 文化组织与团队

    此为临时链接,仅用于预览,将在短期内失效.关闭 [NPDP笔记]第四章 文化组织与团队 小康 小康哥的产品之路 9月6日 4.1 文化和氛围对创新的重要性 文化:信念,价值观,假设,与期望 氛围:直接 ...

  3. 破解FTP登录密码的几种方法

    工具 Hydra X-Hydra Medusa Ncrack Patator Metasploit Hydra hydra -L /root/Desktop/user.txt -P /root/Des ...

  4. [Linux]虚拟机下安装ubuntu后root密码设置

    转自:https://blog.csdn.net/zcyhappy1314/article/details/17448223 问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会 ...

  5. spring boot 指定启动端口

    spring boot 默认端口为8080 1.修改为指定端口 (1)修改配置文件 src/main/resources/application.properties server.port= (2) ...

  6. 【转载】嵌入式 Linux 移植 Dropbear SSH server

    0. 背景  OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中.  Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种 ...

  7. Mac多SSH Key配置

    多SSH key配置 工作的时候碰到SSH配置的问题,就是公司用的是gittea的仓库,而本人的github平常也要使用,这个时候就需要配置不同的SSH key了.将同一个公钥分配配置给github和 ...

  8. tp3.2 如何比较两个字段

    使用exp if ($_GET['owe_property'] || $_GET['owe_property'] !== NULL) { if ((int)$_GET['owe_property'] ...

  9. C++ 智能指针 shared_ptr 分析

    引文: C++对指针的管理提供了两种解决问题的思路: 1.不允许多个对象管理一个指针 2.允许多个对象管理一个指针,但仅当管理这个指针的最后一个对象析构时才调用delete ps:这两种思路的共同点就 ...

  10. SQLite数据库简介和使用

    一.Sqlite简介: SQLite (http://www.sqlite.org/),是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中 ...