#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 这种情况
#12 楼 @simonpatrick 多谢提醒,我去研究下,我预留这个 API 是为了后期能写个小平台,能和 controller 对接,不过目前还在学习 java web 相关的东西,之后接口测试相关的元素会存储到数据库中(平台化),也支持 excel 的方式集成到 jenkins 中~
execute(apiUrlPrefix, apiUrlSuffix, httpMethod, reqData, respData, bodyType,
validExpression, expectedValue, dependencyKeys, dependencyValueExps);
@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);
}
}
所以目前的代码比较丑陋,自己看着都很不爽,但是优化的话,目前确实没那个能力= =
#9 楼 @niweyzhuce restless 还真没用过,之前用 Flask-restful 做过一个 UI 自动化测试用例管理系统的纯 api service,前端结合 extjs,不过目前公司要求使用 java,所以这才赶紧学学,有啥问题也好直接和公司这边的开发同事交流~
#2 楼 @quqing 多谢您耐心的解答,我目前也在做一个接口测试的框架,不过是用 excel 数据驱动的,预留出 api 接口准备后期平台化,不过没有您这个考虑的完善,向您学习了~
看到有这么一段代码:
if (requestDO.getMethod().equalsIgnoreCase("POST")) {
response = httpRequest.doPost(requestDO.getUrl(), paramsMap);
是否是根据 paramsMap 去生成是 key-value 的 from,还是 json 格式的 requestBody 呢?感觉判断逻辑是在 doPost 这个方法里处理的
赞! 先顶个~看上去像是解析 json 格式的文件调用封装好的 httpclient API,有几个问题想请教您
1、这个框架的结果验证是使用正则匹配的形式么,比如解析 responseBody 之后搜索 shouldBeContains 的值做比对?
2、上传文件的话是自己去拼 http 请求消息体之类的信息嘛?
3、报告生成是自己写还是用第三方的插件?
4、是否使用 testng 作为测试框架的启动器?
5、能否与 jenkins 一起做持续集成?