方法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. C语言-字、半字、内存位宽相关

    1.32位系统:32位系统指的是32位数据线,但是一般地址线也是32位,这个地址线32位决定了内存地址只能有32位二进制,所以逻辑上的大小为2的32次方.内存限制就为4G.实际上32位系统中可用的内存 ...

  2. Momentum

    11.6 Momentum 在 Section 11.4 中,我们提到,目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向.因此,梯度下降也叫作最陡下降(steepest desce ...

  3. UML-如何使用层进行设计?

    1.将代码组织映射为层和UML包 com.mycompany |_nextgen |_ui |_domain |_service |_util org.apache.log4j  2.使用对象设计应用 ...

  4. CocoaPods-Alcatraz插件

    Alcatraz:Xcode的插件管理工具,可通过它添加CocoaPods插件 下载地址:https://github.com/alcatraz/Alcatraz 建议: 不提倡通过终端命令下载Alc ...

  5. 别了JetBrains,换Visual Studio

    Visual Studio一直是我排斥的,这么多年一致不用. 2019年JetBrains的注册码越来越频繁的被封杀,我承认使用盗版不对. 试过Eclipse+pydev搞python,但是todo用 ...

  6. python all()函数

    1.描述all() 函数——用于判断给定的可迭代参数 iterable 中的所有元素是否都为TRUE,如果是返回 True,否则返回 False.元素除了是 0.空.FALSE 外都算 TRUE.2. ...

  7. node/静态路由/express框架中的express.static()和app.use()

    此篇文章转载于 express框架中的express.static()和app.use() Express框架在使用app.use中传入express.static设置静态路由时,这个文件夹下的所有文 ...

  8. iOS 一个新方法:- (void)makeObjectsPerformSelector:(SEL)aSelector;

    NSArray 里面的一个方法, - (void)makeObjectsPerformSelector:(SEL)aSelector: 这是一个类似于执行for循环的方法,可以这样用,当需要删除一个v ...

  9. org.springframework.web.util.UriComponentsBuilder

    import org.springframework.web.util.UriComponentsBuilder; UriComponentsBuilder.fromHttpUrl("htt ...

  10. python解一元一次方程

    将未知数看成是虚数 将常数看成是实数 最终求解. import re class Item: def __init__(self,imag=0,real=0): self.imag = imag se ...