前言:今天為什么要整理讀取配置文件呢?原因是:公司正在做的項目,操作頁面時都是根據路由跳轉,由於自己經驗尚淺,將url地址寫在每個用例中,導致每次開發一更改路由,我就要去每個頁面中修改url地址,光來來回回找頁面就很費時間,所以就想到了用配置文件,將所有url地址放在一個文件中,頁面用到哪個時讀取哪個。
一、基礎了解
ini
ini配置文件格式如下:
;這里是注釋 [section0] key0 = value0 key1 = value1 [section1] key2 = value2 key3 = value3
section不能重復,里面數據通過section去查找,每個seletion下可以有多個key和vlaue的鍵值對,注釋用英文分號(;)
configparser
通過python3里面自帶configparser模塊來讀取ini文件。
# python3
import configParser
如果注釋里面有中文的話,這里代碼跟python2是有點區別的,python2里面直接conf.read(cfgpath)就可以了,python3需要加個參數:encoding="utf-8"
conf.read(cfgpath, encoding="utf-8")
二、代碼編寫
分別在common文件夾下新建配置文件:config.ini 和 讀取配置文件:readConf.py ,然后編寫代碼...
1、配置文件 :config.ini
配置文件中按照功能模塊分為 risk 、rule 、term ;其下的url地址分別代表該模塊下某個功能點的url
[risk] ;新建風險 url0 = www.baidu.com ;新建風險目錄、導入風險模板 url1 = xxxx [rule] ;新建制度目錄 url1 = xxxxx ;制度審批任務模板 url2 = xxxxxxx [term] ;新建術語 url1 = xxxxxx ;新建術語目錄 url2 = xxxxxx
2、讀取配置文件 :readConf.py 以下是封裝好的讀取配置文件的方法
import configparser import os class ReadConf(): def __init__(self): curpath = os.path.dirname(os.path.relpath(__file__)) #獲取配置文件路徑
cfgpath = os.path.join(curpath, "config.ini") # 創建管理對象
self.conf = configparser.ConfigParser() # 讀ini文件
self.conf.read(cfgpath, encoding="utf-8") def readConf(self,param): #獲取所有的section
# sections = self.conf.sections()
# print(sections)
#獲取某個sections中的所有值,將其轉化為字典
items = dict(self.conf.items(param)) return items if __name__ == '__main__': test = ReadConf() t = test.readConf("risk") #傳入sections的值
print('我取某個sections下所有值 ',t) print(t['url1'])
3、用例編寫
優化前代碼:
import unittest from pages.risk.createRisk import CreateRisk from selenium import webdriver import time base_url = "xxxx"
class TestCreateRisk(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.maximize_window() cls.risk = CreateRisk(cls.driver) def setUp(self): self.driver.get(base_url) def tearDown(self): self.driver.delete_all_cookies() @classmethod def tearDownClass(cls): cls.driver.quit() def test_create_risk(self): '''新建風險點''' random = self.risk.get_random_chinese() self.risk.createRisk(random) time.sleep(3) if __name__ == '__main__': unittest.main()
優化后代碼:
import unittest from pages.risk.createRisk import CreateRisk from selenium import webdriver from common.readConf import ReadConf import time class TestCreateRisk(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.maximize_window() cls.risk = CreateRisk(cls.driver) # 讀取配置文件,傳入sections值,
cls.url = ReadConf() cls.standard_url = cls.url.readConf('risk') #這里傳入risk模塊
# 獲取配置文件中的url
cls.base_url = cls.standard_url['url0'] #這里傳入risk模塊中新建風險的url
print(cls.base_url) def setUp(self): self.driver.get(self.base_url) def tearDown(self): self.driver.delete_all_cookies() @classmethod def tearDownClass(cls): cls.driver.quit() def test_create_risk(self): '''新建風險點''' random = self.risk.get_random_chinese() self.risk.createRisk(random) time.sleep(3) if __name__ == '__main__': unittest.main()
經過修改后,每次更新url地址,只需在配置文件中修改就好了,是不是方便多了~~