python:实例化configparser模块读写配置文件

之前的博客介绍过利用python的configparser模块读写配置文件的基础用法,这篇博客,介绍下如何实例化,方便作为公共类调用。

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

 

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.1
username = TEST
password = test
dbname = Test
[HEADERS]
contentType = application/x-www-form-urlencoded
[HTTP]
url = https://baidu.com
login = https://github.com

 

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

可以将要访问的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")               # 搜狗urlself.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")                         # 百度URLself.loginURL =config.get("HTTP", "login")                   # github的URL
        
myconfig = MyConfig()

 

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

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

test_mobcode.py

# coding=utf-8
from selenium import webdriver
from readConfig import myconfig
from selenium.webdriver.common.by import By
import unittest,timeclass MobCodeTest(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome(myconfig.browerDriver) # 调用实例化后的浏览器驱动
        self.driver.maximize_window()self.url = myconfig.homedoUrl # 调用实例化后的请求urldef test_mobcode(self):driver = self.driverdriver.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、驱动路径等写入配置文件,而是直接写入脚本,那么脚本本身的维护成本将变得很大,而且可读性也并不好。

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

halcon 圆环类缺陷检测的一种方法(极坐标变换法)

目录简介极坐标变换定义原理Halcon中的极坐标变换1、polar_trans_image_ext算子用法与参数剖析2、polar_trans_region_inv算子用法与参数剖析圆环类缺陷检测思路与步骤Halcon实例实例简介程序解读思路剖析应用实例1项目介绍处理程序处理效果应用实例2项目介绍处理程序处理效果简…

linux的mount命令详解

linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着 linux系统的日渐成熟和稳定以及它开放源代码特有的优越性&…

cat命令

$ cat file 显示文件中的内容$ cat -n file 可以显示文件的内容和行号$ cat -b file -b与-n类似,但只标识非空白行的行号$ cat -e file 在每一行的末尾显示“$”字符,在需要将多行内容转换成一行时非常有用。$ cat 只是接收标准输入的内容并显示&#xf…

生成验证码的流程分析.

浏览器解析页面, 携带uuid向服务器发送请求获取图片, 服务器生成图片验证码, 返回图片本身给浏览器, 客户端根据图片输入验证码内容, 把输入的内容发送给服务器, 服务器对比输入的验证码是否正确.根据前端传入的uuid从redis中获取唯一图片验证码名称. 服务器: 图片, 图片内容…

Halcon图像增强方法与原理概述

目录简介Halcon算子与算法原理1.灰度线性变换a、scale_imageb、scale_image_maxc、invert_image2.灰度非线性变换a、log_imageb、exp_image3.图像增强对比度与照明度a、emphasizeb、illuminate4.直方图均衡化a、equ_histo_image5.灰度图像形态学a、 gray_openingb、gray_closin…

指针类型转换(转)

当我们初始化一个指针或给一个指针赋值时,赋值号的左边是一个指针,赋值号的右边是一个指针表达式。在我们前面所举的例子中,绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向…

143. Reorder List

Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do this in-place without altering the nodes values. For example,Given {1,2,3,4}, reorder it to {1,4,2,3}. public void ReorderList(ListNode head) {if(h…

Halcon图像滤波方法与原理概述

目录简介Halcon算子与算法原理基础滤波a、均值滤波b、中值滤波c、高斯滤波d、导向滤波简介 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和…

碎片化学习不是学习碎片,看这篇了解碎片化学习的真相

高效学习的定义:找到最适合自己的学习手法,在相对短的时间内集中注意力,以解决一个工作生活当中的难题为目的着手学习,你需要勤加练习,有时候还需要向名师求助。——许岑为什么会出现碎片化学习? 随着科技的…

一篇能加深理解linux 虚拟文件系统的博文

URL: http://asionius.com/article/9 https://www.ibm.com/developerworks/cn/linux/l-vfs/转载于:https://www.cnblogs.com/rocklee25/p/6926267.html

如何强制ffmpeg编码时输出一个关键帧

原文地址:http://www.ffmpeg.com.cn/index.php/%E5%A6%82%E4%BD%95%E5%BC%BA%E5%88%B6ffmpeg%E7%BC%96%E7%A0%81%E6%97%B6%E8%BE%93%E5%87%BA%E4%B8%80%E4%B8%AA%E5%85%B3%E9%94%AE%E5%B8%A7 如何强制ffmpeg编码时输出一个关键帧 AVCodecContext *c //编码器环境句…

Halcon深度学习环境搭建(win下)全网最全教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/cashmood/article/details/105042928 文章目录halcon深度学习介绍系统与环境搭建1、对电脑系统与硬件…

第二周进度及工作量统计

项目:词频统计修改 项目类型:个人项目 项目完成情况:已完成 项目改进:第二次改进 项目日期:2016.9.14----2.16.9.14 CCSEIT分析需求,设计15:2015:30010编码实现15:3016:20050文档程序说明,随笔2…

p1484 种树

传送门 题目 cyrcyr今天在种树,他在一条直线上挖了n个坑。这n个坑都可以种树,但为了保证每一棵树都有充足的养料,cyrcyr不会在相邻的两个坑中种树。而且由于cyrcyr的树种不够,他至多会种k棵树。假设cyrcyr有某种神能力&#xff0c…

Dalsa线扫相机SDK开发-小试牛刀(1)

拿到了dalsa相机,可以用Sapera软件配置相机,进行图像采集。但是自己开发的话就得撸起袖子写代码了,查了两篇不错的博文,作为指导。 Sapera帮助文档 - 《好好先生》专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/liubing8609/a…

用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的。这个的确是一个恼火的事情。我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到了这个问题。经过研究发现,FFMPEG SDK写入视频的时候有两个地方…

深度学习环境搭建(GPU)CUDA安装(完全版)

文章目录1、查询电脑硬件2、环境搭建与软件安装1、安装CUDA运算平台软件2、安装cuDNN支持包3、配置环境变量3、验证CUDA与cuDNN安装前几天在看深度学习。因为对深度学习不是很了解,在配置环境时走了许多弯路,也总是战战兢兢的。现在对深度学习的环境搭建…

Linux 中的文件压缩与解压

.tar tar xvf FileName.tar # 解压 tar cvf FileName.tar DirName # 压缩 .gz gunzip FileName.gz # 解压 gzip -d FileName.gz # 解压 gzip FileName # 压缩 .tar.gz 和 .tgz tar zxvf FileName.tar.gz # 解压 tar zcvf FileName.tar.gz DirName # 压缩 .bz2 bzip2 -d FileNam…

Unity3D游戏开发之自由视角下的角色控制

秦元培的博客:http://blog.csdn.net/qinyuanpei/article/details/39125353 1,[Unity3D]Unity3D游戏开发之角色控制漫谈 2,[Unity3D]Unity3D游戏开发之自由视角下的角色控制 3,[Unity3D]Unity3D游戏开发之仿仙剑奇侠传角色控制效果 转载于:h…

Pycharm用鼠标滚轮控制字体大小

一、pycharm字体放大的设置 File —> setting —> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双击) —> 在弹出的对话框中选择Add Mouse Shortcut 在弹出的对话框中同时按住ctrl键和鼠标滚轮向上滑。 二、…