字节,阿里,腾讯大牛耗时3个月总结的《python问题解决思路》建议收藏
Posted 程序员二黑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字节,阿里,腾讯大牛耗时3个月总结的《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.83 Safari/537.36',
'Content-Type':"application/json",
'Cookie':'_ga=GA1.2.482157528.1599726042; Hm_lvt_39b794a97f47c65b6b2e4e1741dcba38=1601257295,1601257930,1601262159,1601369602'
}
问题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<info<error<warning<critical)< span>
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:解决如何处理复合数据的归类处理的问题
问题场景
List_A=[{'0000':'6.0.12'},{'189000':'6.0.12'},{'189001':'6.0.12'},
{'189001':'6.0.13'},{'0000':'6.0.13'},{'189000':'6.0.13'}]
List_B={'0000':['6.0.12','6.0.13'],'189000':
['6.0.12','6.0.13'],'189001':['6.0.12','6.0.13']}
在使用python进行工具优化时,为了便于结果输出,需要将List_A这种格式的数据归类成List_B格式的数据。
处理思路
- 1、首先新建一个空的Hash_A哈希表,一个空的List_C数组;
- 2、依次遍历List_A中的每一个数据,取出每个数据的key值,即’0000’、’189000’、’189001’;
- 3、判断步骤2中key值是否在步骤1中Hash_A表中,如果不在Hash_A表中,见步骤4,如果在Hash_A表中,见步骤5。
- 4、将步骤2中key对应的value值添加到List_C数组中,并将key:List_C键值对添加到Hash_A表中,最后清空List_C数组;
- 5、取出Hash_A表中key对应的value值,并将value值赋值给List_C数组,将步骤2中key对应的value值添加到List_C数组中,并将key:List_C键值对添加到Hash_A表中,最后清空List_C数组;
- 6、最后输出Hash_A即可。
实例展示
整理归类结果
def get_integrateresult(self,list_RV):
list_result = []
dict_integrate = {}
for data in list_RV:
for (key,val) in data.items():
if key in 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 = []
return dict_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=lambda x:list(int(v) for v in x.split(".")))
小结
以上是小编在工具优化过程中遇到的问题及解决方案,后期也会陆续分享我们工作中遇到的其他疑难问题,希望对小伙伴有所帮助。
最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。
包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……
关注我公众号:【程序员二黑】即可获取这份资料了!
推荐阅读
以上是关于字节,阿里,腾讯大牛耗时3个月总结的《python问题解决思路》建议收藏的主要内容,如果未能解决你的问题,请参考以下文章
GitHub标星已高达十万!阿里P8大牛花费3个月总结出来的《Java性能优化全攻略》