前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >来,一起做个测试小工具

来,一起做个测试小工具

作者头像
用户5521279
发布2019-09-23 19:03:06
9390
发布2019-09-23 19:03:06
举报
文章被收录于专栏:搜狗测试搜狗测试

曾经我们测试组有几十条甚至近百条的测试脚本,每次测试都在茫茫脚本海中寻求自己所需的那一个……

有一天,我们突发奇想,为什么不给它们穿上“衣服”,让它们“可视化”。

预览

hello, hello, 不知道大家记不记得曾经的《小白的极简接口“自动化”》那篇文章。文中用到的接口是这样子的一个get请求

http://notify.mse.sogou.com/weather?city=天津

今天我们谈一下它的进阶,给这个极简脚本“穿上衣服”,变成一个有界面的工具。

是不是已经不像是一个脚本了呢,可视化之后通用性更强了,甚至可以让产品、运营等不懂代码、不会抓包的同学排查常用的用户接口的问题。

脚本的可视化过程

No.1

准备脚本

这次我们要做的这个接口测试/验证的脚本生成就不详细说明了,通过Postman就可以生成一个。

小编经常折腾各种语言,对比C/C++、Java、Python这四个使用率最高的语言,在做界面上,Python可以说是最简单的了。

所以本文也就用Python语言生成脚本,然后封装成一个类。

代码语言:javascript
复制
# -*- coding: UTF-8 -*-
import requests

class WeatherTest:
    def __init__(self):
        self

    def testWeather(self, city):
        url = "http://notify.mse.sogou.com/weather"

        querystring = {"city": city}

        headers = {
            'User-Agent': "PostmanRuntime/7.16.3",
            'Accept': "*/*",
            'Cache-Control': "no-cache",
            'Postman-Token': "de3c837b-6f0c-48c8-a49d-1ca310c98917,d028ac2b-f12f-4fbd-ab4a-2aabfb32ab13",
            'Host': "notify.mse.sogou.com",
            'Accept-Encoding': "gzip, deflate",
            'Cookie': "IPLOC=CN1100",
            'Connection': "keep-alive",
            'cache-control': "no-cache"
            }

        response = requests.request("GET", url, headers=headers, params=querystring)
        print(response.text)

No.2

“画”界面

虽然Python用PyQt完成界面十分简单,但是也依赖一些插件。

这里我们需要安装两个插件Qt Designer和PyUIC。Qt Designer可实现拖拽控件生成界面,避免了复杂的布局管理,而PyUIC可将Qt Designer拖拽生成的.ui文件转化为.py文件。之后直接将转化得到的.py文件引入到Projects里面就可以了。

用Qt Designer,通过简单的控件拖拽就可以生成一个工具的小界面了

No.3

事件绑定

事件绑定的目的是将界面上的控件和执行层面的方法结合起来。这样就能做到点击→触发→输出→展示的过程了。

0.界面初始化

目的:

A. 给下拉列表增加选项

B. 将输出流重定向到文本区域

C. 指定按钮事件对应的方法

代码语言:javascript
复制
   def __init__(self,):
        super(MyWindow, self).__init__()
        self.setupUi(self)
        # 添加下拉列表选项
        self.comboBox.addItem("北京")
        self.comboBox.addItem("上海")
        # 此处省略了部分item的添加code
        # 重定向输出流
        sys.stdout = EmittingStr(textWritten=self.outputWritten)
        sys.stderr = EmittingStr(textWritten=self.outputWritten)
        # 绑定按钮事件
        self.pushButton.clicked.connect(self.buttClicked)

1.绑定按钮事件 - 获取参数&触发请求

目的: 将脚本封装的类中对外输出的方法与按钮的点击事件绑定,即点击按钮触发脚本执行。

代码语言:javascript
复制
    def buttClicked(self):
        test = WeatherTest()
        selectedCity = self.comboBox.currentText()
        test.testWeather(city=selectedCity)

2.重定向输出流 - 展示在文本区域内

目的: 将输入输出流指向文本区域,并在文本区域添加滚动条。

代码语言:javascript
复制
  def outputWritten(self, text):
        cursor = self.textBrowser.textCursor()
        cursor.movePosition(QtGui.QTextCursor.End)
        cursor.insertText(text)
        self.textBrowser.setTextCursor(cursor)
        self.textBrowser.ensureCursorVisible()

No.4

运行

运行程序之后,选择一个城市,点击按钮就能看到接口请求的结果了~

到这里,这个简单的小脚本有了“衣服”,客户端的测试同学们也可以轻松地看到一些看不到的服务端接口(如服务端系统和系统之间的接口)的详细信息。当然这个可视化的页面还只能算是及格,它还能够通过进一步扩展脚本、优化界面增添更多对这个接口不同层次的检查点。

Ending

本文只是一个极简“小教程”,测试工具、自动化脚本可远远不止于此。

小编想通过这篇文章分享一个思路: 用可视化的方法把常用的接口脚本、数据库脚本甚至服务器脚本封装起来,开发成本并不高且能很大提高通用性和效率。

对于测试工具,小编做东西有两个原则一是尽量通用和易扩展,另一个原则就是在力所能及之外多加至少1点。在没有这1点的想法时,可视化界面就可以算是这额外的1点,多1点开发会方便更多人使用;多考虑至少1点,也督促自己每次都能在开发时学到新的东西。

PS. 对于界面的深入是很难的,学过Swing并用它写过界面的人都吐槽又丑又难写。但是,小编曾经看过一个介绍,JetBrains系列(Intellij IDEA, Pycharm, DataGrip)就是 Swing 开发的。

UI实现这个东西是门槛低,但是瓶颈也很高很长的。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档