美文网首页
3、HttpRunner_环境变量

3、HttpRunner_环境变量

作者: 猪儿打滚 | 来源:发表于2019-12-07 14:58 被阅读0次

    PS.本系列的内容主要来自HttpRunner官方文档,因为个人习惯,在学习的时候会写笔记用以加深记忆(cv大法),所以有本系列的笔记。
    https://cn.httprunner.org/


    环境变量

    一、环境变量的作用

    在进行自动化测试过程中,我们有时候会需要读取一些环境变量,从而实现一些目的,常用的场景有:

    • 切换测试环境
    • 切换测试配置
    • 存储敏感数据(比如说密码之类的,这样能避免敏感数据在代码中出现)
    二、设置环境变量
    • 在终端预设环境变量,然后代码中读取
      windows系统:使用set命令
      linux系统:使用export命令
    export/set UserName = admin
    

    代码中使用os模块读取系统中的环境变量

    import os
    os.environ['UserName']  # admin
    
    • 2.通过.env文件设置环境变量
      在HttpRunner中,借鉴了pipenv加载.env文件的方式来对环境变量的设置和管理。
      a.在自动化测试项目的根目录中,创建.env文件,然后把一些敏感数据放在里面,存储方式是键值对key=value的格式。
      注意:.env文件需要添加到.gitignore中,不能添加在代码仓库里
    Usernmae = admin
    Password = 23333
    

    在HttpRunner运行时,会自动将.env的内容,加载到项目运行时的环境变量中,此时就可以在项目中,对环境变量进行读取。

    b.如果想要加载不位于自动化项目根目录下的.env,或者其它名称的env文件(比如:audience.env),可以用--dot-env-path参数来指定这个文件的路径

    hrun /path/to/testcase.yml --dot-env-path audience.env --log-level debug
    
    三、引用环境变量

    在设置好了环境变量后,那么该考虑的就是如何去引用这些环境变量。
    HttpRunner中内置了environ函数,可以在yaml/json测试用例中,直接使用${ENV(变量名)}来引用环境变量

    - test:
        name: login
        request:
            url: http://host/api/login
            method: POST
            headers:
                Content-Type: application/json
            json:
                username: ${ENV(UserName)}
                password: ${ENV(Password)}
            validate:
                - eq: [status_code, 200]
    

    当然,如果想要对环境变量做进一步的处理,也可以在debugtalk.py文件中,通过python内置函数os.environ去读取到环境变量,然后进行处理
    比如,如果请求参中的密码,需要先和密钥进行拼接后,生成MD5,就可以在debugtalk.py文件实现这样的函数:

    import os
    
    def get_encrypt_password():
        raw_passwd = os.environ["Password"]
        PROJECT_KEY = os.environ["PROJECT_KEY"])
        password = (raw_passwd + PROJECT_KEY).encode('ascii')
        return hmac.new(password, hashlib.sha1).hexdigest()
    

    然后,在yaml/json测试用例中进行调用:

    - test:
        name: login
        request:
            url: http://host/api/login
            method: POST
            headers:
                Content-Type: application/json
            json:
                username: ${ENV(UserName)}
                # 调用函数
                password: ${get_encrypt_password()}
            validate:
                - eq: [status_code, 200]
    

    相关文章

      网友评论

          本文标题:3、HttpRunner_环境变量

          本文链接:https://www.haomeiwen.com/subject/mglhwctx.html