前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >httprunner 3.x学习9 - .env环境变量设置

httprunner 3.x学习9 - .env环境变量设置

作者头像
上海-悠悠
发布2021-06-24 21:59:30
9560
发布2021-06-24 21:59:30
举报

前言

一般来说,在进行实际应用的开发过程中,应用会拥有不同的运行环境,通常会有以下环境:

  • 本地开发环境
  • 测试环境
  • 生产环境

在不同环境中,我们可能会使用不同的数据库或邮件发送等配置,这时候则需要通过 .env 文件来针对不同的运行环境作不同的设置。

环境变量

在自动化测试中,有时需要借助环境变量实现某些特定的目的,常见的场景包括:

  • 切换测试环境
  • 切换测试配置
  • 存储敏感数据(从信息安全的角度出发)

Windows 系统中使用 set 命令设置环境变量和值,接下来设置以下变量

  • base_url = http://127.0.0.1:8000 设置base_url值,可以一键切换运行的环境
  • username = test 设置登陆账号和密码,切换账号测试
  • password = 123456 设置登陆账号和密码,切换账号测试

打开cmd,使用 set key=value 格式设置环境变量(linux使用 export 命令)

代码语言:javascript
复制
C:\Users\dell>set base_url=http://127.0.0.1:8000

C:\Users\dell>set username=test

C:\Users\dell>set password=123456

查看环境变量值使用 set keyname 查看对应的值

代码语言:javascript
复制
C:\Users\dell>set base_url
base_url=http://127.0.0.1:8000

C:\Users\dell>set username
username=test

C:\Users\dell>set password
password=123456

在windows系统里面,命令行引用变量用 %var%

代码语言:javascript
复制
C:\Users\dell>echo 账号:%username%
账号:test

linux 系统中使用 export 命令设置环境变量和值, 引用变量$keyname

代码语言:javascript
复制
[root@VM_0_2_centos ~]# export base_url=http://127.0.0.1:8000
[root@VM_0_2_centos ~]# export username=test
[root@VM_0_2_centos ~]# echo $base_url
http://127.0.0.1:8000
[root@VM_0_2_centos ~]# echo $username
test

在cmd设置的环境变量只是临时的环境变量,不会保存到电脑本地,关闭窗口后自动清除。

.env 文件设置环境变量

winodws无法直接创建 .env 的文件,会提示文件名不能为空,这里使用 pycharm 新建用过 .env 文件 (或者你新建用过 1.env 的文件,在cmd窗口重命名 rename 1.env .env

代码语言:javascript
复制
# .env
base_url=http://127.0.0.1:8000
username=test
password=123456

在 HttpRunner 3.x版本中内置了函数 ENV 函数读取环境变量的值

yaml 脚本案例

引用环境变量使用ENV函数 ${ENV(keyname)

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

config:
    name: login case
    variables:
        user: ${ENV(username)}
        psw: ${ENV(password)}
    base_url: ${ENV(base_url)}

teststeps:
-
    name: step login
    request:
        url: /api/v1/login
        method: POST
        json:
            username: $user
            password: $psw
    extract:
        token: content.token
    validate:
        - eq: [status_code, 200]
        - eq: [content.code, 0]
        - eq: [content.msg, login success!]
        - len_eq: [content.token, 40]

pytest 脚本

代码语言:javascript
复制
# NOTE: Generated By HttpRunner v3.1.4
# FROM: testcases\login_env.yml
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase

class TestCaseLoginEnv(HttpRunner):

    config = (
        Config("login case")
        .variables(**{"user": "${ENV(username)}", "psw": "${ENV(password)}"})
        .base_url("${ENV(base_url)}")
    )

    teststeps = [
        Step(
            RunRequest("step login")
            .post("/api/v1/login")
            .with_json({"username": "$user", "password": "$psw"})
            .extract()
            .with_jmespath("body.token", "token")
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("body.code", 0)
            .assert_equal("body.msg", "login success!")
            .assert_length_equal("body.token", 40)
        ),
    ]

if __name__ == "__main__":
    TestCaseLoginEnv().test_start()

.env 文件必须放到项目根目录(debugtalk.py同一层级) httpruner2.x 版本可以使用 --dot-env-path 参数指定.env的路径,但在 httprunner3.x 版本已经去掉了这个参数

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境变量
  • .env 文件设置环境变量
  • yaml 脚本案例
  • pytest 脚本
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档