1. 程式人生 > 其它 >httprunner 3.x學習9 - .env環境變數設定

httprunner 3.x學習9 - .env環境變數設定

前言

一般來說,在進行實際應用的開發過程中,應用會擁有不同的執行環境,通常會有以下環境:

  • 本地開發環境
  • 測試環境
  • 生產環境

在不同環境中,我們可能會使用不同的資料庫或郵件傳送等配置,這時候則需要通過 .env 檔案來針對不同的執行環境作不同的設定。

環境變數

在自動化測試中,有時需要藉助環境變數實現某些特定的目的,常見的場景包括:

  • 切換測試環境
  • 切換測試配置
  • 儲存敏感資料(從資訊保安的角度出發)

Windows 系統中使用 set 命令設定環境變數和值,接下來設定以下變數

  • base_url = http://127.0.0.1:8000 設定base_url值,可以一鍵切換執行的環境
  • username = test 設定登陸賬號和密碼,切換賬號測試
  • password = 123456 設定登陸賬號和密碼,切換賬號測試

開啟cmd,使用 set key=value 格式設定環境變數(linux使用 export 命令)

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 檢視對應的值

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%

C:\Users\dell>echo 賬號:%username%
賬號:test

linux 系統中使用 export 命令設定環境變數和值, 引用變數$keyname

[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

# .env
base_url=http://127.0.0.1:8000
username=test
password=123456

在 HttpRunner 3.x版本中內建了函式 ENV 函式讀取環境變數的值

yaml 指令碼案例

引用環境變數使用ENV函式 ${ENV(keyname)

# 作者-上海悠悠 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 指令碼

# 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 版本已經去掉了這個引數