zoukankan      html  css  js  c++  java
  • 框架健壮性优化,环境变量类,正则替换excel

    项目健壮性提高 path参数化

    import os
    
    # 获取项目所在的绝对路径
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    # 用例模块所在的目录路径
    CASE_DIR = os.path.join(BASE_DIR, "testcases")
    
    # 用例数据所在的目录路径
    DATA_DIR = os.path.join(BASE_DIR, "data")
    
    # 配置文件所在的目录路径
    CONF_DIR = os.path.join(BASE_DIR, "conf")
    
    # 测试报告所在的目录路径
    REPORT_DIR = os.path.join(BASE_DIR, "reports")
    
    # 日志文件所在的目录路径
    LOG_DIR = os.path.join(BASE_DIR, "logs")
    

    引入正则方便对excel中的数据灵活替换完善参数化效果

    import re
    from common.handle_config import conf
    
    
    class EnvData:
        """定义一个类,用来保存用例执行过程中,提取出来的数据(当成环境变量的容器)"""
        pass
    
    
    
    
    def replace_data(data):
        """替换数据"""
    
        while re.search("#(.*?)#", data):
            res = re.search("#(.*?)#", data)
            # 返回的式一个匹配对象
            # 获取匹配到的数据
            key = res.group()
            # 获取匹配规则中括号里面的内容
            item = res.group(1)
            try:
                # 获取配置文件中对应的值
                value = conf.get("test_data", item)
            except:
                # 去EnvData这个类里面获取对应的属性(环境变量)
                value = getattr(EnvData, item)
    
            data = data.replace(key, value)
        return data

    环境变量类的实际应用

    实例代码

    @ddt
    class TestAdd(unittest.TestCase):
        excel = HandleExcel(os.path.join(DATA_DIR, "apicases.xlsx"), "add")
        cases = excel.read_data()
        db = HandleMysql()
    
        @classmethod
        def setUpClass(cls):
            """用例执行的前置条件:登录"""
            # 准备登录的相关数据
            url = conf.get("env", "url") + "/member/login"
            data = {
                "mobile_phone": conf.get("test_data", "phone"),
                "pwd": conf.get("test_data", "pwd")
            }
            headers = eval(conf.get("env", "headers"))
            response = request(method="post", url=url, json=data, headers=headers)
            res = response.json()
            member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = "Bearer" + " " + jsonpath.jsonpath(res, "$..token")[0]
            # 将提取出来的数据保存为EnvData这个类的属性(环境变量)
            setattr(EnvData, "member_id", member_id)
            setattr(EnvData, "token", token)
  • 相关阅读:
    String类中的常用方法(Java)
    Struts2的Lambda表达式的使用
    Struts2的环境搭建
    Servlet 3.0
    关于URLWriter的用法
    PrintStream与PrintWriter
    java中的System.nanoTime与System.currentTime
    java多线程之CyclicBarrier类
    多线程java IO之管道流
    消费者与生产者
  • 原文地址:https://www.cnblogs.com/addicated/p/13194421.html
Copyright © 2011-2022 走看看