python3+requests库框架设计04-配置文件
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块
配置文件一般存放着环境信息,比如url和一些测试过程中后续需要用到的字段。还有测试中需要导入,导出的一些文件。在项目下新建Config文件夹,文件夹下新建config,ini文件。项目结构如下
实际项目接口测试中,接口url前面很大一部分都是相同的,只有后面一小部分是不同的,那可以把相同部分放在配置文件中,这样就可以通过配置文件去控制,想要测试 测试环境 还是 生产环境。
那我们就需要对配置文件的增删改查进行封装
在Common文件夹下,对Base_test.py文件添加全局变量
path = getcwd.get_cwd()
config_path = os.path.join(path, 'Config/config.ini')
上面代码是为了提供配置文件的路径,接下来是封装配置的文件的增删改查
def config_get(self,section,key,url=None):
'''读取配置文件字段的值并返回'''
config = configparser.ConfigParser()
config.read(config_path,encoding="utf-8-sig")
if key =='url':
config_url = config.get(section,key)
url = config_url+url
log1.info("请求的url:%s" % url)
return url
else:
config_get = config.get(section,key)
return config_get def config_write(self,section,key = None,value = None):
'''往配置文件写入键值'''
config = configparser.ConfigParser()
config.read(config_path,encoding="utf-8-sig")
if key is not None and value is not None:
config.set(section,key,value)
with open(config_path,'w',encoding='utf-8')as f :
config.write(f)
else:
config.add_section(section)
with open(config_path,'w',encoding='utf-8')as f :
config.write(f) def config_delete(self,section,key = None):
'''删除配置文件字段'''
config = configparser.ConfigParser()
config.read(config_path,encoding="utf-8-sig")
if key is not None :
config.remove_option(section,key)
with open(config_path,'w',encoding='utf-8')as f :
config.write(f)
else:
config.remove_section(section)
with open(config_path,'w',encoding='utf-8')as f :
config.write(f)
并没有加日志,有需要的可以自己加,中间encoding都是防止对配置文件进行中文的操作,不加这些会报错的。那接下来测试一下看看
from Common.Base_test import webrequests
from Logs.log import log1 section = 'login'
username = '测试'
password = '一下' s = webrequests() s.config_write(section)
log1.info("写入section:%s" % section)
s.config_write(section,'username',username)
log1.info("写入%s下的用户名是:%s" %(section,username))
s.config_write(section,'password',password)
log1.info("写入%s下的密码是:%s" %(section,password)) url = s.config_get('test','url',url='test/test1')
get_username = s.config_get(section,'username')
log1.info("读取的用户名:%s" % get_username)
get_password = s.config_get(section,'password')
log1.info("读取的密码:%s" % get_password) s.config_delete(section,'usrename',)
log1.info("删除%s下的username" % section)
s.config_delete(section,'password')
log1.info("删除%s下的password" % section)
s.config_delete(section)
log1.info("删除%s" % section)
可以先写,再读,最后删除,把操作分开,看控制台输出和配置文件中的变化会更加直观。我这里懒得一步步截图了
python3+requests库框架设计04-配置文件的更多相关文章
- python3+requests库框架设计01-自动化测试框架需要什么?
什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...
- python3+requests库框架设计08-发送邮件
使用python3的email模块和smtplib模块可以实现发送邮件的动能.email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并 ...
- python3+requests库框架设计03-请求重新封装
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下. 具体怎么封装还是要看被测 ...
- python3+requests库框架设计06-测试脚本
在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件 把配置文件改成这样 url:http ...
- python3+requests库框架设计05-unittest单元测试框架
unittest单元测试框架,主要由四部分组成:测试固件.测试用例.测试套件.测试执行器 测试固件(test fixture) 测试固件有两部分,执行测试前的准备部分setUp(),测试执行完后的清扫 ...
- python3+requests库框架设计02-封装日志类
首先我们先来实现日志的功能,日志可以使用python3自带logging模块,不会的可以百度一下相关文章,也可以看我另外一篇文章Python3学习笔记24-logging模块 在封装日志类前,我们需要 ...
- python3+requests库框架设计07-生成测试报告
使用HTMLTestRunner可以生成测试报告.HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址.下载之 ...
- 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章 STM32H7的HAL库框架设计学 ...
- python3 requests库学习笔记(MOOC网)
奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...
随机推荐
- jquery validate 详解二
原文:http://blog.sina.com.cn/s/blog_608475eb0100h3h2.html 这里只是第二篇,前面的内容请参阅上一篇 五.常用方法及注意问题 1.用其他方式替代默认的 ...
- JQuery1.72中二个Bug,formhtml()方法与clone()方法的二个Bug进行重写
//扩展方法$.formhtml,解决firefox中html()方法得不到修改input值后的html代码(function ($) { var oldHTML = $.fn.html; ...
- HDU 1038(速度里程计算 **)
题意是已知车轮的直径,圈数和时间,求所行驶的里程和速度. 单位换算,代码如下: #include <bits/stdc++.h> using namespace std; const do ...
- c++后台开发路线
- .net程序集
单程序集 多个.dll或exe 文件 多程序集 单个.dll或exe 文件 单程序集 是一个单一 独立明确定义的包,这个包中包含有程序集清单,CIL和类型元数据 多程序集程序集基本由二进制文件组成(称 ...
- springBoot中实现自定义属性配置、实现异步调用、多环境配置
springBoot中其他相关: 1:springBoot中自定义参数: 1-1.自定义属性配置: 在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性 ...
- python位运算
什么是位运算 位运算就是把数字当成二进制来进行计算,位运算有六种:&(与), |(或), ^(异或), ~(非), <<(左移), >>(右移) &(与) &a ...
- 用python实现单向链表
单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 表元素域ele ...
- C#数据库发布与连接
1. 打开相关的服务 在控制面板,打开或关闭Windows特性里面,启动相关的ASP.NET相关服务,并启用IIS Manager 2. 发布应用 3. 添加应用 在Administer tools里 ...
- C JAVA你可能不知道的那些编程细节
关于printf的格式化字符 %* *与其它占位符结合使用, *将首先被一个 int 变量值代替后再被格式化. 如 printf("%.*s.", 2, "Hello&q ...