最最重要,处理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)的更多相关文章

  1. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)

    把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...

  2. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-openpyxl读取excel(14)

    从excel中读取数据 # -*- coding: utf-8 -*- # @Time : 2020/2/12 17:23 # @File : do_excel_openpyxl_14.py # @A ...

  3. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-执行测试用例(16)

    执行测试用例 # -*- coding: utf-8 -*- # @Time : 2020/2/12 22:56 # @File : run_test_16.py # @Author: Hero Li ...

  4. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-完整的测试类,含依赖测试(15)

    ddt.依赖测试.断言.测试数据写回 # -*- coding: utf-8 -*- # @Time : 2020/2/12 23:07 # @File : test_class_15.py # @A ...

  5. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-发送测试报告邮件(19)

    给多个人发邮件时,可以传入邮箱列表 把多个收件人用分号隔开 # -*- coding: utf-8 -*-# @Time : 2020/2/15 17:02# @File : send_mail_19 ...

  6. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-模拟接口响应数据(18)

    这里是把传入的请求数据作为响应值返回 # -*- coding: utf-8 -*- # @Time : 2020/2/15 9:47 # @File : do_mock_18.py # @Autho ...

  7. 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 ...

  8. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-测试类中调用封装的mock(10)

    封装mock后,在单元测试中调用 # -*- coding: utf-8 -*- # @Time : 2020/2/11 8:35 # @File : test_class_10.py.py # @A ...

  9. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-封装mock(9)

    封装mock # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:51 # @File : mock_demo_9.py # @Author: Hero Liu ...

随机推荐

  1. Bug(1)

    程序要求:内网之间客户端截屏(.bmp)并传送给服务端. server: #include <winsock2.h> // 为了使用Winsock API函数 #include <s ...

  2. mysql安装完之后,登陆后发现只有两个数据库

    mysql安装完之后,登陆后发现只有两个数据库:mysql> show databases;+--------------------+| Database           |+------ ...

  3. 深入理解JVM - 垃圾收集器

    垃圾回收主要是要解决3件事情: 那些内存需要回收? 如何回收? 什么时候回收? 那些内存需要回收 在强引用的情况下已经“死”了的对象就需要回收,在非强引用的情况下视情况回收.在java里面,几乎所有的 ...

  4. Kattis dragonball1 Dragon Ball I(最短路)

    There is a legendary tale about Dragon Balls on Planet X: if one collects seven Dragon Balls, the Dr ...

  5. MyBatis从入门到精通(第9章):Spring集成MyBatis(上)

    MyBatis从入门到精通(第9章):Spring集成MyBatis(上) Spring是一个为了解决企业级Web应用开发过程中面临的复杂性,而被创建的一个非常流行的轻量级框架. mybatis-sp ...

  6. 微信小程序使用第三方FontIcon库的部分字体图标

    一.提取部分图标重新制作TTF字库 我没有使用网上大多数文章写的淘宝提供的fonticon,而只使用了Ionicons的几个图标,所以打开Ionicons的官网点击右上角的Designer pack下 ...

  7. 关于Weblogic的知识点

    一.解决Weblogic域创建.启动.进入控制台慢问题 搭建Weblogic 11g和12c环境时发现,安装正常,以默认组件安装,但是创建域的时候特别慢,一般需要几分钟至10分钟,卡在“创建域安全信息 ...

  8. python实现图书管理系统

    # 用户注册 def logon(): print("欢迎来到图书管理系统注册页面~") username = input("请输入用户名:") if len( ...

  9. Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比

    本博客强烈推荐: Java电子书高清PDF集合免费下载 https://www.cnblogs.com/yuxiang1/p/12099324.html 前言 在分布式系统中,我们广泛运用消息中间件进 ...

  10. 3. 监控利器nagios手把手企业级实战第二部

    1. 编辑hosts.cfg增加被监控的主机[root@nagios etc]# cat objects/hosts.cfg define host{        use               ...