【SIP】OPEN API测试实战源代码

简介:
上篇文字介绍了如何利用正交验证法来实现测试用例的设计。本篇文章将针对上篇文章介绍代码的实现。以授权用例一的Case4为例子。
    首先需要准备测试数据,本文使用的是DBUNIT。首先准备xml文件如下:
 <SIP_API API_ID= "elbert_api00204" API_NAME ="alitest.ali-54-test204" ISP_ID = "elbert_isp001"
 CONTROL_LEVEL = "1" API_URL = " http://apitest.alisoft.com:8080/isp-test/login" REQUIRE_TOKEN_TYPE ="0"
 REQUIRE_TIMEOUT = "1000"  STATUS = "0" API_TEST_URL =" http://apitest.alisoft.com:8080/isp-test/login
 FREQUENCY_VALVE = "6" API_TYPE ="0"
 /> 
 <APP APP_ID="test_app059" app_name="zcappname059" isv_id="001"
  app_no="test_app059" APP_SECRET="secret_app003" LEVEL_ID="alitest_level7"/>
 <App_Profile APP_ID= "test_app059" APP_NO="test_app059" App_Name="测试SIP59" CATEGORY_ID ="elber002"
  ISV_ID="4082604" Status ="0" SUBSCRIBED_COUNT="0" AUTO_SIGN_ON_URL=" http://www.sina.com.cn
  SERVICE_SCOPE = "1"  GMT_CREATE ="2008-2-19 13:28:50"  GMT_MODIFIED = "2008-2-19 13:28:50"
  CREATOR = "1" MODIFIER ="1" IS_DELETED ="n" DESCRIPTION="测试部专用" STANDARD_PRICE="基本价12"
  GMT_SERVICE_END="2009-12-19 13:28:50" PRICE_MODE="m" PRICE_URL=" http://mall.alisoft.com/apps/shopwindow/appSubscibeAction!showSubscAppModel.jspa
  PRICE_CALC_CLASS="modelPriceService" LICENCE_NUM="100" 
 />
 <SIP_APP_LEVEL LEVEL_ID="alitest_level7" LEVEL_NAME="阿里软件测试级7" DEFAULT_ACCESS_FREQUENCY="3" DAY_ACCESS_COUNT="0" API_GROUPS="alitest_group3,alitest_group4"
  LEVEL_DESC="阿里软件接口测试6" GMT_CREATE="2009-01-10 13:28:50" GMT_MODIFIED="2009-01-10 13:28:50"
 />
 <!-- API_GROUP_ID API_GROUP_NAME INCLUDE_APINAMES EXCLUDE_APINAMES INCLUDE_ISPS API_GROUP_DESC GMT_CREATE GMT_MODIFIED
alitest_group1 阿里软件测试组一   elbert_isp001,elbert_isp002,elbert_isp003 阿里软件5.3之前API集合 2009-1-10 2009-1-10
  -->
 <SIP_API_GROUP API_GROUP_ID="alitest_group3" API_GROUP_NAME="阿里软件测试组二" INCLUDE_APINAMES="" EXCLUDE_APINAMES=""
 INCLUDE_ISPS="elbert_isp002,elbert_isp003" API_GROUP_DESC="阿里软件5.4API集合1" GMT_CREATE="2009-1-11 01:01:01" GMT_MODIFIED="2009-1-11 01:01:01"
 /> 
 <SIP_API_GROUP API_GROUP_ID="alitest_group4" API_GROUP_NAME="阿里软件测试组二" INCLUDE_APINAMES="" EXCLUDE_APINAMES=""
 INCLUDE_ISPS="elbert_isp001" API_GROUP_DESC="阿里软件5.4API集合1" GMT_CREATE="2009-1-11 01:01:01" GMT_MODIFIED="2009-1-11 01:01:01"
 />
    然后利用DBUNIT的方法,载入数据。在实战中这部分被分装成loadData函数如下:
    loadCaseData("testCase4_CORE.xml",coreSchemaName);
然后实现测试的主要部分,JUNIT编码的工作。代码如下:
public class TestApiGroups extends TestBaseWS {
 private static String udbSchemaName;
 private static String coreSchemaName;
 private String api_server = " http://10.2.226.19:8180/sip/rest";
 static String mysql_url = "jdbc:mysql://10.2.226.19:3306/sip";
 private String dir = "com\\alisoft\\aep\\sip\\core54";
 public TestApiGroups() throws Exception {
  super();
  db = util.DBConnection.getDbUnit();
  udbSchemaName = util.DBConnection.schemaMap.get("UDB");
  coreSchemaName = util.DBConnection.schemaMap.get("CORE");
  System.out.println("数据准备开始......");
  loadCaseData("testCase2_CORE.xml",coreSchemaName);
  loadCaseData("testCase3_CORE.xml",coreSchemaName);
  loadCaseData("testCase4_CORE.xml",coreSchemaName);
  loadCaseData("testCase5_CORE.xml",coreSchemaName);
  loadCaseData("testCase6_CORE.xml",coreSchemaName);
  util.SIPHelp.Crush_Sip();
  System.out.println("数据准备完毕");
  // TODO Auto-generated constructor stub
 }
 public void TestCase(Map<String, String> map, String ExpXmlText,String EXPSTATUES,String EXPERROR,String sip_apiname,String AppKey)
 throws Exception {
  String sip_appkey =AppKey;// "test_app003";// app_id
  String sip_appsecret = "secret_app003";
  
  String sessionid = "123456789";
  String url = util.SIPHelp.prepareUrl(sip_appkey, sip_apiname, sip_appsecret,
    api_server, sessionid,map);
  System.out.println(url);
  WebConversation conversation = new WebConversation();
  WebRequest request = new PostMethodWebRequest(url);
  WebResponse response = conversation.getResponse(request);
  String ActStatus = response.getHeaderField("sip_status");
  String ActError = response.getHeaderField("sip_error_message");
        System.out.println(ActStatus);
  assertEquals(EXPSTATUES, ActStatus);
  if (EXPSTATUES.equals("9999"))
  { assertEquals(null, ActError); }
  else
  {
   assertEquals(EXPERROR, ActError);
  }
  String ActXmlTest = response.getText();
  System.out.println(ActXmlTest);
  assertEquals(ExpXmlText, ActXmlTest);
 }
 /**
  * SIP_APP_LEVEL中含API_GROUPS字段为多个字段,且API在Group中
  * @throws Exception
  */
 @Test
 public void TestCase4() throws Exception {
  String sip_apiname = "alitest.ali-54-test204";
  //数据准备
  String ExpXmlText = "not OK";
  String sip_appkey = "test_app059";
  TestCase(null,ExpXmlText,"9999",null, sip_apiname,sip_appkey);
 }
 

本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/282651,如需转载请自行联系原作者
相关文章
|
1月前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
2月前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
4天前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
|
4天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
5天前
|
SQL 人工智能 自然语言处理
让老板成为数据分析师--ChatGpt链接本地数据源实战测试
本文探究ChatGpt等AI机器人能否帮助老板快速的做数据分析?用自然语言同老板进行沟通,满足老板的所有数据分析的诉求?
|
10天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
10天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
14 2
|
10天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
13 3
|
10天前
|
Java 测试技术 API
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
10 2
|
11天前
|
人工智能 API Python
【AI大模型应用开发】1.1 Prompt Engineering(提示词工程)- 用OpenAI API实战,优化方法论总结
【AI大模型应用开发】1.1 Prompt Engineering(提示词工程)- 用OpenAI API实战,优化方法论总结
14 0