字节,阿里,腾讯大牛耗时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软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员二黑】即可获取这份资料了!

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

大学毕业开始销售…不甘于现状,转行测试的自救之路

从销冠到失业,最后选择软件测试,回头看看这段路,我很幸运!

以上是关于字节,阿里,腾讯大牛耗时3个月总结的《python问题解决思路》建议收藏的主要内容,如果未能解决你的问题,请参考以下文章

2022靠这个!进字节,阿里,腾讯!!!

字节大牛耗时八个月又一力作,最新整理

字节大牛耗时八个月又一力作,请把这些学完再去面试

GitHub标星已高达十万!阿里P8大牛花费3个月总结出来的《Java性能优化全攻略》

字节架构师耗时3个月总结出的“微服务架构”笔记,我小码农愿称你为最强!

八位阿里大牛耗时三年总结出Java面试复盘手册!带你实现逆风翻盘