在测试中为了提高测试效率,监控线上产品质量,通常会采用脚本,工具或者平台的方式监控线上服务或者验证逻辑是否正常。 同样,小编在日常的工作中也会编辑一些脚本处理一些线上监控以及性能测试等需求,其中接触Python较多,因此接下来会和大家分享Python在运用过程中遇到的问题以及解决方法,精彩继续,不要走开~~
首先,导入win32com库;
import win32com.clientaswin32
其次,注册outlook软件的COM服务,只有注册这种服务之后,才可以通过这种方法打开;
outlook= win32.Dispatch('outlook.application')
然后,设置邮件的各种属性,接收人,邮件主题,邮件正文内容,发送邮件(具体的可以看脚本注释);
运行效果
在编辑资讯线上监控脚本时,需要将服务端返回的数据进行处理,读取showtype字段和picurls字段,由于两者均在字典里,因此涉及到读取字典key值的情况。这个需求实践中遇到“明明字典中存在picurls值,却报ErrorKey异常”的问题。 通过网上查阅,方法主要集中在以下三种:【Key in keys()】;【"key值" in d】;【d.get(Key,defaultKey)】三种方法。 但通过实践发现,当处理数据复杂且多的时候,除【d.get(Key,defaultKey)】方法外,其余的两种方法均不稳定,概率性出现ErrorKey异常,这是python自身的问题,因此暂时没有好的办法。 因此建议大家用字典.get(Key,defaultKey)这种方法,例子如下:
运行结果:走的else分支,结果为“不存在”。
在编辑资讯信息流性能测试脚本时,需要将性能数据绘制成一个曲线图,方便查看。这个逻辑处理之后发现,输出的图中标题以及X和Y轴编辑好的中文不显示(下图中红色框标记位置)。如下图(下图中的数据为测试调试数据,不是真实的数据信息):
出现问题的脚本如下:
# 绘制曲线图
defTheOutputStatements(self):
list = [1,1,2,3,4,5,6,7,8,89,121,1231,11,123]
# 添加10个日期
x = [iforiinrange(len(list))]
# 绘制
plt.plot(x,list)
# 标题
plt.title("资讯信息流获取数据的响应时间曲线图")
# x标签名
plt.xlabel('请求资讯数据的次数')
# y标签名
plt.ylabel('响应时间(毫秒)')
forxyinzip(x,list):
# 后面说明参数用处
plt.annotate(xy[1],xy=xy,xytext=(0,0),
textcoords='offset points')
# 显示
plt.show()
解决办法如下:
首先,我们要在代码一开始加入以下两个条件
from matplotlib.font_managerimportFontProperties
font_set=FontProperties(fname=
r"c:\windows\fonts\simsun.ttc",size=12)
其次,在绘制的X和Y轴等涉及到中文的地方,做编码格式转化,添加相关包以及指定相关字体。
# 绘制曲线图
defTheOutputStatements(self):
list = [1,1,2,3,4,5,6,7,8,89,121,1231,11,123]
# 添加10个日期
x = [iforiinrange(len(list))]
# 绘制
plt.plot(x,list)
# 标题
plt.title(u"资讯信息流获取数据的响应时间曲线图",
fontproperties=font_set)
# x标签名
plt.xlabel(u'请求资讯数据的次数',
fontproperties=font_set)
# y标签名
plt.ylabel(u'响应时间(毫秒)',
fontproperties=font_set)
forxyinzip(x,list):
# 后面说明参数用处
plt.annotate(xy[1],xy=xy,xytext=(0,0),
textcoords='offset points')
# 显示
plt.show()
修改效果(由于版面有限,所以数据删除了部分):