CN110489349B - 一种基于json配置文件的接口测试方法 - Google Patents
一种基于json配置文件的接口测试方法 Download PDFInfo
- Publication number
- CN110489349B CN110489349B CN201910784535.5A CN201910784535A CN110489349B CN 110489349 B CN110489349 B CN 110489349B CN 201910784535 A CN201910784535 A CN 201910784535A CN 110489349 B CN110489349 B CN 110489349B
- Authority
- CN
- China
- Prior art keywords
- json
- test
- testcase
- parameterized
- creating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于JSON配置文件的接口测试方法,该方法包括步骤1:根据功能需求确定JSON中需要参数化的字段;步骤2:把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格;步骤3:创建unittest测试工程,并创建测试类;步骤4:在步骤2的基础上,下沉参数化数据,在testcase对JSON进行参数化,在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值;步骤5:testcase通过requests发起请求进行接口测试,解决了测试类的空间复杂度高以及JSON和testcase的高耦合的问题。
Description
技术领域
本发明涉计算机软件技术领域,具体的说,是一种基于JSON配置文件的接口测试方法。
背景技术
在互联网项目中,基于http协议的RESTful风格接口越来越常见,这类接口通常使用JSON作为前后端数据交互的载体。对于这类接口的自动化测试,通常使用unittest框架,在testcase中使用requests库的方法来模拟基于JSON的前后端交互。在testcase中,为了验证功能的正确性,通常需要对JSON部分字段进行参数化。
通常有两种方法来对JSON进行测试用例参数化。
1、通过文本的方式,把整个JSON作为用例的一部分进行编辑,文本中每一行数据对应一条参数化后的JSON,在测试类的testcase中通过读取已经参数化文本数据来进行测试。在具体的测试类中,由于testcase需要遍历文本测试用例集来得到具体的请求参数。该方法导致测试类的空间复杂度高。
2、把JSON定义为测试类中的一个参数。在初始化测试类的时候定义变量保存JSON,testcase具体参数化JSON。这样JSON和testcase在同一个测试类中,这种方式造成JSON和testcase的高耦合,无法在测试工程其他测试类中共享该JSON对象。
发明内容
本发明的目的在于提供一种基于JSON配置文件的接口测试方法,用于解决现有技术中在测试的时候由于testcase需要遍历文本测试用例集来得到具体的请求参数导致测试类的空间复杂度高以及把JSON定义为测试类中的一个参数,造成JSON和testcase的高耦合,无法在测试工程其他测试类中共享该JSON对象的问题。
本发明通过下述技术方案解决上述问题:
一种基于JSON配置文件的接口测试方法,该方法包括如下步骤:
步骤1:根据功能需求确定JSON中需要参数化的字段;
步骤2:把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格;
步骤3:创建unittest测试工程,并创建测试类;
步骤4:在步骤2的基础上,下沉参数化数据,在testcase对JSON进行参数化,在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值;
步骤5:testcase通过requests发起请求进行接口测试。
传统的方法中,是通过参数化数据对JSON部分字段赋值,来对JSON进行参数化,保存为文本用例。这样参数化用例由两部分组成,JSON和参数化数据,并存于一个文本表格中,如果JSON字段发生变化,需要修改所有用例的JSON值,用例的可维护性低。同时,在unittest框架下,如果每一个testcase需要读取文本用例集中的参数,需要遍历步骤2中的文本用例,这样测试类的空间复杂度高,测试工程性能低下。而本方法,通过把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格,可以起到解耦JSON提高用例可维护性的效果;现有技术一般采用把JSON定义为测试类的一个变量,参数化数据保存为文本表格,JSON和testcase在同一个测试类中,所以JSON依然和测试类是一种强耦合的关系。为了解决测试工程空间复杂度高,提高性能,在通过分层把JSON定义为测试类文件基础上,放弃文本组织参数化数据的方式,下沉参数化数据,在testcase对JSON进行参数化。在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值。这样执行请求前,testcase可以不用遍历参数化数据,以此达到降低空间复杂度的目的。因此本方法很好的解决了现有技术中由于testcase需要遍历文本测试用例集来得到具体的请求参数导致测试类的空间复杂度高以及把JSON定义为测试类中的一个参数,造成JSON和testcase的高耦合,无法在测试工程其他测试类中共享该JSON对象的问题。
进一步,所述步骤5中,接口测试包括如下步骤:
步骤5.1:创建会话session;
步骤5.2:session的post请求传入,然后得到返回值;
步骤5.3:使用断言方法assert对response进行断言,并对返回值进行判断。
进一步,所述步骤4中对JSON进行具体参数化赋值包括以下步骤:
步骤4.1:,首先在工程的一级目录下创建测试工程,然后在测试工程里面创建测试方法;
步骤4.2:使用多对json进行赋值参数化,一条参数化数据对应一个testcase方法,test.class中根据参数化JSON文件的条数创建对应数量的测试方法。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明通过把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格,一改传统的把JSON定义为测试类的一个变量,参数化数据保存为文本表格的方式,从而达到了解耦JSON提高用例可维护性的目的。
(2)本发明通过分层把JSON定义为测试类文件基础上,放弃文本组织参数化数据的方式,下沉参数化数据,在testcase对JSON进行参数化,在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值,这样执行请求前,testcase可以不用遍历参数化数据达到了降低空间复杂度的目的,又因为直接得到一个JSON对象,不需要从字符串转化为JSON对象,同时也降低了测试类的时间复杂度。
附图说明
图1为本发明的JSON分层解耦流程示意图;
图2为本发明在unittest框架下保存的文件具体说明unittest框架下测试用例执行流程示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
一种基于JSON配置文件的接口测试方法,该方法包括如下步骤:
步骤1:根据功能需求确定JSON中需要参数化的字段;
步骤2:把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格;
步骤3:创建unittest测试工程,并创建测试类;
步骤4:在步骤2的基础上,下沉参数化数据,在testcase对JSON进行参数化,在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值;
步骤5:testcase通过requests发起请求进行接口测试。
结合附图1所示,首先基于一个参数化JSON文件test.xlsx来讲解JSON参数化用例拆分方法。test.xlsx包含两条参数化用例。定义一个JSON{“name”:“zhangsan”,“age”:“”},定义两条对age进行参数化后的用例并写入test.xlsx文件.
{“name”:“zhangsan”,“age”:“20”},
{“name”:“zhangsan”,“age”:“21”}
然后拆分test.xlsx得到JSON和data.xlsx,由于test.xlsx每一条参数化用例都有JSON,提取出公共数据{“name”:“zhangsan”,“age”:“”},把余下的参数化数据20,21保存到data.xlsx文件。接着保存拆分出来的JSON为测试工程文件:
第一步,创建测试工程test.project;
第二步,在test.project一级目录下新建test.json文件;
第三步,把步骤1拆分出来的{“name”:“zhangsan”,“age”:“”}粘贴到新建的test.json文件中。
需要注意的是,除了拆分得到的JSON保存为工程文件外,参数化数据data.xlsx下沉到testcase中,不再通过遍历文本读取数据的方式对JSON进行参数化,同时一级目录的json文件可以被多个测试类共享。
结合图2所示,unittest框架下基于JSON配置文件测试执行流程包括:
第一步,读取JSON文件:在test.project工程的一级目录下创建测试工程test.class,读取test.json得到得到一个JSON对象json={“name”:“zhangsan”,“age”:“”};
第二步,参数化json:在test.class里面创建测试方法test_001;使用20对json进行赋值参数化,得到body={“name”:“zhangsan”,“age”:20};重复此步骤,用21对json进行参数化,得到body={“name”:“zhangsan”,“age”:21},一条参数化数据对应一个testcase方法。
最后,在testcase中结合requests库进行接口测试:创建会话session;session的post请求传入body:{“name”:”zhangsan”,”age”:20},得到返回值{“address”:”sichuan”};使用断言方法assert对response进行断言,判断address是否为sichuan。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (2)
1.一种基于JSON配置文件的接口测试方法,其特征在于,该方法包括如下步骤:
步骤1:根据功能需求确定JSON中需要参数化的字段;
步骤2:把JSON定义为测试工程的一个.json文件,参数化数据保存为文本表格;
步骤3:创建unittest测试工程,并创建测试类;
步骤4:在步骤2分层的基础上,下沉参数化数据,在testcase对JSON进行参数化,在测试类中使用json.load方法加载JSON文件直接得到一个JSON对象,在testcase中使用访问字典的方式对JSON进行具体的参数化赋值;
步骤5:testcase通过requests发起请求进行接口测试;
所述步骤4中对JSON进行具体参数化赋值包括以下步骤:
步骤4.1:首先在工程的一级目录下创建测试工程,然后在测试工程里面创建测试方法;
步骤4.2:使用多对json进行赋值参数化,一条参数化数据对应一个testcase方法,test.class中根据参数化JSON文件的条数创建对应数量的测试方法。
2.根据权利要求1所述的基于JSON配置文件的接口测试方法,其特征在于,所述步骤5中,接口测试包括如下步骤:
步骤5.1:创建会话session;
步骤5.2:session的post请求传入,然后得到返回值;
步骤5.3:使用断言方法assert对response进行断言,并对返回值进行判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910784535.5A CN110489349B (zh) | 2019-09-23 | 2019-09-23 | 一种基于json配置文件的接口测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910784535.5A CN110489349B (zh) | 2019-09-23 | 2019-09-23 | 一种基于json配置文件的接口测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489349A CN110489349A (zh) | 2019-11-22 |
CN110489349B true CN110489349B (zh) | 2022-06-03 |
Family
ID=68553305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910784535.5A Active CN110489349B (zh) | 2019-09-23 | 2019-09-23 | 一种基于json配置文件的接口测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489349B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760757B (zh) * | 2021-08-31 | 2023-08-22 | 成都安恒信息技术有限公司 | 一种基于har文件生成测试模型的方法及*** |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101415A (zh) * | 2018-06-25 | 2018-12-28 | 平安科技(深圳)有限公司 | 基于数据库比对的接口测试方法、***、设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155891B (zh) * | 2015-04-02 | 2019-07-05 | 阿里巴巴集团控股有限公司 | 接口测试方法、接口描述数据库生成方法及装置 |
WO2017067673A1 (en) * | 2015-10-19 | 2017-04-27 | Leaptest A/S | Method, apparatus and system for task automation of computer operations based on ui control and image/text recognition |
CN107122296B (zh) * | 2017-04-18 | 2020-06-19 | 上海雷腾软件股份有限公司 | 用于测试接口的数据断言的方法及设备 |
CN107577599A (zh) * | 2017-08-21 | 2018-01-12 | 同程网络科技股份有限公司 | 一种基于自定义脚本的接口自动化测试方法及平台 |
CN109189684B (zh) * | 2018-08-28 | 2022-02-22 | 四川长虹电器股份有限公司 | 基于Python的接口自动化测试方法 |
CN109918310A (zh) * | 2019-03-15 | 2019-06-21 | 集奥聚合(北京)人工智能科技有限公司 | 一种建模平台接口测试方法 |
CN110245083A (zh) * | 2019-06-11 | 2019-09-17 | 四川长虹电器股份有限公司 | 一种基于python的接口自动化测试方法 |
-
2019
- 2019-09-23 CN CN201910784535.5A patent/CN110489349B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101415A (zh) * | 2018-06-25 | 2018-12-28 | 平安科技(深圳)有限公司 | 基于数据库比对的接口测试方法、***、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110489349A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122368B (zh) | 一种数据校验方法、装置及电子设备 | |
CN107704568B (zh) | 一种测试数据添加的方法及装置 | |
CN115080398A (zh) | 一种接口自动化测试***及方法 | |
CN105512276B (zh) | 一种构建垃圾文件的方法、装置及电子设备 | |
CN110489349B (zh) | 一种基于json配置文件的接口测试方法 | |
CN108628734A (zh) | 一种功能程序调试方法和终端 | |
US8850407B2 (en) | Test script generation | |
CN116501415B (zh) | 命令执行方法及装置、电子设备、计算机可读存储介质 | |
CN109491904B (zh) | 一种SparkSQL应用程序的自动化测试方法和装置 | |
CN115659700B (zh) | 基于信号依赖关系的波形自动对比分析方法、设备和介质 | |
US20230097765A1 (en) | Pseudorandom Thread Generation | |
CN115827636A (zh) | 存储及从波形数据库读取逻辑***设计的仿真数据的方法 | |
CN113139359B (zh) | 基于fpga内嵌处理器的虚拟仿真测试方法 | |
CN113467761A (zh) | 一种基于Java反射原理的接口测试模板生成方法 | |
WO2021174233A2 (en) | Dynamic virtual memory translation context | |
CN113360373A (zh) | 一种移动应用Activity页面全遍历的测试方法 | |
US9251023B2 (en) | Implementing automated memory address recording in constrained random test generation for verification of processor hardware designs | |
CN112464636A (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN112328281A (zh) | 一种服务器固件刷新方法和装置 | |
CN116755684B (zh) | OAS Schema的生成方法、装置、设备及介质 | |
CA2512690A1 (en) | Enhanced scenario testing of an application under test | |
CN111723104A (zh) | 一种数据处理***中语法分析的方法、装置及*** | |
CN112612707B (zh) | 测试脚本的运行方法及装置、设备、计算机可读存储介质 | |
US9038008B1 (en) | System and method for containing analog verification IP | |
CN111665432B (zh) | 芯片引脚复用模块的验证方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |