博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python:实例化configparser模块读写配置文件
阅读量:5092 次
发布时间:2019-06-13

本文共 3456 字,大约阅读时间需要 11 分钟。

之前的博客介绍过的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用。

实例化的好处有很多,既方便调用,又降低了脚本的维护成本,而且提高了代码的可读性。。。

 

1、配置文件

configparser模块支持读取.conf和.ini等类型的文件,在文件夹新建一个.ini文件,写入一些信息,示例如下:

config.ini

[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.1username = TESTpassword = testdbname = Test[HEADERS]contentType = application/x-www-form-urlencoded[HTTP]url = https://baidu.comlogin = https://github.com

 

2、configparser读取配置信息并实例化

可以将要访问的url地址、读取的数据文件路径、数据库信息等写入配置文件,然后利用configparser模块读取,然后实例化,示例代码如下:

readConfig.py

# coding=utf-8import osfrom 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()

 

3、调用实例化的配置信息

将我们需要的信息实例化后封装,在需要的时候,直接调用即可,示例代码(测试手机验证码)如下:

test_mobcode.py

# coding=utf-8from selenium import webdriverfrom readConfig import myconfigfrom selenium.webdriver.common.by import Byimport unittest,timeclass 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、驱动路径等写入配置文件,而是直接写入脚本,那么脚本本身的维护成本将变得很大,而且可读性也并不好。

对于自动化测试动辄几十上百条测试用例来说,这将是一场灾难。。。

以上内容仅供参考,其中某些敏感信息已经脱敏,望理解。。。

 

转载于:https://www.cnblogs.com/imyalost/p/9125872.html

你可能感兴趣的文章
spss clementine Twostep Cluster(两步聚类 二阶聚类)
查看>>
如何实现大数据系统
查看>>
python 面试题之 生成器
查看>>
CH24C 逃不掉的路
查看>>
C# 获取文件路径
查看>>
探讨PHP页面跳转几种实现技巧
查看>>
排序比赛的回顾
查看>>
RT-Thread 4.0 + STM32F407 学习笔记1
查看>>
android 学习十四 探索安全性和权限
查看>>
linux下直接复制文件内容到剪切板
查看>>
php四种基础算法:冒泡,选择,插入和快速排序法PHP基础教程
查看>>
HDU 5475An easy problem 离线set/线段树
查看>>
C/C++语法知识点汇总
查看>>
【SAS BASE】SAS函数
查看>>
MySQL存储引擎
查看>>
jqgrid 使用小记——与springboot jpa 一起使用的分页,翻页。(使用springboot jpa 原生的分页)...
查看>>
cocos2d-x将背景色改为白色
查看>>
LeetCode:208. 实现 Trie (前缀树)
查看>>
OSCP Learning Notes - Exploit(8)
查看>>
Python学习之路-22 (面向对象特殊成员)
查看>>