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-配置文件的更多相关文章

  1. python3+requests库框架设计01-自动化测试框架需要什么?

    什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...

  2. python3+requests库框架设计08-发送邮件

    使用python3的email模块和smtplib模块可以实现发送邮件的动能.email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并 ...

  3. python3+requests库框架设计03-请求重新封装

    在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下. 具体怎么封装还是要看被测 ...

  4. python3+requests库框架设计06-测试脚本

    在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件 把配置文件改成这样 url:http ...

  5. python3+requests库框架设计05-unittest单元测试框架

    unittest单元测试框架,主要由四部分组成:测试固件.测试用例.测试套件.测试执行器 测试固件(test fixture) 测试固件有两部分,执行测试前的准备部分setUp(),测试执行完后的清扫 ...

  6. python3+requests库框架设计02-封装日志类

    首先我们先来实现日志的功能,日志可以使用python3自带logging模块,不会的可以百度一下相关文章,也可以看我另外一篇文章Python3学习笔记24-logging模块 在封装日志类前,我们需要 ...

  7. python3+requests库框架设计07-生成测试报告

    使用HTMLTestRunner可以生成测试报告.HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址.下载之 ...

  8. 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章       STM32H7的HAL库框架设计学 ...

  9. python3 requests库学习笔记(MOOC网)

    奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...

随机推荐

  1. Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio”

      Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio” 作者:尹正杰 版权声明:原创作品,谢绝转载 ...

  2. C# 主动发起请求代码

    本文用于写代码是给提示 private string GetHW(string uri) { string returnStr = ""; HttpWebRequest hwReq ...

  3. Kafka技术内幕 读书笔记之(五) 协调者——延迟的加入组操作

      协调者处理不同消费者的“加入组请求”,由于不能立即返回“加入组响应”给每个消费者,它会创建一个“延迟操作”,表示协调者会延迟发送“加入组响应”给消费者 . 但协调者不会为每个消费者的 “加入组请求 ...

  4. Trailing slash

    Trailing Slash common case It's common for URLs with a trailing slash to indicate a directory, and t ...

  5. css 动画【转】

    css 动画 http://www.w3school.com.cn/css3/css3_animation.asp

  6. Golang入门教程(十三)延迟函数defer详解

    前言 大家都知道go语言的defer功能很强大,对于资源管理非常方便,但是如果没用好,也会有陷阱哦.Go 语言中延迟函数 defer 充当着 try...catch 的重任,使用起来也非常简便,然而在 ...

  7. vue 移动端日期选择组件 vue-mobile-calendar

    vue-mobile-calendar cnpm install vue-mobile-calendar -S import Vue from 'vue' import Calendar from ' ...

  8. ImageView获取宽高

    在Android里放置一个ImageView im1,宽和高都是200.以下代码都是直接在OnCreate里使用. 1.在Android OnCreate里如果直接使用iv.GetWidth()返回值 ...

  9. Newtonsoft.Json 的基本用法

    Ø  前言 说起 C# 对 JSON 的操作(序列化与反序列化),大家都会想到 JavaScriptSerializer.DataContractJsonSerializer 与 Newtonsoft ...

  10. termios.h(FreeBSD 12.0)

    一.文件位置 /usr/include/termios.h 二.文件内容 /*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 1 ...