zoukankan      html  css  js  c++  java
  • 测试框架学习之HttpRunner用例调试环境变量.env(五)

    一、环境变量使用场景:
    1、配置不同项目环境;
    2、测试中项目公共配置抽取
    3、敏感数据剥离出来

    二、环境变量设置

    1.1.先在系统中设置环境变量名称和值,传统的方式为使用 export 命令(Windows系统中使用 set 命令):

    $ export UserName=admin
    $ echo $UserName
    admin
    $ export Password=123456
    $ echo $Password123456

    1.2.在程序中就可以对系统中的环境变量进行读取。

    $ python
    >>> import os
    >>> os.environ["UserName"]'admin'

    默认情况下,在自动化测试项目的根目录中,创建.env文件,并将敏感数据信息放置到其中,存储采用name=value的格式:

    $ cat .env
    UserName=admin
    Password=123456
    PROJECT_KEY=ABCDEFGH

    同时,.env文件不应该添加到代码仓库中,建议将.env加入到.gitignore中。
    HttpRunner 运行时,会自动将.env文件中的内容加载到运行时(RunTime)的环境变量中,然后在运行时中就可以对环境变量进行读取了。
    若需加载不位于自动化项目根目录中的.env,或者其它名称的.env文件(例如production.env),可以采用--dot-env-path参数指定文件路径:
    $ hrun /path/to/testcase.yml --dot-env-path /path/to/.env --log-level debug
    INFO Loading environment variables from /path/to/.env
    DEBUG Loaded variable: UserName
    DEBUG Loaded variable: Password
    DEBUG Loaded variable: PROJECT_KEY
    ...

    三、环境变量引用
    在项目目录下的debugtalk.py写入:

    import os
    UserName = os.environ["UserName"] # admin
    Password = os.environ["Password"] # 123456PROJECT_KEY = os.environ["PROJECT_KEY"]) # ABCDEFGH

    测试用例中引用
    - test:
    name: login
    request:
    url: http://host/api/login
    method: POST
    headers:
    Content-Type: application/json
    json:
    username: $UserName
    password: $Password
    validate:
    - eq: [status_code, 200]

    如数据需要处理再引用,则定义函数,通过${func()}的方式引用环境变量
    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()

    测试用例引用
    - test:
    name: login
    request:
    url: http://host/api/login
    method: POST
    headers:
    Content-Type: application/json
    json:
    username: $UserName
    password: ${get_encrypt_password()}
    validate: #断言
    - eq: [status_code, 200]

  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/mys6/p/14780533.html
Copyright © 2011-2022 走看看