引言
在編寫接口自動化測試腳本時,有時我們需要在代碼中定義變量並給變量固定的賦值。為了統一管理和操作這些固定的變量,咱們一般會將這些固定的變量以一定規則配置到指定的配置文件中,后續需要用到這些變量和變量值時通過代碼讀取或者寫入數據到該配置文件即可,使用配置文件的好處就是不用在程序中寫死,可以使程序更靈活。因而對於python語言就封裝了configparser模塊,用來處理指定格式的文件(文件名稱一般為xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一個或多個節(section), 每個節可以有多個參數(鍵=值)。
注:目前python3版本操作配置文件模塊名稱變更為configparser,原有的python2版本配置文件模塊名稱變更為ConfigParser
configparser模塊功能介紹
configparser模塊主要封裝提供了ConfigParser()類、RawConfigParser()類、SafeConfigParser()類等,如下圖導入configparser模塊,可以查看並使用模塊下已經封裝好的所有類
在configparser模塊中主要還是使用封裝的ConfigParser()類提供的方法來操作配置文件,對配置文件進行數據讀取和寫入等。
具體的該模塊python官網對其有完整的介紹:https://docs.python.org/3/library/configparser.html
配置文件的格式如下:
- 中括號“[ ]”內包含的為section。
-
section 下面為類似於key-value 的配置內容,一般是用賦值符“=”分隔。
示例:
讀取配置文件及其常用讀取指定數據方法
ConfigParser()類提供了操作讀取配置文件、讀取指定配置文件中section、section下的所有key-value等方法,具體方法使用如下:
代碼示例:
import configparser cf = configparser.ConfigParser() # 實例化 # read(filename) 讀取文件 filename = cf.read(r'G:\api_test\configfile.ini',encoding='utf-8') # sections() 得到所有的section,以列表形式返回 sec = cf.sections() print(sec) # 得到section下的所有option opt = cf.options("mysql") print(opt) # items 得到section的所有鍵值對 value = cf.items("mysql") print(value) print(dict(value)) # 轉成字典類型 # get(section,option) 得到section中的option值,返回string/int類型的結果 mysql_host = cf.get("mysql","host") mysql_password = cf.getint("mysql","port") print(mysql_host,mysql_password)
運行以上代碼輸出如下:
寫入配置文件(增刪改操作)及其提供的操作方法
ConfigParser()類提供了寫入修改配置文件數據等方法,具體方法使用如下:
在配置文件編輯如下信息:
編輯如下代碼:
import configparser conf = configparser.ConfigParser() conf.read(r'G:\api_test\configfile.ini',encoding='utf-8') conf.set("code", "code", "6666") # 修改指定section 的option conf.set("code", "age", "123") # 增加指定section 的option conf.has_section("code") conf.has_option("code","age") #conf.remove_section("test") #conf.remove_option("test","haha") if 'test' not in conf.sections(): conf.add_section("test") # 增加section conf.set("test", "haha", "123") # 給新增的section 寫入option file = open(r'G:\api_test\configfile.ini', 'w',encoding='utf-8') conf.write(file) file.close()
運行結束后如下:
編輯修改配置文件記得關閉配置文件。
通過以上使用ConfigParser()類提供讀寫配置文件的相關方法,就可以比較方便的操作配置文件。but,以上向配置文件讀取和寫入數據到配置文件的代碼,並沒有進行封裝。由於經常需要使用配置文件進行數據讀取和寫入,因此建議將操作配置文件讀寫的操作封裝成公共的模塊。如操作讀取配置文件的數據的封裝,配置文件內容如下:
新建read_config.py文件,封裝的讀取配置文件的代碼,實例如下:
import configparser import os class ReadConfig(): def __init__(self, filepath=None): root_dir = os.path.dirname(os.path.abspath('.')) # 獲取項目主路徑 # print("打印",root_dir) configpath = os.path.join(root_dir, "configfile.ini") # 拼接路徑 # print("得到的路徑為",configpath) self.cf = configparser.RawConfigParser() self.cf.read(configpath,encoding='utf-8') def get_cookie(self, param): value = self.cf.get("cookie", param) return value def get_sheet(self,param): value = self.cf.get("sheet",param) return value def get_mysql(self,param): value = self.cf.get("mysql",param) return value def get_code(self,param): value = self.cf.get("code",param) return value
這樣封裝成類后,后續其他模塊需要讀取配置文件數據,就可以不用重復寫讀取配置文件的代碼,直接引入該封裝的類,並實例化對象調用類里面封裝的方法即可。