MOOC(7)- case依赖、读取json配置文件进行多个接口请求-解决用例间依赖问题(17)
最最重要,处理case依赖、字段依赖
# -*- coding: utf-8 -*-
# @Time : 2020/2/13 21:14
# @File : data_depend_17.py
# @Author: Hero Liu
from day_20200208_mooc.tools.do_excel_openpyxl_14 import DoExcel
from day_20200208_mooc.base.interface_request_class_5 import RunMain
from day_20200208_mooc.tools.do_mock_18 import mock_test
class DependData:
"""
case_id: 依赖case的id
present_case_id: 当前case的id
file: case数据来源file
sheet:case数据来源sheet
在需要完成“获取依赖case数据、执行依赖测试、返回依赖字段值、根据依赖字段对当前case发起请求”
这一整套流程时,直接调用 run_present_case, 因为这个方法中已经包含了其他方法的调用
"""
def __init__(self, case_id, present_case_id, file, sheet):
self.case_id = case_id
self.present_case_id = present_case_id
self.file = file
self.sheet = sheet
# 根据依赖case_id去获取依赖的case数据
def get_depend_case(self):
depend_case = DoExcel().get_data(self.file, self.sheet)[self.case_id-1]
return depend_case
# 根据依赖的case数据,执行依赖测试
def run_depend_case(self):
header = None
url = self.get_depend_case()["url"]
method = self.get_depend_case()["method"]
data = self.get_depend_case()["data"]
header = self.get_depend_case()["header"]
res = mock_test(RunMain().run_main, url, method, data, data, header)
res["out_trade_no"] = "我是自定义的字段返回值"
print("数据加成功了吗?", res)
return res
# 获取当前用例数据,即需要依赖的用例
# present_case_id是当前的caseid,是需要用到依赖case的用例id
# present_case_id-1是因为第n条用例在列表中的索引是n-1
def get_present_case(self):
present_case = DoExcel().get_data(self.file, self.sheet)[self.present_case_id-1]
return present_case
# 提取当前case的依赖数据,去依赖case里匹配结果, 得到值
# 匹配时需要知道目标值的位置
# 这里假设要匹配的值就是返回的json数据中第一个层级的某个键值,
# 如果json数据有多层,根据实际情况修改
# 注意依赖数据和依赖字段的关系
# 依赖数据和依赖case的响应结果的字段是一样的
# 依赖字段是当前case的请求数据中的一个字段
# 依赖数据和依赖字段值是一样的,但是意义不同
def get_depend_case_key(self):
# 获取当前case的依赖数据,case_depend_data列即依赖数据, 即depend_key
depend_key = self.get_present_case()["case_depend_data"]
# 根据依赖key去依赖case匹配值,存到key_data
key_data = self.run_depend_case()[depend_key]
print("key data:", key_data)
# 获取当前case的依赖字段key
present_key = self.get_present_case()["depend_data_belong_new_key"]
print("present_key:", present_key)
# 依赖字段只是作为当前case请求数据中的一个字段,把这个字段更新到当前case的data数据中去
# 通过添加键值的方式来更新
print("数据类型:", type(self.get_present_case()["data"]))
dic_ = self.get_present_case()["data"]
dic_[present_key] = key_data
print("请求字段添加成功了吗", dic_)
return dic_
# 根据依赖case字段的值对当前case发起请求
def run_present_case(self):
url = self.get_present_case()["url"]
method = self.get_present_case()["method"]
data = self.get_depend_case_key()
header = self.get_depend_case()["header"]
res = mock_test(RunMain().run_main, url, method, data, data, header)
print("'函数里的响应数据", res)
return res
MOOC(7)- case依赖、读取json配置文件进行多个接口请求-解决用例间依赖问题(17)的更多相关文章
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)
把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-openpyxl读取excel(14)
从excel中读取数据 # -*- coding: utf-8 -*- # @Time : 2020/2/12 17:23 # @File : do_excel_openpyxl_14.py # @A ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-执行测试用例(16)
执行测试用例 # -*- coding: utf-8 -*- # @Time : 2020/2/12 22:56 # @File : run_test_16.py # @Author: Hero Li ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-完整的测试类,含依赖测试(15)
ddt.依赖测试.断言.测试数据写回 # -*- coding: utf-8 -*- # @Time : 2020/2/12 23:07 # @File : test_class_15.py # @A ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-发送测试报告邮件(19)
给多个人发邮件时,可以传入邮箱列表 把多个收件人用分号隔开 # -*- coding: utf-8 -*-# @Time : 2020/2/15 17:02# @File : send_mail_19 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)
这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-xlrd操作excel(11)
xlrd操作excel # -*- coding: utf-8 -*- # @Time : 2020/2/12 9:14 # @File : do_excel_xlrd_11.py # @Author ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-测试类中调用封装的mock(10)
封装mock后,在单元测试中调用 # -*- coding: utf-8 -*- # @Time : 2020/2/11 8:35 # @File : test_class_10.py.py # @A ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)
封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...
随机推荐
- winform程序常用图标网站及资源
1.easyicon网站,免费下载 https://www.easyicon.net/ 2.findicons https://findicons.com/ 3.iconarchive http:// ...
- 基于libcurl的POST(http)
#include <stdio.h> #include <curl/curl.h> int main (void) { char *url="http://www.n ...
- PHPCMS 1分钟快速搭建
一.下载CMS源码 https://www.yzmcms.com/xiazai 下载完成后得到一个这样的压缩包 接着下载PHPStudy,安装只要一直点下一步就可以了 安装完成后打开,如下图启动两个地 ...
- 201512-1 数位之和 Java
思路: mod 10获取最低位,除以10去掉最低位 import java.util.Scanner; public class Main { public static void main(Stri ...
- Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore , Condition
http://www.importnew.com/21889.html 1)CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同: CountDown ...
- Google Guava入门教程
以下资料整理自网络 一.Google Guava入门介绍 引言 Guava 工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [cachi ...
- SQL查询出一个表数据插入到另一个表里
下面两中方式都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的: 方式一 (select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建. selec ...
- 多标签图像分类任务的评价方法-mAP
http://blog.sina.com.cn/s/blog_9db078090102whzw.html 多标签图像分类(Multi-label Image Classification)任务中图片的 ...
- 0x10 - PostgreSQL 安装之 CentOS7 + Patroni
PostgreSQL + CentOS7 + Patroni 背景 PostgreSQL 的高可用环境 环境 CentOS 7 pg01 (192.168.1.120) pg02 (192.168.1 ...
- vue-router query和params参数的区别
1.query方式传参和接收参数(相当于get请求) this.$router.push({ path:'/home' query:{ id:1 } }) 接收参数: this.$route.quer ...