该框架的特性

1、能够管理系统公共的数据,系统发生变化后方便切换

2、能够实现接口层级的复用,提高接口自动化脚本的可维护性

3、能够实现接口之间的关联,也就是需要结果提取器

4、能够操作数据库处理数据(预制数据、清理垃圾数据)

5、能够实现测试用例集的前置后置步骤(类似unittest的setupclass和teardownclass)

6、能够实现测试用例的前置后置步骤(类似unittest的setup和teardown)

7、各种灵活的预期结果比较器

8、测试脚本和框架代码完全分离,懂接口测试但是不懂代码的人一天即可完全掌握,超低的学习使用成本

9、支撑http/https协议的接口测试

10、灵活的扩展能力(自定义函数和自定义比较器)

 

进一步交流可以+群:929233070

准备工作

第一步: 安装python 3版本 ,

                百度安装教程较好

第二步:安装依赖库

            

            在cmd窗口中切换到依赖库文件所在的目录, 输入如下命令即可:pip install -r requirements.txt

    

轻量级数据分离接口自动化框架

 

第三步:安装pycharm(社区版就可以)

第四步:下载框架代码, 下载地址:https://github.com/duodongduode/interface_auto_test

第五步:使用pycharm打开框架代码, 恭喜你,你已经完成所有的准备工作啦。

执行demo

core下面有一个testcase_run.py文件

轻量级数据分离接口自动化框架

轻量级数据分离接口自动化框架

testcase_run.py文件最后一行代码是设置执行的用例数据,可以是文件夹, 也可以是某个指定的文件, 是一个相对路径,打开这个文件右键执行就好。

轻量级数据分离接口自动化框架

执行完成后会生成测试报告

轻量级数据分离接口自动化框架

测试报告所在的路径:

轻量级数据分离接口自动化框架

使用浏览器打开测试报告

轻量级数据分离接口自动化框架

基础使用篇

     打开框架代码之后,目前你只需要了解test_data目录,test_data目录下面有三个子目录, common、 api_template、 testcase

   

轻量级数据分离接口自动化框架

common: 定义全局变量的目录,里面有一个common.yaml文件, 里面定义全局变量

demo中定义了系统的基础路径、登陆系统的用户名和密码,  系统对应的数据库配置(数据库配置中的用户名、密码、ip、端口、库名字的变量名称不可变,否则会连接数据库失败),这个文件中可以定义任何你想要的全局变量,名字可以取任意英文名,

轻量级数据分离接口自动化框架

    

api_template:存在被测试系统的api定义,定义api的请求的url、方法、请求头、cookie、数据、验证方法、参数提取,这样做的目的是我们在写测试用例时,关注测试用例的数据,而非接口的调用,让接口维护更加容易,  使用的时候不一定非要定义api接口模板的,只是说用了会更好维护一点,用例更加简洁一些。

demo中的接口模板文档说明:

创建收藏夹的接口和删除收藏夹的接口定义

轻量级数据分离接口自动化框架

说明:

1、一个文档中可以定义多个接口

2、接口的name字段对应的值必须是英文

3、cookie和header字段类似,里面可以定义多组值

4、data:根据接口传递数据接口进行定义

5、verify: 参考比较器章节

6extractor:参考参数提取章节

testcase:测试用例目录,下面可以建子目录,让用例不同功能块的用例归档到不同的目录中, 一般一个接口建一个用例文件, 一个文件就是一个用例集

一个用例集类似于unittest框架特点,有用例集前置步骤(setupclass) 用例前置步骤(setup)  用例(testcase)  用例后置步骤(teardown)  用例集后置步骤(teardownclass)

setupclass  setup  teardown  teardownclass在一个用例集中只能最多有一个(可以没有), testcase可以有多个

用例集的执行顺序   setupclass  setup  testcase1   teardown    setup  testcase2   teardown ........     setup  testcaseN   teardown  teardownclass

从给定的顺序可以看出,和unittest框架的testcase类执行顺序完全一致。

框架中的demo, 可以看出有4个测试用例

轻量级数据分离接口自动化框架

单个测试用例结构

  

轻量级数据分离接口自动化框架

     name:测试用例的名字

     variable:定义变量,可以定义多个  如果变量定义在 setupclass  teardownclass结构中,那么变量的作用域就是整个测试用例集, 定义在 setup  testcase1      teardown   中的变量都是本用例有效

      step用例步骤, 一个用例可以有很多个步骤, 一个步骤就是一次接口调用或者数据库操作

               type: api或者sql

     

      接口的step

轻量级数据分离接口自动化框架

       name: 步骤描述, 可以没有

       type: api或者sql

       api:引用的api路径  格式:文件名_接口名 (非必须, 有的话可以减少一些)

       url:  接口请求的路径, 会覆盖引用api中的url,如果用例中没有写url,以引用api中的url为准

       method:接口请求的方法, 会覆盖引用api中的method,如果用例中没有写method,以引用api中的method为准

       header:接口请求的请求头, 会把引用api中定义的请求头合并

       cookie:接口请求的cookie, 会把引用api中定义的cookie合并

       data:发送的数据, 如果是发送json数据接口,会替换api模板中定义的数据,  其他类型的接口,都会合并api模板中定义的数据

       verify: 参考比较器

       extractor:参考参数提取

    

      sql的step:

      demo中的sql步骤

    

轻量级数据分离接口自动化框架

       name: 步骤描述, 可以没有

       type: api或者sql

       sql: 执行的sql语句

       verify: 参考比较器

       extractor:参考参数提取

验证结果比较器

    每个步骤都可以添加参数比较器,但是这个不是必须的, 而且一个参数比较器中可以添加多个验证点

     

     接口的验证结果比较器

     接口比较器demo

    

轻量级数据分离接口自动化框架

 上图中有两个验证点

   module: 取值模块 response_code(取响应码),header(从响应头取值),cookie(从cookie中取值),response_content(从响应数据中取值)

   value_path: 取值方式,是jsonpath表达式,是响应码这个字段可以不填

    operator:值比较方式

操作符

说明

=

比较两个数据相等,可以数字,也可以是字符串, 相等返回 true  ,不相等返回false

!=

比较两个数据不相等,可以数字,也可以是字符串, 不相等返回 true  ,相等返回false

>

判断两个数 实际值大于预期值, 大于返回true  否则返回false

>=

判断两个数 实际值大于等于预期值, 大于等于返回true  否则返回false

<

判断两个数 实际值小于预期值, 小于返回true  否则返回false

<=

判断两个数 实际值小于等于预期值, 小于等于返回true  否则返回false

contains

判断 两个字符串, 实际值包含预期值, 包含返回true , 不包含返回false

not contains

判断 两个字符串, 实际值不包含预期值, 不包含返回true , 不包含返回false

none

 判断实际值是none , none 返回true  ,  非 none 返回false

not none

 判断实际值是 not none , not none 返回true  , none 返回false

expect_value: 期望的值

 

     sql比较器demo:

轻量级数据分离接口自动化框架

  相比接口比较器,没有取值模块一说,  差一点在取值方式

  value_path: $.X.Y    表示取sql查询结果中的X行,第N列数据

                        $ 表示是取sql查询结果的整个内容

                       $.X      表示取sql查询结果中的第X行数据

参数提取器

   每一个步骤中可以有参数提取器,参数提取器非必须,根据需要使用,用于做接口关联,提取的参数作用域可以是全局,测试用例集 、测试用例

  

接口参数提取器demo:

轻量级数据分离接口自动化框架

   图中框起来的是接口参数提取器, 可以看到提取了两组数据

         name:提取参数后赋值的变量名

         module:取值模块   response_code(取响应码),header(从响应头取值),cookie(从cookie中取值),response_content(从响应数据中取值)

         value_path: 取值方式,是jsonpath表达式,是响应码这个字段可以不填

         parameter_level:  提取参数的级别  # testcase(用例级)、 testsuite(测试用例级)、 global(全局)

   

  sql提取器demo:

     

轻量级数据分离接口自动化框架

       name:参数提取器的名字

       value_path: $.X.Y    表示取sql查询结果中的X行,第N列数据

                        $ 表示是取sql查询结果的整个内容

                       $.X      表示取sql查询结果中的第X行数据

       parameter_level:  提取参数的级别  # testcase(用例级)、 testsuite(测试用例级)、 global(全局)

变量引用

        变量引用参考了jmeter的变量引用格式,即  ${变量名} , 如果用例级变量, 测试用例集级变量,全局变量中都有对应的名字的变量,  优先级

        用例级变量>测试用例集级变量>全局变量

         可以在测试数据的任何地方引用变量

        demo:

       

轻量级数据分离接口自动化框架

函数引用

   函数引用格式  ${{函数名(参数1,参数2.....)}}  

  

目前支撑的函数

函数名

作用

引用方法

random_choice

从给定的值中随机选择一个

${{ random_choice( 3,4,5,6,10) }}   从2,3,5,6,10中随机选择一个值

random_int

生成一个随机整数

${{ random_int(10,100)}}  生成一个10-100之间的随机整数

random_str

生一个指定长度的随机字符串

${{ random_str(10)}} 生成一个长度为10的随机字符串

使用demo

轻量级数据分离接口自动化框架

相关文章:

  • 2021-10-18
  • 2021-12-21
  • 2021-05-18
  • 2021-07-17
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
猜你喜欢
  • 2022-12-23
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-12-23
相关资源
相似解决方案