Python +Selenium 支持多項目集中配置文件管理Yaml

在自動化測試項目管理經常會遇到2個問題:
    1.我手頭上有多個需要做自動化的項目,我每個項目都要新建一個項目文件嗎?
    2.一些基礎的配置信息如何高效的進行管理?

             爭對這2個問題,這邊採用了Yaml  進行配置文件的一個管理:YAML 是一種簡潔的非標記語言。YAML以數據爲中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔易讀。           

基本規則

YAML有以下基本規則: 
1、大小寫敏感 
2、使用縮進表示層級關係 
3、禁止使用tab縮進,只能使用空格鍵 
4、縮進長度沒有限制,只要元素對齊就表示這些元素屬於一個層級。 
5、使用#表示註釋 
6、字符串可以不用引號標註

  其他具體的語法需要大家百度一下下了!我們直接上源碼!

給個文件試例:如圖右3個項目配置文件(apk;cm,gf),一個整體配置文件

讀取文件源碼:(file_reader.py)裏面還可以放入其它文件類型的讀取方法(後話)

""
文件讀取。YamlReader讀取yaml文件
"""
import yaml
import os
from xlrd import open_workbook


class YamlReader:
    def __init__(self, yamlf):
        if os.path.exists(yamlf):
            self.yamlf = yamlf
        else:
            raise FileNotFoundError('文件不存在!')
        self._data = None

    @property
    def data(self):
        # 如果是第一次調用data,讀取yaml文檔,否則直接返回之前保存的數據
        if not self._data:
            with open(self.yamlf, 'rb') as f:
                self._data = list(yaml.safe_load_all(f))  # load後是個generator,用list組織成列表
        return self._data

之後就是我們不同的調用了:(config.py)

"""
讀取配置。這裏配置文件用的yaml,也可用其他如XML,INI等,需在file_reader中添加相應的Reader進行處理。
"""
import os
from util_s.file_reader import YamlReader

# 通過當前文件的絕對路徑,其父級目錄一定是框架的base目錄,然後確定各層的絕對路徑。如果你的結構不同,可自行修改。
# 之前直接拼接的路徑,修改了一下,用現在下面這種方法,可以支持linux和windows等不同的平臺,也建議大家多用os.path.split()和os.path.join(),不要直接+'\\xxx\\ss'這樣
BASE_PATH = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0]
CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'config.yml')
GF_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'gf_config.yml')
CM_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'cm_config.yml')
APK_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'apk_config.yml')


class Config:
    def __init__(self, config=""):
        if config == "gf":
            self.config = YamlReader(GF_CONFIG_FILE).data
        if config == "cm":
            self.config = YamlReader(CM_CONFIG_FILE).data
        if config == "apk":
            self.config = YamlReader(APK_CONFIG_FILE).data
        else:
            self.config = YamlReader(CONFIG_FILE).data

    def get(self, element, index=0):
        """
        yaml是可以通過'---'分節的。用YamlReader讀取返回的是一個list,第一項是默認的節,如果有多個節,可以傳入index來獲取。
        這樣我們其實可以把框架相關的配置放在默認節,其他的關於項目的配置放在其他節中。可以在框架中實現多個項目的測試。
        """
        return self.config[index].get(element)

最後就是每次使用的方法啦!(在其他郵件相關文章中有用到)

from util_s.config import Config

config = Config("gf")
mail_host = config.get("mail_host")
my_sender = config.get("my_sender")  # 發件人郵箱賬號
my_pass = config.get("my_pass")  # 發件人郵箱密碼
my_user = config.get("my_user")  # 收件人郵箱賬號,我這邊發送給自己

具體Yaml 文件內容貼圖一個

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章