selenium+python自動化測試--讀取配置文件(.ini)


前言:今天為什么要整理讀取配置文件呢?原因是:公司正在做的項目,操作頁面時都是根據路由跳轉,由於自己經驗尚淺,將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地址,只需在配置文件中修改就好了,是不是方便多了~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM