本文節選自霍格沃玆測試學院内部教材,文末連結進階學習!
在實際工作中,為了便于維護,對于環境的切換和配置,通常不會使用寫死的形式完成。在之前文章
《多環境下的接口測試》中,已經介紹了如何将環境的切換作為一個可配置的選項。本文會把這部分内容進行重構,使用資料驅動的方式完成多環境的配置。
環境準備
參考
,将環境配置部分改為資料驅動的模式:
代碼如下:
#把host修改為ip,并附加host header
env={
"docker.testing-studio.com": {
"dev": "127.0.0.1",
"test": "1.1.1.2"
},
"default": "dev"
}
data["url"]=str(data["url"]).replace(
"docker.testing-studio.com",
env["docker.testing-studio.com"][env["default"]]
)
data["headers"]["Host"]="docker.testing-studio.com"
實戰示範
依然以 YAML 為示例,将所有的環境配置資訊放到
env.yml
檔案中。如果怕出錯,可以先使用
yaml.safe_dump(env)
将 dict 格式的代碼轉換為 YAML。
如下所示,列印出來的,就是成功轉換 YAML 格式的配置資訊:
def test_send(self):
env={
"docker.testing-studio.com": {
"dev": "127.0.0.1",
"test": "1.1.1.2"
},
"default": "dev"
}
yaml2 = yaml.safe_dump(env)
print("")
print(yaml2)
将列印出來的内容粘貼到 env.yml 檔案中:
docker.testing-studio.com:
dev: "127.0.0.1"
test: "1.1.1.2"
level: 4
default:
"dev"
将環境準備中的代碼稍作修改,把
env
變量從一個典型 dict 改為使用
yaml.safe_load
讀取
env.yml
:
# 把host修改為ip,并附加host header
env = yaml.safe_load(open("./env.yml"))
data["url"] = str(data["url"]).\
replace("docker.testing-studio.com",
env["docker.testing-studio.com"][env["default"]])
data["headers"]["Host"] = "docker.testing-studio.com"
如此一來,就可以實作使用資料驅動的方式,通過修改
env.yml
檔案來直接修改配置資訊。
每日一問
關于測試的資料驅動,你有沒有遇到過令你印象深刻的難題,或者可分享的實戰經驗?歡迎在評論區留言。
更多接口測試架構實戰進階内容,我們在後續文章分享。