原标题:常见的python问题解决思路
背景
日常项目中,在使用python优化测试工具时,小编遇到了一些较常见的问题,现借此机会和大家分享下这些问题及相关的处理思路。
问题分享
问题1:解决特定接口无法通过IP直接访问的问题
问题场景
在进行接口测试时,需要分别验证测试环境、待上线环境、线上环境的生效性,但接口无法通过测试IP访问,只能通过特定域名来访问。
处理思路
通过设置代理的方式,在get/post中请求时设置host值。
实例展示
#headersData的作用是设置代理,测试环境为 ip,直接访问 ip不可以,需要通过特定域名访问url
headersData= {
"Host": "www.testupdate.com"
}
知识扩展
使用python进行模拟get/post请求时,也可以设置其他的headers;例如Content-Type、User-Agent、Cookie等。
headersData ={
'User-Agent': 'Mozilla/ 5.0(Windows NT 10.0;WOW64)AppleWebKit/ 537.36(KHTML,like Gecko)Chrome/ 85.0. 4183.83Safari/ 537.36',
'Content- Type': "application/json",
}
问题2:解决如何记录不同级别日志的问题
问题场景
在python脚本调试及使用过程中,为了方便查看及定位问题,需要增加一些不同级别的日志。
处理思路
使用python的logging模块进行日志记录。
实例展示
#方便调试
logging. debug( "This is a debug log.")
#提供给执行人员的提示信息
logging.info( "This is a info log.")
#错误提示
logging. error( "This is a error log.")
知识扩展
Logging输出特定格式的日志样式(时间+日志级别+输出信息)。
# level=loggin.DEBUG代表只有日志级别等于或者高于DEBUG时才会被记录(日志级别:DEBUG
logging.basicConfig(format='%(asctime) s%(levelname) s%(message) s',datefmt=' %m/ %d/ %Y%I: %M: %S',level=logging.DEBUG)
思考:logging与print的区别
1、logging支持设定日志级别,输出指定级别的日志;
2、Logging支持设定日志输出到文件中,且可以设定输出格式;
3、Print打印的输出便于调试,验证通过后往往会注释掉,后续一旦需要维护,再添加注释比较麻烦。
问题3:解决如何处理复合数据的归类处理的问题
问题场景
在使用python进行工具优化时,为了便于结果输出,需要将List_A这种格式的数据归类成List_B格式的数据。
处理思路
实例展示
# 整理归类结果
def get_integrateresult(self,list_RV):
list_result = []
dict_integrate = {}
fordata in list_RV:
for( key,val) in data.items:
ifkeyin dict_integrate.keys:
#当处理 key值存在时,此时先将之前存储的 '0000': [ '6.0.12']取出来,即dict_integrate[ key],此时list_result的值为 6.0.12
list_result=dict_integrate[ key]
#然后将存在的value值进行处理,此时得到[ '6.0.12', '6.0.13']
list_result. append(val)
#然后将list_result赋值给dict_integrate[ key]
dict_integrate[ key]=list_result
list_result=[]
else:
list_result. append(val)
dict_integrate[ key]=list_result
list_result = []
returndict_integrate
问题4:解决如何对以“.“或者”-”组成的多段的数字型字符串进行排序的问题
问题场景
list_V=[ "6.0.12", "5.0.13", "6.6.12", "6.6.15", "6.8.16"]
在使用python实现下拉按钮时,需要将上述列表中的数据按照顺序添加到组件上。
处理思路
先将list_V中的每个数据分别转换成数组,然后使用python内置的sort函数进行整体排序;
实例展示
list_V.sort(key=lambdax:list(int(v)forvinx.split(".")))
小结
以上是小编在工具优化过程中遇到的问题及解决方案,后期也会陆续分享我们工作中遇到的其他疑难问题,希望对小伙伴有所帮助。返回搜狐,查看更多
责任编辑: