1. 程式人生 > 程式設計 >解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

1、問題現象:

解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

2、解決辦法:

editor的字型設定為DialogInput

解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

補充知識:Python +Selenium 支援多專案集中配置檔案管理Yaml

在自動化測試專案管理經常會遇到2個問題:

1.我手頭上有多個需要做自動化的專案,我每個專案都要新建一個專案檔案嗎?

2.一些基礎的配置資訊如何高效的進行管理?

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

基本規則

YAML有以下基本規則:

1、大小寫敏感

2、使用縮排表示層級關係

3、禁止使用tab縮排,只能使用空格鍵

4、縮排長度沒有限制,只要元素對齊就表示這些元素屬於一個層級。

5、使用#表示註釋

6、字串可以不用引號標註

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

給個檔案試例:如圖右3個專案配置檔案(apk;cm,gf),一個整體配置檔案

解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

讀取檔案原始碼:(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,'gf_config.yml')
CM_CONFIG_FILE = os.path.join(BASE_PATH,'cm_config.yml')
APK_CONFIG_FILE = os.path.join(BASE_PATH,'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 檔案內容貼圖一個

解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題

以上這篇解決pycharm編輯區顯示yaml檔案層級結構遇中文亂碼問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。