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 请求 ...
随机推荐
- spring boot集成redis的血泪史
首先说明环境不是我搭建的,然后因项目需要添加redis的时候,麻烦来了.springboot 用的是1.5.9因为以前弄过redis,所以直接拿过来,麻烦了首先是莫名的错误,连项目都启动不了.但是最后 ...
- 学院派福利——C#+SQL Server图书管理系统
这是sql server的第七.八次上机内容,抽了几天时间给做了 在原有的booksDB库中加了一个Admin表:UserName:root,PassWord:123456. 环境:Visual St ...
- VS Resharper正常代码显示红色处理
点击重启VS即可.
- Slash and BackSlash 记忆法
容易混淆的两兄弟 Slash https://en.wikipedia.org/wiki/Slash Slash (punctuation), the "/" punctuatio ...
- partial.js client-side routing(客户端路由-基于HTML5 SPA特性的历史API)
partial.js client-side routing https://github.com/petersirka/partial.js-clientside Framework support ...
- 使用js代码将HTML Table导出为Excel
使用js代码将HTML Table导出为Excel的方法: 直接上源码 <html> <head> <meta http-equiv="Content-Type ...
- luogu 2216 理想的正方形 单调队列(其实没有DP)
#include<bits/stdc++.h> using namespace std; ; ; int a,b,n; int g[A][A],q[A][N],Q[A][N]; int h ...
- 【Django】git建仓上传时遇到的小问题
根据教程 http://tutorial.djangogirls.org/zh/deploy/,在github上建仓上传项目文件. 执行到 git push -u origin master 时,输入 ...
- 基于Android 的蓝牙A2DP 功能的实现
摘 要:蓝牙(Bluetooth)技术是一种低成本的无线数据与数字通信的开放性全球规范. Android 是Google 于2007 年11 月5 日宣布的基于Linux平台开源手机操作系统名称,该平 ...
- list vector map set (转)
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...