前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何跳出Python运用中的“坑”

如何跳出Python运用中的“坑”

作者头像
用户5521279
发布2019-07-24 14:44:49
8860
发布2019-07-24 14:44:49
举报
文章被收录于专栏:搜狗测试

前言

在测试中为了提高测试效率,监控线上产品质量,通常会采用脚本,工具或者平台的方式监控线上服务或者验证逻辑是否正常。 同样,小编在日常的工作中也会编辑一些脚本处理一些线上监控以及性能测试等需求,其中接触Python较多,因此接下来会和大家分享Python在运用过程中遇到的问题以及解决方法,精彩继续,不要走开~~

实践一:Python利用outlook发送测试结果邮件

首先,导入win32com库;

代码语言:javascript
复制
  import win32com.clientaswin32

其次,注册outlook软件的COM服务,只有注册这种服务之后,才可以通过这种方法打开;

代码语言:javascript
复制
outlook= win32.Dispatch('outlook.application')

然后,设置邮件的各种属性,接收人,邮件主题,邮件正文内容,发送邮件(具体的可以看脚本注释);

运行效果

实践二:解决Python中ErrorKey异常

在编辑资讯线上监控脚本时,需要将服务端返回的数据进行处理,读取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分支,结果为“不存在”。

实践三:解决Python输出曲线报表图中文不显示的方法

在编辑资讯信息流性能测试脚本时,需要将性能数据绘制成一个曲线图,方便查看。这个逻辑处理之后发现,输出的图中标题以及X和Y轴编辑好的中文不显示(下图中红色框标记位置)。如下图(下图中的数据为测试调试数据,不是真实的数据信息):

出现问题的脚本如下:

代码语言:javascript
复制
# 绘制曲线图
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()

解决办法如下:

首先,我们要在代码一开始加入以下两个条件

代码语言:javascript
复制
from matplotlib.font_managerimportFontProperties
font_set=FontProperties(fname=
r"c:\windows\fonts\simsun.ttc",size=12)

其次,在绘制的X和Y轴等涉及到中文的地方,做编码格式转化,添加相关包以及指定相关字体。

代码语言:javascript
复制
# 绘制曲线图
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()

修改效果(由于版面有限,所以数据删除了部分):

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 实践一:Python利用outlook发送测试结果邮件
      • 实践二:解决Python中ErrorKey异常
        • 实践三:解决Python输出曲线报表图中文不显示的方法
        相关产品与服务
        腾讯云 BI
        腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档