以前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便做为公共类调用。html
实例化的好处有不少,既方便调用,又下降了脚本的维护成本,并且提升了代码的可读性。。。python
一、配置文件git
configparser模块支持读取.conf和.ini等类型的文件,在文件夹新建一个.ini文件,写入一些信息,示例以下:github
config.iniweb
[driver]
chromedriver = E:\automation\UI\Testcase\browser\chromedriver.exe
[homepage]
url = https://www.sougou.com/
[signup]
name = E:\automation\UI\Testdata\signup-data.csv
[login]
name = E:\automation\UI\Testdata\login-data.csv
[sign_user]
name = E:\automation\UI\Testdata\sign_user.csv
[sign_mobile]
name = E:\automation\UI\Testdata\sign_mobile.csv
[sign_pwd]
name = E:\automation\UI\Testdata\sign_pwd.csv
[vip_user]
name = E:\automation\UI\Testdata\vip_user.csv
[serach]
name = E:\automation\UI\Testdata\search.csv
[DATABASE]
host = 10.0.0.1
username = TEST
password = test
dbname = Test
[HEADERS]
contentType = application/x-www-form-urlencoded
[HTTP]
url = https://baidu.com
login = https://github.com
二、configparser读取配置信息并实例化chrome
能够将要访问的url地址、读取的数据文件路径、数据库信息等写入配置文件,而后利用configparser模块读取,而后实例化,示例代码以下:数据库
readConfig.py浏览器
# coding=utf-8
import os from configparser import ConfigParser # 获取绝对路径
BASE_DIR = os.path.dirname(__file__) CONFIG_FILE_PATH = os.path.join(BASE_DIR, "config.ini") # 配置文件名称
class MyConfig: def __init__(self): config = ConfigParser() config.read(CONFIG_FILE_PATH) self.browerDriver = config.get("driver", "chromedriver") # 浏览器驱动
self.homedoUrl = config.get("homepage", "url") # 搜狗url
self.signupData = config.get("signup","name") # 用户注册测试数据
self.loginData = config.get("login","name") # 用户登陆测试数据
self.signUser = config.get("sign_user","name") # 注册用户数据
self.signMobile = config.get("sign_mobile","name") # 注册用户手机号码
self.signPwd = config.get("sign_pwd","name") # 注册用户密码
self.vipUser = config.get("vip_user","name") # 生产白名单测试帐号
self.search = config.get("serach","name") # 搜索数据
self.contentType = config.get("HEADERS", "contentType") # 请求头链接类型
self.URL = config.get("HTTP", "url") # 百度URL
self.loginURL =config.get("HTTP", "login") # github的URL
myconfig = MyConfig()
三、调用实例化的配置信息app
将咱们须要的信息实例化后封装,在须要的时候,直接调用便可,示例代码(测试手机验证码)以下:测试
test_mobcode.py
# coding=utf-8
from selenium import webdriver from readConfig import myconfig from selenium.webdriver.common.by import By import unittest,time class MobCodeTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(myconfig.browerDriver) # 调用实例化后的浏览器驱动
self.driver.maximize_window() self.url = myconfig.homedoUrl # 调用实例化后的请求url
def test_mobcode(self): driver = self.driver driver.get(self.url) driver.implicitly_wait(3) driver.find_element_by_link_text("免费注册").click() driver.find_element_by_id("txtMobileCode").send_keys("1234") driver.find_element_by_class_name("login-btn").click() # 定位报错提示元素并断言,打印出来
error = driver.find_element_by_xpath("//*[@id=\"loginForm\"]/div/dl[2]/dd/p") print(error.text) self.assertIsNotNone(error.text) def tearDown(self): self.driver.close() suite = unittest.TestSuite() suite.addTest(MobCodeTest("test_mobcode")) runner = unittest.TextTestRunner() runner.run(suite)
能够想象,若是不将url、驱动路径等写入配置文件,而是直接写入脚本,那么脚本自己的维护成本将变得很大,并且可读性也并很差。
对于自动化测试动辄几十上百条测试用例来讲,这将是一场灾难。。。
以上内容仅供参考,其中某些敏感信息已经脱敏,望理解。。。