一个标准的REST API测试代码

简介:
代码及过程都非常标准;以后可能会很少做Rest API测试了,权且作为纪念
  @Test(author="elbert.chenh", description="测试用例描述")
 public void TestCase1() throws Exception
 {
  String url =" http://apiurl?service=servicename&" +
    "seller_user_id=elbert0000800002&" +
    "trade_no=elbert0000800002&" +
    "sign=1234&sign_type=DSA&"+
    "child_order_id=800080012&"+
    "amount=100.01&"+
    "date=2010-02-05 13:13:13&"+
    "amount_type=F&"+
    "repay_type=0&"+
    "repay_channel=E&"+
    "status=T&repay_no=elbert0000800002";
  
  //清理数据现场
  String Sql1= "select * from "+SchemaName+".LOAN where CUSTOMER_ID = '80000001'";
  String Sql2= "select * from "+SchemaName+".LOAN_ORDER where trade_no = 'elbert0000800002'";
  String Sql3= "select * from "+SchemaName+".SERIAL_REPAY_RECORD where trade_no = 'elbert0000800002'";
  String Sql4= "select * from "+alibankSchemaName+".LOAN_ORDER_PAYMENT_INFO where trade_no = 'elbert0000800002'";
  deleteData("LOAN", Sql1);
  deleteData("LOAN_ORDER", Sql2);
  deleteData("SERIAL_REPAY_RECORD", Sql3);
  deleteData("LOAN_ORDER_PAYMENT_INFO", Sql4);
  //准备测试数据
  loadCaseData("TestCase1.xml",alibankSchemaName);
  //发起url请求15958189400
  System.out.println(url);
  WebConversation conversation = new WebConversation();
  WebRequest request = new PostMethodWebRequest(url);
  WebResponse response = conversation.getResponse(request);
  String ActXmlText = response.getText();
  System.out.println(ActXmlText);
  //数据库断言
  dataSetLoanExp = TestData.getExpDataSet("testCase1_Exp.xml", db);
  // 检测SERIAL_REPAY_RECORD
  QueryDataSet queryDataSet = new QueryDataSet(db.getConnection());
  queryDataSet.addTable("SERIAL_REPAY_RECORD", "select REPAY_NO,CUSTOMER_ALIPAY_ID,TRADE_NO,REPAY_AMOUNT," +
    "TO_CHAR(REPAY_DATE,'YYYY-MM-DD hh24:MI:SS') as REPAY_DATE,REPAY_CHANNEL,REPAY_TYPE,REPAY_STATUS,ERROR_CODE," +
    "AMOUNT_TYPE from "
    + alibankSchemaName + ".SERIAL_REPAY_RECORD where trade_no= 'elbert0000800002'");
  ITable filteredAccount = DefaultColumnFilter.includedColumnsTable(
    queryDataSet.getTable("SERIAL_REPAY_RECORD"), dataSetLoanExp.getTable(
      "SERIAL_REPAY_RECORD").getTableMetaData().getColumns());
  util.aliAssert.assertEquals(dataSetLoanExp.getTable("SERIAL_REPAY_RECORD"), filteredAccount, "ERROR_CODE", null);
  //检查loan_order表 CALCULATE_INTEREST_DATE,
  queryDataSet.addTable("tablename1", "select LOAN_ORDER_ID,....,TO_CHAR(ORDER_DATE,'YYYY-MM-DD hh24:MI:SS') as ORDER_DATE,PRODUCT_NAME,PRODUCT_COUNT," +
    "....," +
    "......," +
    "TO_CHAR(CALCULATE_INTEREST_DATE,'YYYY-MM-DD hh24:MI:SS') as CALCULATE_INTEREST_DATE," +
    "....from "
    + alibankSchemaName + ".LOAN_ORDER where trade_no= 'elbert0000800002'");
  ITable filteredAccount1 = DefaultColumnFilter.includedColumnsTable(
    queryDataSet.getTable("tablename2"), dataSetLoanExp.getTable(
      "LOAN_ORDER").getTableMetaData().getColumns());
  Assertion.assertEquals(dataSetLoanExp.getTable("LOAN_ORDER"),
    filteredAccount1);
  //LOAN_ORDER_PAYMENT_INFO 验证
  queryDataSet.addTable("tablename3", "select ....,TO_CHAR(REPAY_DATE,'YYYY-MM-DD hh24:MI:SS') as REPAY_DATE,LOAN_ID  from "
    + alibankSchemaName + ".LOAN_ORDER_PAYMENT_INFO where trade_no= 'elbert0000800002'");
  ITable filteredAccount2 = DefaultColumnFilter.includedColumnsTable(
    queryDataSet.getTable("LOAN_ORDER_PAYMENT_INFO"), dataSetLoanExp.getTable(
      "LOAN_ORDER_PAYMENT_INFO").getTableMetaData().getColumns());
  Assertion.assertEquals(dataSetLoanExp.getTable("LOAN_ORDER_PAYMENT_INFO"),
    filteredAccount2);
 }


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/283260,如需转载请自行联系原作者
相关文章
|
3月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
332 1
|
3月前
|
算法 API 数据安全/隐私保护
电商 API 双平台实战:淘宝 item.get + 京东 item_detail 对接指南(附可复用代码 + 问题排查)
本文详细解析了淘宝和京东双平台API对接的核心流程,涵盖资质申请、凭证获取、签名生成、高频接口调用及常见问题解决方案,助力开发者高效实现商品数据同步与管理。
|
3月前
|
数据采集 缓存 API
1688 API 实战指南:搞定批发场景的 3 大核心难题(附签名代码与避坑清单)
本文深入解析了1688 API 在批发场景下的三大核心难题及解决方案,涵盖签名机制、商品数据处理与订单同步等高频问题,提供可复用代码与避坑清单,助你高效对接1688平台。
|
4月前
|
XML 安全 测试技术
【干货满满】分享什么是API接口测试
API接口测试是验证应用程序编程接口功能、性能、安全性及兼容性的关键环节,通过模拟请求并验证响应结果,确保接口能正确处理各种输入和场景。测试内容涵盖功能验证、性能评估、安全防护、兼容性验证及系统可靠性。相比UI测试,API测试无需界面依赖,支持数据驱动与自动化,适用于持续集成流程。常见接口类型包括RESTful、SOAP和GraphQL API,广泛应用于电商、金融及社交平台,保障系统间数据交互的安全与高效。
|
4月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
438 0
|
5月前
|
边缘计算 监控 Java
跨境电商 API 对接避坑指南:亚马逊 SP-API 超时问题的 5 种解决方案(附重试代码模板)
在对接亚马逊 SP-API 时,超时问题常导致订单延迟、库存失败,影响运营。本文总结某 3C 品牌实战经验,详解超时的 3 大根源与 5 大解决方案,涵盖动态超时、重试机制、请求拆分、并发控制与边缘加速,并附可复用 Python 代码,助你将超时率从 20% 降至 1% 以下。
|
5月前
|
安全 API 数据安全/隐私保护
低代码革命:API无代码集成如何让企业“3天上线一个生态”?
在数字化转型浪潮中,API成为释放数据价值、提升企业效率的核心。本文详解API架构设计、安全实践与跨平台集成,为CTO提供效率提升指南,涵盖微服务、安全认证、协议选择、低代码集成及未来趋势,助力企业构建敏捷、安全、高效的数字生态。