接口自动化测试 --- 将登录接口返回的ed_token值写入.ini配置文件

个人笔记~~~   看最后

代码:

import requests
import configparser

config = configparser.ConfigParser()
# 读取配置文件中目标环境的地址
config.read_file(open('../AutoConfig/config.ini'))
ip = config.get("alpha","url")
# 定义一个空列表
list = []
# 读取配置文件中所有分组名称
list = config.sections()

def login_s2(self,username,password):
    url = ip + "/xxx/xxx"
    json_file = {"username":username, "pwd":password}
    rtn = requests.post(url, json = json_file)
    result = rtn.json()
    if result['message'] == "请求成功":
        # 查看列表中是否含有alpha分组
        if 'alpha' not in list:
            # 没有的话将创建alpha分组
            config.add_section('alpha')
            # 将token值写入配置文件
            config.set('alpha', 'ed_token', str(rtn.json()['data']['ed_token']))
            config.write(open('../AutoConfig/config.ini', 'w'))
        else:
            config.set('alpha', 'ed_token', str(rtn.json()['data']['ed_token']))
            config.write(open('../AutoConfig/config.ini', 'w'))
        return True
    else:
        return False

上面的方法存在一个问题,就是已经存在‘alpha’分组,并且分组下已经有‘ed_token’值后,再次执行登录接口无法将新的ed_token写入,解决方法:将已有的ed_token删除再重新写入,在写入代码之前添加条件判断即可。

#判断配置文件中是否已存在ed_token
if config.has_option('alpha','ed_token'):
    #删除ed_token
    config.remove_option('alpha','ed_token')
    config.write(open('../AutoConfig/config.ini', 'w'))
    #重新写入ed_token
    config.set('alpha', 'ed_token', str(rtn.json()['data']['ed_token']))
    config.write(open('../AutoConfig/config.ini', 'w'))

这样的话就不用每次执行代码前去配置文件中删除一次ed_token啦!!!

 

更新~~~:

项目重构后,又重新写过一次,发现之前的写法,有些条件判断是真的多余!!!其实不用去判断配置文件里是不是存在某个分组,分组里是不是存在目标值(创建配置文件的时候就可以直接把需要存的值确定好呀~后面只需要直接更新就好!!!)

关于多次执行如何修改已存在的值也有更简便的方法(之前咋个不多百度一下呢?)

就两句代码: (哈哈哈,之前只知道可以删和写,没有找到改,r+是改)

config.set('login', 'ed_token_S2', str(value[1]['token']))
config.write(open('../Config/config.ini', 'r+'))

另:中间遇到过一个问题,同时打开了多个config文件,在最后向某一个目标文件(最后打开的那个config文件)存值时会把其他文件中的值全都写到该文件中(目前还没有想到咋个解决,嗯,暂时只好用一个配置文件分不同的组了~~~)

你可能感兴趣的:(自动化测试)