Python实战技巧(14)一个非常好用的基于pytest框架和基于数据驱动的开源的自动化测试框架caterpillar_apitest

Python实战技巧(1)Python字典类型数据如何递归地通过点‘.’的方式访问

Python实战技巧(2)Python的pdb调试代码方法详解

Python实战技巧(3)多版本兼容安装部署(py27,py34,py35,py36,py37,py38,py39)

Python实战技巧(4)正式在pypi网站发布包的流程详解

Python实战技巧(5)Python版本兼容性测试工具tox实战详解

Python实战技巧(6)Miniconda+Pipenv安装部署开发环境实战详解

Python实战技巧(7)Pycharm如何远程调试远程执行

Python实战技巧(8)Python调用C语言

Python实战技巧(9)Python发送邮件

Python实战技巧(10)Python解析邮件

Python实战技巧(11)使用python收发邮件时需要的邮箱授权码如何获取

Python实战技巧(12)一个非常好用收发邮件、解析邮件的库caterpillar_mail

Python实战技巧(13)一个非常简单实用的Python的日志的开源库caterpillar_log

Python实战技巧(14)一个非常好用的基于pytest框架和基于数据驱动的开源的自动化测试框架caterpillar_apitest

一、安装

pip install -U caterpillar_apitest

caterpillar_apitest源码地址

二、使用步骤详细说明

2.1、接口之间没有依赖的场景

(1)在空文件夹下创建一个test_开头的py文件,如:test_demo.py,然后在同目录下创建一个文件夹用于存放excel文件,比如文件夹名称为test_datas,如下目录结构:
在这里插入图片描述
(2)在py文件中编写如下代码:
如下,只需要修改base_url即可

import pytest
import allure
from caterpillar_apitest import ApiTest

@allure.title("用例名称:{case_name}")
@pytest.mark.parametrize('case_id, case_name, url, method, headers, data, dependency, assert_str, mark',
                         ApiTest.get_all_test_datas(__file__, "test_datas"))  # 此处第二参数test_datas需要与步骤(1)中创建的文件夹名一致
def test_api(case_id, case_name, url, method, headers, data, dependency, assert_str, mark):
    base_url="http://www.httpbin.org"   # 被测网站的基础url,如果是内网即 http://内网ip:Port 
    url=base_url+url

    ApiTest.run(case_id, case_name, url, method, headers, data, dependency, assert_str, mark)

if __name__=="__main__":
    pytest.main(["-s","test_demo.py"])

(3)然后就可以在test_datas目录下创建excel文件即可,注意excel文件需要保存为xlsx格式,excel表格中的格式需要按照如下格式填写,这里需要说明的是:
1)表格的头必须使用这几个字段
2)case_id列为用例id,需要保持唯一性
3)url即为相对路径
4)headers字段根据实际需要填写,字典格式,如果没有就不用填
5)data为字典格式
6)断言的格式需要根据下述数据结构体填写:
数据结构如下,比如如下case_id为case_id_1的检查点是状态码位200,则断言语句为 case_id_1.status_code==200,即按照这种结构将字典的层次关系使用点来表达清楚即可,断言支持的运算符有 ==,>=, <=, !=, >, <, not in, in, is not, is

case_data={
    
    
            "case_id_1":{
    
    
                "headers":{
    
    },
                "data":{
    
    },
                "response":{
    
    },
                "status_code":200
            },
            "case_id_2":{
    
    
                "headers":{
    
    },
                "data":{
    
    },
                "response":{
    
    },
                "status_code":200
            }
        }

在这里插入图片描述
(4)上述表格中即是使用httpbin.org网站测试的,执行结果如下:
在这里插入图片描述

2.2、接口之间存在依赖的场景

(1)如下,假设第二个接口的headers中的cookies需要使用第一个接口中的cookies,则excel中如下编写
在这里插入图片描述
(2)假设第二接口的data中的id字段需要使用第一个接口的返回值中的id字段,则如下
在这里插入图片描述

三、版本发布记录

1.0.16 发布日期:2021-11-24

  • 修复bug(https://gitee.com/redrose2100/caterpillar_apitest/issues/I4JOTO)

1.0.15 发布日期:2021-11-24

  • 解决接口返回json数据的异常的问题

1.0.14 发布日期:2021-11-24

  • 增加 > 和 < 断言运算符

1.0.13 发布日期:2021-11-24

  • 解决读取xlsx文件告警的问题

1.0.12 发布日期:2021-11-24

  • 解决获取断言操作符异常的bug

1.0.11 发布日期:2021-11-24

  • 解决data未写入ApiTest.case_data的问题

1.0.10 发布日期:2021-11-24

  • 解决接口返回码为整数,期望值为字符串,不一致的问题

1.0.9 发布日期:2021-11-24

  • 增加断言运算符处理方法

1.0.8 发布日期:2021-11-24

  • 增加run方法封装

1.0.7 发布日期:2021-11-24

  • 增加api_assert断言方法

1.0.6 发布日期:2021-11-24

  • 增加框架中对接口依赖的处理

1.0.5 发布日期:2021-11-24

  • 增加将接口返回数据写入数据结构中的操作

1.0.4 发布日期:2021-11-24

  • 增加request方法

1.0.3 发布日期:2021-11-23

  • 增加loads方法

1.0.2 发布日期:2021-11-23

  • 增加获取指定目录下所有xlsx文件的测试数据(测试数据模板确定)

1.0.1 发布日期:2021-11-23

  • 增加获取指定目录下所有xlsx文件

Guess you like

Origin blog.csdn.net/redrose2100/article/details/121525929