- 在其他模块使用反射读取配置文件报错,但是在反射模块中读取GetData.check_list又是正确的

反射模块如下:

# get_data.py

from API_AUTO.p2p_project_7.tools import project_path
import pandas as pd
from API_AUTO.p2p_project_7.tools.read_config import ReadConfig class GetData:
Cookie = None
LoanId = None
check_list = eval(ReadConfig.get_config(project_path.case_config_path, "CHECK_LEAVE_AMOUNT", "check_list"))
AddTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[0, 0]
NormalTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[1, 0]
AdminTel = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[2, 0]
LoanMemberId = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[3, 0]
MemberID = pd.read_excel(project_path.test_case_path, sheet_name="init").iloc[4, 0] print(GetData.AdminTel)
print(GetData.check_list) # df = pd.read_excel(project_path.test_case_path, sheet_name="phone")
# print(df.iloc[0, 0]) # 获取phone表单中的A1单元格的值

- 方法1:不使用反射,直接导入读取配置文件模块,直接读取

import configparser

"""
通过读取配置文件,来执行相应的测试用例
配置文件分为2个部分
第一部分:[SECTION],必须使用[]
第二部分:option=value 键值对形式存储
""" cf = configparser.ConfigParser()
# 打开配置文件,传入文件名和编码格式
cf.read("case.config", encoding="utf-8") # 方法1取值
# 读取配置文件的数据,传入section和option的值
# res_1 = cf.get("MODE", "mode")
# print(res_1) # 方法2取值,类似字典
# res_2 = cf["MODE"]["mode"]
# print(res_2) # 读取所有SECTION,结果是列表
# print(cf.sections(), type(cf.sections())) # 读取某一分区下的数据,结果是列表,section中的键值对放在了元组中
# print(cf.items("DREAM")) # 配置文件中的value,无论是数字还是列表或其他类型,读取出来后都是字符串类型
# 通过eval去掉引号,转换为原来的数据
age = cf.get("PERSON", "age")
print(age, type(age)) name = cf["PERSON"]["name"]
print(name, type(name)) favorite = cf.get("PERSON", "favorite")
print(favorite, type(favorite))

  

- 结果:仍然报错,原因是执行了引用模块中的代码, 在引用模块中的print(Get.check_list)语句, 在这里执行了所以报错

A模块中有print语句a【a没有放在main下面】,B调用A时,也会执行a, 或者B只是引用了A模块,并没有调用其中的函数,也会执行a

 

- 将上述代码注释掉就可以正常执行了

方法2:找到出错原因,进行修改

使用反射出错的原因是反射中有读取配置文件的代码,读取配置文件时要有文件的路径,在project_path中读取目录时没有使用绝对路径导致在其他模块引用反射时出错了,改成通过 os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]   获取路径就OK了

python读取配置文件报keyerror-文件路径不正确导致的错误的更多相关文章

  1. python 读取mysql存储的文件路径下载文件,内容解析,上传七牛云,内容入es

    #!/usr/bin/env python # -*- coding: utf-8 -*- import ConfigParser import json import os import re fr ...

  2. C# ASP JS引用路径不正确导致的错误

    假设JS包放在根目录下的Scripts文件夹下 当前页的路径在另一个文件夹下,那么他引用JS应该:<script src="../Scripts/jquery-1.4.1.min.js ...

  3. python 读取配置文件总是报错 configparser.NoSectionError: No section:

    本文为作者原创,禁止转载,违者必究法律责任!!! python 读取配置文件总是报错 configparser.NoSectionError: No section: 无论是 python2的版本,还 ...

  4. python读取配置文件的方式

    python读取配置文件的方式 1.从config.ini中读取,后缀无所谓,文件名字也无所谓,不过config.ini是常用写法,所谓见名知意 config.ini内容: [global] ip = ...

  5. ServletContext 接口读取配置文件要注意的路径问题

    在建立一个maven项目时,我们通常把一些文件直接放在resource下面,在ServletContext中有getResource(String path)和getResourceAsStream( ...

  6. python读取txt批量创建文件

    python读取txt批量创建文件 pythonbatchfile 前几天有个小问题, 需要批量建立很多文件夹,, 所以手动写了个小的脚本, 后续可以直接使用 读取目录文件, 然后直接创建相应的文件 ...

  7. //读取配置文件(属性文件)的工具类-ConfigManager

    package com.pb.news.util; import java.io.IOException;import java.io.InputStream;import java.sql.Resu ...

  8. python读取配置文件(ini、yaml、xml)

    python读取配置文件(ini.yaml.xml)  

  9. configparser读取配置文件时的相对路径问题

    学习接口测试时,当我把配置文件xx.config和读取配置文件的模块read_config.py放在项目下的同一个包config里时,只需传入文件名xx.config即可实现对配置文件的读取. 但是当 ...

随机推荐

  1. git配置报错fatal: Authentication failed for ''问题解决

    如果在git配置中报错fatal: Authentication failed for '',其实就是凭证失败的意思 接着输入一下命令行没有出现要求输入用户名或密码,并报错 $ git config ...

  2. webgis笔记

    3.8(02) .特点:由服务端进行数据管理 开源的GO sever WMS/WCS/WTS 1sever/2engine/3database/4standard 扩展的空间数据库,存矢量.栅格.直接 ...

  3. Java基础三(2020.1.15)

    学习内容: 1.Java流程控制之循环结构 2.Java数组 3.Java方法 1.随机数:math.random()得到0-1之间的数     math.random()*10+1得到1-10之间的 ...

  4. JavaSE--对象克隆

    当拷贝一个变量时,原始变量与拷贝变量引用同一个对象,这就是说,改变一个变量所引用的对象将会对另一个变量产生影响. 如果创建一个对象的新的 copy,他的最初状态与 original 一样,但以后将可以 ...

  5. #JS# 如何判断一个字符串是否为日期格式

    var data = “2018-12-09”; //返回为false则是日期格式;isNaN(data)排除data为纯数字的情况(此处不考虑只有年份的日期,如‘2018’) if(isNaN(da ...

  6. IDEA 安装破解

    打开IntelliJ IDEA的官网. https://www.jetbrains.com/idea/download/#section=windows 开始安装吧!傻瓜式安装,不多说 激活      ...

  7. 注册服务和发现服务 Eureka

    来自蚂蚁课堂: 注册服务和发现服务 1.原理如图: 注册中心负载均衡: 实践 注册中心 集群:

  8. GPS坐标与百度坐标转换

    百度对外接口的坐标系,都是经过国家测绘局加密处理,符合国家测绘局对地理信息保密要求. 国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ- 02,对地理位置进行首次加密.百度坐标在此 ...

  9. 吴裕雄--天生自然运维技术:LMT

    LMT,Local Maintenance Terminal的缩写,意思是本地维护终端.LMT是一个逻辑概念.LMT连接到RNC外网,提供NODE B操作维护的用户界面. LMT也是许可证管理技术Li ...

  10. Kafa 的安装配置及使用

    1.kafka 的简介及应用场景 Apache Kafka是一个分布式的消息系统,可用于统计,日志及流处理 2.kafka 基本原理 3.kafka 集群体系结构 4.kafka实例 https:// ...