• #7 楼 @ycwdaaaa
    1、对于通用的制造数据 excel,我理解是相当于 beforeMethod 中都要运行一遍 sheet=insert*,testMethod 中运行 sheet=select or businesslogic,afterMethod 运行 sheet=delete*,那么 beforeMethod 中需要写一些逻辑了,而且还是类参数化的那种(目前我是 DataProviderClass 直接 Iterator 提供给@Test的 method),你这样做灵活度确实高
    2、对于删除数据,我目前直接使用 preHandler 和 postHandler 调用 resources 下的 sqlscript...,感觉做成你说的那个还需要完善一下我的 excelUtil,因为目前只支持单 sheet,你那个相当于多 sheet 遍历根据 sheetName 做判断,定义好格式然后去按照你定义的规则去编写 excel 中的数据,确实比手动写 sql 要方便也不容易出错
    3、对于 [不要依赖产品的接口造数据],这个比如这样打个比方:
    用户下了个订单,那么订单编号是自动生成的,如果不在运行时获取,预制数据的时候是不知道订单编号的,然后下一个接口的入参就是生成订单接口返回的 json 中的 orderId,当然也有可能有 7/10 个返回值下个接口用到 5/7 这种情况

  • #5 楼 @ycwdaaaa 接口测试的 case 隔离和共享我这边是用类似于占位符实现,虽然简陋但是还算比较有效,因为我们这边接口依赖比较严重,所以完全隔离的话,整体的业务逻辑就走不通,目前确实我也没有太好的办法(有些共享数据是接口测试运行过程中才产生的,感觉无法使用前置的方式先定义到 DataBaseFile 的 excel 中)~文章中说明的数据准备的思想很好,很值得我学习,不过我在考虑后期会不会框架维护的类 excel,类 xml 之后会比较多也比较复杂..

  • 测试开发之路 ---- 概要 at 2016年05月01日

    #2 楼 @ycwdaaaa 过来支持下~期待后续的讨论~

  • #10 楼 @struggle 建议使用 python 的 virtualenv 维护 python 的环境,避免依赖污染到你 mac 系统中的全局 python 环境

  • 接口测试实践和一些想法 at 2016年03月22日

    #3 楼 @taki 目前我们部门做的只是一个简单的基于 excel 的接口测试框架,看了您的分享感觉很厉害啊 (页面感觉像是 extjs 系列的前端框架)~请问您那边对于 diff 是如何实现的呢?是不是有第三方的类库可以支持?后台的话是否是使用 springmvc 之类的框架搭建呢?感觉内部调用接口的代码您那边是封装了一套支持各种协议的类库

  • API 自动化测试框架分享 at 2016年03月14日

    #85 楼 @testly 好的,目前还在熟悉中,自己定制的话需要用到 java 的类似于 html 模板啥的,这个之前没研究过,准备研究下,感觉一个好的报告系统真是对于自动化测试来说非常重要

  • API 自动化测试框架分享 at 2016年03月12日

    #83 楼 @testly 多谢指教,看来我得研究下 reportng 自己生成的 html 模板了,修改自带的 template

  • API 自动化测试框架分享 at 2016年03月11日

    #81 楼 @testly 请问大神"检查多个文件全部遍历文件内的所有接口"是通过配置文件实现指定读取的 excel 文件集合吗?目前我按照您的思路实现了一个简单的单文件自动化接口测试框架,而且由于使用了 testng 的 dataprovider,所以造成我产生的报告中 (reportNG) 所有测试方法的名称都一样 (因为只有一个@Test注解,或者能动态的根据我传入 test 方法的参数 caseDescription 去修改@Test中的 description?)

  • 分层测试重构之接口层 at 2016年03月05日

    #18 楼 @quqing 哈哈,我们头头今年也提出要求要基于接口做更多的测试和探究,UI 的只用来跑最基本的业务流程,请问您的公司做的是什么方面的产品呢(我们是互联网金融)?

  • 分层测试重构之接口层 at 2016年03月04日

    #16 楼 @quqing UI 层的自动化之前用 webdriver 做过,但是之前公司是 extjs(extjs 的元素嵌套很深)写的后台系统,感觉维护起来很是费劲(只有我和另外一位同事),虽然封装了一套基于页面控件字符的 API,但稳定性还是很不如人意...不知您对于 UI 的自动化测试有没有比较好的建议或者是有些系统不适合做 UI 层面的自动化?

  • 分层测试重构之接口层 at 2016年03月04日

    #14 楼 @quqing 资源是那些 js 啥的静态文件么?那种验证的话是基于什么断言为正确呢 (非 4xx 或是其他)?

  • 分层测试重构之接口层 at 2016年03月04日

    #12 楼 @simonpatrick 多谢提醒,我去研究下,我预留这个 API 是为了后期能写个小平台,能和 controller 对接,不过目前还在学习 java web 相关的东西,之后接口测试相关的元素会存储到数据库中(平台化),也支持 excel 的方式集成到 jenkins 中~

    execute(apiUrlPrefix, apiUrlSuffix, httpMethod, reqData, respData, bodyType,
                        validExpression, expectedValue, dependencyKeys, dependencyValueExps);
    
  • 分层测试重构之接口层 at 2016年03月03日

    #9 楼 @niweyzhuce

    @Test
        public void testAPI() throws Exception {
    
            for (int i = 1; i <= testCaseCount; i++) {
                String apiUrlPrefix = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_UriPrefix);
                String apiUrlSuffix = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_UriSuffix);
                String httpMethod = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_HttpMethod);
                String reqData = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_RequestParam);
                String respData = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_ResponseBody);
                String bodyType = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_BodyType);
                String validExpression = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_VaildExpressions);
                String expectedValue = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_ExpectedValues);
                String dependencyKeys = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_DependencyKeys);
                String dependencyValueExps = ExcelUtil.getCellData(ExcelConstants.Sheet_TestSteps, i, ExcelConstants.Col_DependencyExpression);
    
                System.out.println(apiUrlPrefix + apiUrlSuffix + httpMethod + reqData + "-" + respData + "-" + bodyType + validExpression + 
                        expectedValue + dependencyKeys + dependencyValueExps);
    
                restExecutor.execute(apiUrlPrefix, apiUrlSuffix, httpMethod, reqData, respData, bodyType,
                        validExpression, expectedValue, dependencyKeys, dependencyValueExps);
            }
    
    
    
        }
    

    所以目前的代码比较丑陋,自己看着都很不爽,但是优化的话,目前确实没那个能力= =

  • 分层测试重构之接口层 at 2016年03月03日

    #9 楼 @niweyzhuce restless 还真没用过,之前用 Flask-restful 做过一个 UI 自动化测试用例管理系统的纯 api service,前端结合 extjs,不过目前公司要求使用 java,所以这才赶紧学学,有啥问题也好直接和公司这边的开发同事交流~

  • 分层测试重构之接口层 at 2016年03月03日

    #7 楼 @quqing 多谢指教~本人初学 java(之前用 python 写一些工具),您这个说的深奥的地方我得慢慢消化去~不过 spring 确实方便,可以随意注入需要的对象,AOP 的话还没有学习到,之前遇到类似的问题都是用 python 的装饰器~

  • 分层测试重构之接口层 at 2016年03月03日

    #5 楼 @quqing 学习了~不过我是用 spring 的 resttemplate 做的,对细节把控不是很到位,没有您这个那么底层,我目前还比较困惑报告的生成,因为不想把报告的逻辑写在我运行测试的方法里,所以用了 testng 提供的一些 listeners,不过获取测试执行过程中或执行过后的基础数据不是很好弄

  • 分层测试重构之接口层 at 2016年03月03日

    #2 楼 @quqing 多谢您耐心的解答,我目前也在做一个接口测试的框架,不过是用 excel 数据驱动的,预留出 api 接口准备后期平台化,不过没有您这个考虑的完善,向您学习了~
    看到有这么一段代码:
    if (requestDO.getMethod().equalsIgnoreCase("POST")) {
    response = httpRequest.doPost(requestDO.getUrl(), paramsMap);
    是否是根据 paramsMap 去生成是 key-value 的 from,还是 json 格式的 requestBody 呢?感觉判断逻辑是在 doPost 这个方法里处理的

  • 分层测试重构之接口层 at 2016年03月03日

    赞! 先顶个~看上去像是解析 json 格式的文件调用封装好的 httpclient API,有几个问题想请教您
    1、这个框架的结果验证是使用正则匹配的形式么,比如解析 responseBody 之后搜索 shouldBeContains 的值做比对?
    2、上传文件的话是自己去拼 http 请求消息体之类的信息嘛?
    3、报告生成是自己写还是用第三方的插件?
    4、是否使用 testng 作为测试框架的启动器?
    5、能否与 jenkins 一起做持续集成?