前言

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

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

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

环境变量

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

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

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

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

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

C:\Users\dell>set host=http://127.0.0.1:8000

C:\Users\dell>set name=test

C:\Users\dell>set password=123456

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

C:\Users\dell>set host
host=http://127.0.0.1:8000 C:\Users\dell>set name
name=test C:\Users\dell>set password
password=123456

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

C:\Users\dell>echo 账号:%name%
账号:test

在python中引用刚才设置的环境变量,先导入os模块,用 os.environ 方法获取(environ是在os.py中定义的一个dict environ = {})

# 上海悠悠,QQ交流群:750815713
C:\Users\dell>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ.get('host')
'http://127.0.0.1:8000'
>>> os.environ.get('name')
'test'
>>> os.environ.get('password')
'123456'
>>>

所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。

永久性修改环境变量的方法可以通过我的电脑-〉属性-〉高级,来设置系统的环境变量。

.env 文件设置环境变量

在cmd设置的环境变量没法存储,所以需要创建用过.env文件来存放环境变量,存储采用 name=value 的格式:

winodws无法直接创建 .env 的文件,会提示文件名不能为空,这里使用 pycharm 新建用过 .env 文件

(或者你新建用过 1.env 的文件,在cmd窗口重命名 rename 1.env .env

# .env
host=http://127.0.0.1:8000
name=test
password=123456

接下来在debugtalk.py中写一个ENV函数,用于读取环境变量,用于在 YAML/JSON 脚本中直接引用环境变量

(在 HttpRunner 2.x版本中内置了函数 environ(简称 ENV))

# debugtalk.py
import os
# 上海悠悠,QQ交流群:750815713 def ENV(keyname):
'''
获取环境keyname对应的值
:return:
'''
value = os.environ.get(keyname, '')
return value

HttpRunner 运行时,会自动将.env文件中的内容加载到运行时(RunTime)的环境变量中,然后在运行时中就可以对环境变量进行读取了。

脚本案例

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

# 上海悠悠,QQ交流群:750815713
- config:
name: logincase
variables: {}
request:
base_url: ${ENV(host)} # 引用环境变量host值
- test:
name: login case1
request:
url: /api/v1/login/
method: POST
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: ${ENV(name)} # 引用环境变量name值
password: ${ENV(password)} # 引用环境变量password值
extract:
- token: content.token # 提取token
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.msg, login success!]
- eq: [content.code, 0]

运行用例

D:\soft\untitled\projectdemo>hrun test_env_demo.yml
INFO Loading environment variables from D:\soft\untitled\projectdemo\.env
login case1
INFO POST /api/v1/login/
INFO status_code: 200, response_time(ms): 517.84 ms, response_length: 109 bytes
INFO start to extract from response object.
INFO start to validate.
. ----------------------------------------------------------------------
Ran 1 test in 0.525s OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\projectdemo\reports\1569661153.html D:\soft\untitled\projectdemo>

如果.env文件和debugtalk不在同一个文件夹下,可以使用 --dot-env-path 参数指定.env的路径

hrun test_env_demo.yml --dot-env-path /path/to/.env

可以设置--log-level 参数为debug模式,查看更加详细的运行日志

>hrun test_env_demo.yml --log-level debug
INFO Loading environment variables from D:\soft\untitled\projectdemo\.env
DEBUG Loaded variable: host
DEBUG Loaded variable: name
DEBUG Loaded variable: password
login case1
DEBUG call hook: ${setup_hook_prepare_kwargs($request)}
INFO POST /api/v1/login/
DEBUG request kwargs(raw): {'headers': {'content-type': 'application/json', 'user-agent': 'python-requests/2.18.4'}, 'json': {'username': 'test', 'password': '123456'}}
DEBUG processed request:
> POST http://127.0.0.1:8000/api/v1/login/

在 HttpRunner 2.x版本中内置了函数 environ(简称 ENV)

httprunner学习13-环境变量.env的更多相关文章

  1. NodeJS学习:环境变量

    简介 环境变量(environment variables) 不属于 NodeJS 范畴,它是操作系统用于设定执行环境的参数.会在程序运行时传递给应用程序. NodeJS 获取环境变量,是通过 glo ...

  2. bash学习之环境变量

    1.查看系统存在的环境变量env 和 export env命令:查看环境变量 [CJP@CJP ~]$ env HOSTNAME=CJP SHELL=/bin/bash HISTSIZE=1000 U ...

  3. Shell学习之环境变量配置文件(三)

    Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...

  4. FastAdmin 环境变量 env 配置

    FastAdmin 环境变量 env 配置 目前 FastAdmin 支持环境变量 env 配置. 目前支持以下环境变量 app.debug app.trace database.type datab ...

  5. linux 学习:环境变量设置

    一.临时环境变量 临时环境变量,只对当前打开的shell生效,shell关闭后,环境变量失效. 设置方法一: 分两步 MYPARA=hello export MYPARA 设置方法二:一步完成 exp ...

  6. 添加用户useradd,给用户设置修改密码passwd,修改用户信息usermod,修改用户密码状态chage,删除用户userdel,查询用户及组id,切换用户su,查看当前环境变量env

    useradd 用户名 passwd 用户名,给指定用户设密码 passwd给当前用户设密码 添加一个用户系统会自动在以下文件或目录创建对应用户信息: [root@localhost ~]# grep ...

  7. Shell学习笔记 - 环境变量配置文件(转)

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  8. Shell学习笔记 - 环境变量配置文件

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  9. Java基础学习-Path环境变量的配置

    1.为什么要进行Path环境变量的配置       程序的编译和执行需要使用到javac和java命令,所以只能在bin目录下写程序,而实际开发中,我们不可能将程序全部写到bin目录下,所以我们不许让 ...

随机推荐

  1. magic模块 :Exception Value:failed to find libmagic. Check your installation

    原因 缺少安装依赖: magic 安装依赖: https://github.com/ahupp/python-magic#dependencies windows下解决方法: https://gith ...

  2. [原创]K8Cscan4.0之Base64/HEX密码批量加密解密插件以及源码

    前言 今天抽空更新了Cscan,新增对C#编译的EXE动态调用,新增对PowerShell脚本动态调用(无论是否安装PowerShell) 增加一个字符串列表str.txt,用于存放任意字符串,比如帐 ...

  3. word 转 pfd

    转自: https://www.cnblogs.com/qiwu1314/p/6101400.html demo: public class Doc2Pdf { public static boole ...

  4. Neo4j学习——基本操作(一)

    由于开始学习知识图谱,因此需要涉及到neo4j的使用一.介绍neo4j是一个图形数据库基于Java开发而成,因此需要配置jvm才可以运行配置请参考我前面的一篇blog:https://www.cnbl ...

  5. FusionInsight大数据开发---Redis应用开发

    Redis应用开发 要求: 了解Redis应用场景 掌握Redis二次开发环境搭建 掌握Redis业务开发 Redis简介 Redis是一个基于网络的,高性能key-value内存数据库 Redis根 ...

  6. FusionInsight大数据开发---Spark应用开发

    Spark应用开发 要求: 了解Spark基本原理 搭建Spark开发环境 开发Spark应用程序 调试运行Spark应用程序 YARN资源调度,可以和Hadoop集群无缝对接 Spark适用场景大多 ...

  7. C# SQl通过对视图数据二次查询,统计数据

    问题描述: 原数据---------需要在原视图数据中,统计出每个Device_Num设备号下面的交易的总额和分别统计出微信支付宝的交易总额. 解决:从上图数据没办法使用直接查询出要求的数据. .1. ...

  8. linux学习 - 基本命令篇

    关机重启命令 基本操作之修改用户名(Ubuntu) 查看系统版本号 查看系统是32位还是64位 系统进程信息查看 查看某个端口被占用的情况 查看磁盘分区使用情况 df 命令 fdisk 关机重启命令 ...

  9. 利用Properties属性集结合类加载器读取配置文件

    配置文件test.properties a=123 测试类Demo1.java public class Demo1 { public static void main(String[] args) ...

  10. Java自学-接口与继承 super

    Java的super关键字 步骤 1 : 准备一个显式提供无参构造方法的父类 准备显式提供无参构造方法的父类 在实例化Hero对象的时候,其构造方法会打印 "Hero的构造方法 " ...