天天看點

python自動化1-讀取yaml檔案

        在做自動化測試的時候,經常會有一些配置檔案(如: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位址