首页 > 其他分享 > httprunner 2.x学习20 - env环境变量有#注释和空行处理

httprunner 2.x学习20 - env环境变量有#注释和空行处理

时间:2022-10-26 09:48:17浏览次数:70  
标签:httprunner variables value env path 20 line dot

前言

httprunner用.env 文件管理环境变量,但是必须是严格是key=value格式,如果加# 注释就会用例解析失败。

问题描述

问题版本:v2.5.9
问题描述:
.env文件中带有#号注释

# 用户名
user = test1

运行用例的时候会报错:.env format error

主要原因是默认只能解析key=value格式的数据

解决办法

先看对应的源码,在httprunner.loader.load.py文件中找到

def load_dot_env_file(dot_env_path):
    """load .env file.

    Args:
        dot_env_path (str): .env file path

    Returns:
        dict: environment variables mapping

            {
                "UserName": "debugtalk",
                "Password": "123456",
                "PROJECT_KEY": "ABCDEFGH"
            }

    Raises:
        exceptions.FileFormatError: If .env file format is invalid.

    """
    if not os.path.isfile(dot_env_path):
        return {}

    logger.log_info("Loading environment variables from {}".format(dot_env_path))
    env_variables_mapping = {}

    with io.open(dot_env_path, "r", encoding="utf-8") as fp:
        for line in fp:
            # maxsplit=1
            if "=" in line:
                variable, value = line.split("=", 1)
            elif ":" in line:
                variable, value = line.split(":", 1)
            else:
                raise exceptions.FileFormatError(".env format error")

            env_variables_mapping[variable.strip()] = value.strip()

    utils.set_os_environ(env_variables_mapping)
    return env_variables_mapping

可以看到关键代码部分

if "=" in line:
    variable, value = line.split("=", 1)
elif ":" in line:
    variable, value = line.split(":", 1)

按每行读取后以等号"="或冒号":"分割。

只需加两行代码即可解决

def load_dot_env_file(dot_env_path):
    """load .env file.

    Args:
        dot_env_path (str): .env file path

    Returns:
        dict: environment variables mapping

            {
                "UserName": "debugtalk",
                "Password": "123456",
                "PROJECT_KEY": "ABCDEFGH"
            }

    Raises:
        exceptions.FileFormatError: If .env file format is invalid.

    """
    if not os.path.isfile(dot_env_path):
        return {}

    logger.log_info("Loading environment variables from {}".format(dot_env_path))
    env_variables_mapping = {}

    with io.open(dot_env_path, "r", encoding="utf-8") as fp:
        for line in fp:
            if line.startswith("#") or "=" not in line:
                # 忽略空行和# 注释行
                continue
            # maxsplit=1
            if "=" in line:
                variable, value = line.split("=", 1)
            elif ":" in line:
                variable, value = line.split(":", 1)
            else:
                raise exceptions.FileFormatError(".env format error")

            env_variables_mapping[variable.strip()] = value.strip()

    utils.set_os_environ(env_variables_mapping)
    return env_variables_mapping

标签:httprunner,variables,value,env,path,20,line,dot
From: https://www.cnblogs.com/yoyoketang/p/16827187.html

相关文章

  • 【2022.10.25】尝试自写一个Dockerfile
    前言用了别人这么多的docker,因为mirai的旧版本登不上了这次要自写一个docker了因为mirai运行在openjdk环境下运行,所以首先最开始的内容便是FROMopenjdk:17-slim-buster......
  • VS2019编译驱动时出现Inf2Cat错误
    1.VS2019编译驱动时出现Inf2Cat错误:2.解决方法如下,修改项目属性->Inf2Cat->General->UseLocalTime项为"/uselocaltime".......
  • Windows 2016 安装 Jenkins
    https://www.jenkins.io/download/安装thisaccounteitherdoesnothavetheprivilegetologon解决:控制面板\所有控制面板项\管理工具配置输入http:/......
  • httprunner 创建项目
    1、pipinstallhttprunner结果:安装成功hrun-VV4.3.02、hrun--startprojectdir提示:找不到startproject httprunnerstartprojectdir(hrp3.x创建项目命令)提示......
  • 2022-10-25学习内容_step01
    1.案例-找回密码-登录界面1.1activity_login_main.xml<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/and......
  • 2022.10.25
    2022.10.25水群只有一次和无数次,呜呜呜呜呜。以后没有人@我,绝不去水群。该水还是要水的。关于我的电脑累了想休息一下这件事。吓傻了。哦!我上午干了什么?写贪心?写二分......
  • 想说的话2022/10/25
    今年遇到了许多不大不小的事情,考研、复试、调剂、尝试找工作、毕业、实习、上研究生......人生确实如梦,每件事情看似都重要,现在去想想又没有那么重要。​今年伊始我怀着......
  • [2022.10.25]常用类—String
    intlength():返回字符串的长度:returnvalue.LengthcharcharAt(intindex):返回某索引处的字符returnvalue[index]booleanisEmpty():判断是否是空字符串:returnvalue......
  • 建立自己的知行系统_01_20221025
    知行合一,事事才能顺遂。1.进行验证测试计划前,测试系统的架构和测试样品的状态需二次确认,避免发生接错(比如今天正负极接反导致模块短路就可以避免)或测试样品存在问题。2.......
  • 【闲话】2022.10.25
    今天又是考试乐死出题人吸取了昨日教训把U,V分别换成了zuotiannihackwo,jintiannihailai乐死,他急了他急了赛后,Eafoo:#definejintianwohailaijintiannihailai双倍乐......