软件测试工具之接口测试—-工具篇,实现接口自动化
凌雪 2018-10-09 来源 :网络 阅读 1738 评论 0

摘要:本文将带你了解软件测试工具之接口测试—-工具篇,实现接口自动化,希望本文对大家学测试工具有所帮助

本文将带你了解软件测试工具之接口测试—-工具篇,实现接口自动化,希望本文对大家学测试工具有所帮助


接口测试—-工具篇,实现接口自动化
   
      今天来看下接口测试的两个工具方式,目前主流的做法有两种方式—-基于代码框架的用例编写和直接使用接口测试工具,那么本篇就这两种方式都来实现一下,为了说明情况,我们实现上一篇的前两个用例:直接请求readnotes接口数据和带上登录信息请求readnotes数据。
   
   
      工具:使用的是jmeter
  代码:使用的是python的unittest + requests +   htmlreportrunner方式(https://github.com/CloudHuan/pyapitest)
   
   
    jmeter
   
    首先看jmeter的实现方式:
    首先创建线程组,然后在线程组添加http取样器,每一个取样器就是一条用例。
    打开,配置url和相对应的参数。
   
   
   
    请求完成之后针对结果做断言
   
     
    最终的目录结构和自带的报告如下:
   
     
   
   
    那么可以看到,jmeter入手非常快,然后校验的也比较简单,主要是针对返回码、返回内容进行校验。
   
   
   
    代码
   
    利用了requests库去负责请求响应,利用unitest做结果判断,利用htmlreportrunner生成报告。
    项目的结构如下:
   
    Reports目录是生成报告的存储目录
    Testcases存放测试用例
    Testtools是测试相关的封装,比如里面我疯撞了pymysql的调用
    点击run.py执行运行并自动生成报告。
   
    直接跳到测试用例看下实现的用例代码:
   
   
   
    import unittest
    from wsgiref import headers
   
    import requests
    import re
   
    from testtools.MySQLHelper import SqlHelper
   
   
    class readnote(unittest.TestCase):
   
        mUrl =   '//127.0.0.1:8000/note/readnotes';
   
        def setUp(self):
        pass
   
        def tearDown(self):
        pass
   
        def test_readnote_null(self):
        '''所有参数为空'''
        resp =   requests.get(self.mUrl).json();
        self.assertTrue(resp['code']   == 0);
        self.assertTrue(resp['data']   != []);
        r = SqlHelper().query('SELECT   * FROM account_note WHERE public=1');
        self.assertTrue(len(r) ==   len(resp['data']));
   
        def   test_readnote_only_token(self):
        '''只填写token,获取自己的列表'''
        resp =   requests.get(self.mUrl,headers={'TOKEN':'1'}).json();
        self.assertTrue(resp['code']   == 0);
        self.assertTrue(resp['data']   != []);
        r =   SqlHelper().query("SELECT * FROM account_user a JOIN account_note b ON   a.uid = b.uuid WHERE TOKEN='1'");
        self.assertTrue(len(r) ==   len(resp['data']));
   
        def   test_readnote_only_uid(self):
        '''只填写uid,获取用户列表'''
        pass
   
        def   test_readnote_all(self):
        '''参数都填写'''
        pass
   
        def   test_readnote_invalidataUID(self):
        '''uid不存在'''
        pass
   
        def   test_readnote_invalidataToken(self):
        '''token不存在'''
        pass
   
        def   test_readnote_no_content(self):
        '''新注册用户,无内容返回'''
          pass
   
      通过request请求获取数据后,解析json数据,首先判断code和data,然后解析data看下具体业务返回得对不对,作为断言的判断,是根据sql查询数据库的数据对比得到的。后面的断言,jmeter要实现起来会比较繁琐,更别说维护了。
   
   
   
    区别和选择
   
    那么工具和代码实现,各有各的优势。
   
      使用工具,你可以很快速的上手,学习成本比较低,很多都是现成的。同时工具往往还提供额外的功能,比如jmeter我除了用来接口自动化集成,同时也用来压测部分重要接口,缺点非常明显啦,局限性会比较大,要实现一些复杂的功能需要通过自己定制的插件实现,既然都要写代码,为何不直接用代码来验证呢?
   
      那么使用自己编写的框架,最大的好处是灵活,更容易针对项目定制化,虽然前期投入会比较大,但是一旦完善了那么会显得非常好用,可以完成一些工具无法完成的事情,比如接口加密,环境切换,用例维护管理等等,基于这个原因,很多有一定规模的项目肯定都是采用后者的。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道。

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved