方法1:这里只给出根据依赖字段去匹配响应结果中的值的函数,其他匹配依赖case,对依赖case发起请求见下面的方法2

方法2:

from day_20200208_mooc.tools.do_excel_openpyxl_14 import DoExcel
from day_20200208_mooc.base.interface_request_class_5 import RunMain

class DependData:
    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"]
        if self.get_depend_case()["header"]:
            header = self.get_depend_case()["header"]
        res = RunMain().run_main(url, method, data, header)
        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的依赖字段depend_key,去依赖case里匹配结果
    # 匹配时需要知道目标值的位置
    # 这里假设要匹配的值就是返回的json数据中第一个层级的某个键值,
    # 如果json数据有多层,根据实际情况修改
    def get_depend_case_key(self):
        depend_key = self.get_present_case()["case_depend_data"]
        present_case_data = self.run_depend_case().json()[depend_key]
        return present_case_data

    # 根据依赖case字段的值对当前case发起请求
    def run_present_case(self, present_case_id):
        header = None
        url = self.get_present_case()["url"]
        method = self.get_present_case()["method"]
        data = self.get_present_case()["depend_data_belong_new_key"]
        if self.get_depend_case()["header"]:
            header = self.get_depend_case()["header"]
        res = RunMain().run_main(url, method, data, header)
        return res

  

MOOC(6)- case之间存在依赖的更多相关文章

  1. 持续集成:TestNG中case之间的关系

    持续集成:TestNG中case之间的关系   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...

  2. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  3. fleet中service之间的依赖关系

    最近有人在topcoder上提出使用fleet在集群上部署service时有时候会发现,当启动依赖于整个集群服务的service时,只会检查那个service所在机器的依赖关系,这样就会造成一些问题, ...

  4. (转)USB的描述符及各种描述符之间的依赖关系

    全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...

  5. Prism 文档 第三章 管理组件之间的依赖关系

                                                                          第3章:管理组件之间的依赖关系 基于Prism库的复合应用程 ...

  6. 手动创建Maven项目并建立两个项目之间的依赖关系

    用命令行快速建立maven项目 -> mvn:archetype:generate -> 直接回车或者自己输入你想生成的 -> groupId ->artifactId -&g ...

  7. (二)maven依赖,两个项目之间如何依赖,继承实现

    maven的jar之间存在依赖关系的,我们在引入一个时,其他有依赖关系的也会被引入 依赖排除: 比如现在有两个依赖关系,A(x,java,y.java,z.java)  B(a,java,b,java ...

  8. Spring对加载的bean之间循环依赖的处理

    根据下面文档的叙述,简言之: 对于相互之间通过构造函数注入相互循环依赖的情况,Spring会抛出BeanCurrentlyInCreationException错误. 如果AB两个beans是通过属性 ...

  9. NetCore 依赖注入之服务之间的依赖关系

    简单介绍,直接官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspn ...

随机推荐

  1. Vue.js——6.创建组件

    Vue组件组件就是为了拆分Vue实例的代码量,能够不同的功能定义不同的组件创建组件的方法 1. // 创建组件 let com1=Vue.extend({ template:'<h1>he ...

  2. 将QT窗口嵌入到WinForm窗口

    要想 windows下抓取Qt进程主界面,并嵌入到自己的程序中显示,需要首先设置qt窗口的windowTitle属性,然后就可以通过 windows api 中的 FindWindow 函数查找到窗口 ...

  3. Python基础学习一

    Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...

  4. share团队冲刺5

    团队冲刺第五天 昨天:按钮操作,自定义按钮及各种原件样式 今天:设置按钮按下效果,界面布局 问题:无

  5. ssh登录脚本

    #!/usr/bin/expect set timeout 100 set passwd "your password" spawn shell expect "key& ...

  6. java 利用管道实现线程间通信

    package com.lb; import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutpu ...

  7. Tensorflow学习教程------读取数据、建立网络、训练模型,小巧而完整的代码示例

    紧接上篇Tensorflow学习教程------tfrecords数据格式生成与读取,本篇将数据读取.建立网络以及模型训练整理成一个小样例,完整代码如下. #coding:utf-8 import t ...

  8. 第一章 mysql 的架构与历史

    一.mysql 的逻辑架构 1.连接管理与安全性 2.优化与执行 二.并发控制 1.读写锁 2.锁粒度 三.事物 1.隔离级别 2.死锁 3.事物日志 四.多版本并发控制 五.Mysql 的存储引擎

  9. 洛谷 P5018 对称二叉树

    题目传送门 解题思路: 先计算每个点的子树有多少节点,然后判断每个子树是不是对称的,更新答案. AC代码: #include<iostream> #include<cstdio> ...

  10. linux复制指定文件

    find /somedir -type f|xargs -I {} cp {} . find /somedir -name "*.txt"|xargs -I {} cp {} .