在做自動化測試的時候,經常會有一些配置檔案(如:yaml)等做一些配置資訊,那麼python怎麼讀取yaml檔案。
首先在項目下建一個common包,将一些公共類封裝在此包下,
再在項目下見一個config包,主要放一些yaml等配置檔案,yaml配置檔案内容:
base_url:
address: http://127.0.0.1/api/v1.0 #測試環境位址
base_config:
login_user: userName #登入使用者名
login_pwd: 123456 #登入使用者名密碼
user_chinese: 中文姓名
type_key: Content-Type #接口資訊頭傳參類型對應的鍵
json_type: application/json;charset=UTF-8 #接口資訊頭json格式封包類型
form_type: application/x-www-form-urlencoded #接口資訊頭form格式封包類型
token_key: token
接下來我們封裝讀取yaml檔案的類
class ConfigYaml:
def __init__(self, key=None, dir="Config", file='Config.yaml', encoding='utf-8'):
'''
:param key:
:param dir:
:param file:
:param encoding:
'''
self.key = key
self.file = file
self.dir = dir
self.encoding = encoding
@property
def config_data(self):
"""讀取yaml裡所有的内容"""
self.path = os.path.join(os.path.dirname(os.path.dirname(__file__)), dir, file) #傳回config.yaml的絕對路徑
if os.path.exists(self.path):
f = open(self.path, encoding=self.encoding)
data = yaml.load(f)
f.close()
return data
else:
print("請檢此路徑下的用例檔案不存在")
@property
def base_config(self):
'''
:return:
'''
return self.config_data.get('base_config').get(self.key)
@property
def base_url(self):
'''
:return:
'''
return self.config_data.get('base_url').get(self.key)
接下來就可以通過調用Config_yaml的屬性來通路yaml中的内容進行自動化腳本編寫,如:
self.token_key = ConfigYaml('token_key').base_config #可以擷取到yaml中的token
self.token_key = ConfigYaml('address').base_url #可以擷取到address位址