接口测试模仿篇

发表于:2010-6-11 14:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:moer    来源:Taobao QA Team

  4、Run/debug测试用例代码

  这应该是整个过程中最关键部分。debug过程中,会遇到不同情况的问题,导致用例跑不通。

  我把过程中遇到的几个点都说明下:

  配置中,其实还遗漏了sqlmap的配置,如果你的测试用例中需要访问数据库的话。找到代码中需要引用的sqlmap_mapping.xml文件,配到测试工程下的sql-map.xml中,如:

  <sqlMap resource="sql/businessunit/businessunit_sqlmap_mapping.xml"/>

  此sqlmap中配置了所有ibatisDAO调用的sql id。

  至于到底用到了那份sqlmap文件,就需要我们查看代码追踪了。

  我是在进行配置的时候,就直接配置了接口要用的sqlmap。

  * 刚开始时,我初始化变量,就用了一个值,这个值给所有DO的字段属性set值;但发现最好还是能够区分下,这样传入的参数能够明确点。

  * 进行数据库校验的时候,本想是直接调用service下的查询方法来校验结果;但经过元化的提醒,测试的预期结果最好是由自己来确认,而不是调用其他开发写的方法,若方法有问题那么校验就不准确了。所以查询数据的时候,增加了UnitUtil。java文件,里面就是自己写的一个方法用例获取自己需要的内容。比如queryUnit方法,我就是通过unit_name查询数据库中存在的记录,然后进行对比。

  * Run一直失败,日志中是说expect和auctual不一致,通过debug发现,是因为我获取的auctual中有很多空值,但实际数据库中是有的。主要原因就需要看queryUnit是怎么实现的。

  这个是现在的实现:

List <BusinessUnionDO> businessUnionDOList = (List<BusinessUnionDO>) jdbcTemplate.query(sql.toString(),
new BusinessUnitRowMapper(),unit_name);

  下面的是原来写的,直接用了ParameterizedBeanPropertyRowMapper。

List <BusinessUnionDO> businessUnionDOList = (List<BusinessUnionDO>) jdbcTemplate.query(sql.toString(),
ParameterizedBeanPropertyRowMapper.newInstance(BusinessUnionDO.class),unit_name);

  ParameterizedBeanPropertyRowMapper类做的事情没有深究,大概是将DO的属性和数据库做个映射,如果数据库的字段和DO的属性命名是符合一些规范的,那么就可以不手工写映射就可以匹配。

  但本次BusinessUnitDO中的属性字段跟数据库字段没有满足默认映射的条件,所以刚开始用这个类方法时一直assert对比不成功。

  既然不能用默认的,就需要手工写映射关系,如:

  这样,映射问题解决了。

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号