Go to file
yushaoqi eeaa658593 做了一下优化 2022-04-07 22:31:34 +08:00
.idea 'youhua' 2022-04-07 20:55:27 +08:00
config 做了一下优化 2022-04-07 22:29:47 +08:00
data/test_demo 做了一下优化 2022-04-07 22:29:47 +08:00
images 1、修复mysql工具类的问题,单独调用query方法时,只返回一条数据 2022-02-21 16:51:32 +08:00
lib 做了一下优化 2022-04-07 22:29:47 +08:00
logs 做了一下优化 2022-04-07 22:31:34 +08:00
report 做了一下优化 2022-04-07 22:31:34 +08:00
test_case 做了一下优化 2022-04-07 22:29:47 +08:00
tools 做了一下优化 2022-04-07 22:29:47 +08:00
.coverage 优化 2022-01-08 09:47:56 +08:00
.gitignore 修复 ERROR、WARNING 日志重复输出两次的问题 2022-02-14 11:40:39 +08:00
README.md 1、新增自动生成test_case层代码: 2022-03-16 13:20:33 +08:00
pytest.ini 调整目录结构 2022-01-05 10:01:24 +08:00
requirements.txt 调整目录结构 2022-01-05 10:01:24 +08:00
run.py 'youhua' 2022-04-07 20:55:27 +08:00

README.md

框架介绍

本框架主要是基于 Python + pytest + allure + log + yaml + mysql + 钉钉通知 + Jenkins 实现的接口自动化框架。

如果对您有帮助,请点亮 小星星 以表支持,谢谢

框架优势

本框架不收取任何费用, 其优势在于测试人员直接编写测试用例,运行框架可自动生成测试代码。 框架支持多环境、多角色任意切换,支持接口响应断言以及数据库断言。

实现功能

  • 测试数据隔离, 实现数据驱动
  • 支持多接口数据依赖: 如A接口需要同时依赖B、C接口的响应数据作为参数
  • 数据库断言: 直接在测试用例中写入查询的sql即可断言无需编写代码
  • 动态多断言: 如接口需要同事校验响应数据和sql校验支持多场景断言
  • 自动生成用例代码: 测试人员在yaml文件中填写好测试用例, 程序可以直接生成用例代码,纯小白也能使用
  • 统计接口的运行时长: 拓展功能,订制开关,可以决定是否需要使用
  • 日志模块: 打印每个接口的日志信息,同样订制了开关,可以决定是否需要打印日志
  • 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知
  • 自定义拓展字段: 如用例中需要生成的随机数据,可直接调用
  • 多线程执行

目录结构

├── Cache                       // 存放缓存文件
├── config                      // 配置
│   ├── conf.yaml               // 公共配置
│   ├── setting.py              // 环境路径存放区域
├── data                        // 测试用例数据
├── docs                        // 文档
├── lib                         // 对象层,用作于接口的调用
├── log                         // 日志层
├── report                      // 测试报告层
├── test_case                   // 测试用例代码
├── tool                        // 所有公共模块的封装 
│   └── allureDataControl.py    // allure报告数据清洗
│   └── assertControl.py        // 断言模块
│   └── cacheControl.py         // 缓存模块
│   └── dingtalkControl.py      // 钉钉发送通知
│   └── excelControl.py         // 读取excel文件
│   └── gettimeControl.py       // 时间模块
│   └── logControl.py           // 日志模块
│   └── logDecorator.py         // 日志装饰器
│   └── mysqlControl.py         // 数据库模块
│   └── regularControl.py       // 正则模块
│   └── requestControl.py       // 请求模块
│   └── runtimeControl.py       // 响应时长统计模块
│   └── sendmailControl.py      // 发送邮件
│   └── testcaseAutomaticControl.py      // 自动生成测试代码
│   └── yamlControl.py          // yaml文件
├── Readme.md                   // help
├── pytest.ini                  
├── run.py                      // 运行入口  

依赖库

allure-pytest==2.9.45
allure-python-commons==2.9.45
atomicwrites==1.4.0
attrs==21.2.0
certifi==2021.10.8
cffi==1.15.0
charset-normalizer==2.0.7
colorama==0.4.4
colorlog==6.6.0
cryptography==36.0.0
DingtalkChatbot==1.5.3
execnet==1.9.0
Faker==9.8.3
idna==3.3
iniconfig==1.1.1
jsonpath==0.82
packaging==21.3
pluggy==1.0.0
py==1.11.0
pycparser==2.21
PyMySQL==1.0.2
pyOpenSSL==21.0.0
pyparsing==3.0.6
pytest==6.2.5
pytest-forked==1.3.0
pytest-xdist==2.4.0
python-dateutil==2.8.2
PyYAML==6.0
requests==2.26.0
six==1.16.0
text-unidecode==1.3
toml==0.10.2
urllib3==1.26.7
xlrd==2.0.1
xlutils==2.0.0
xlwt==1.3.0

安装Python、Pip环境创建虚拟环境

一、安装Python环境

# 1、下载Python程序
# Python包地址https://www.python.org/ftp/python/
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz

# 2、解压Python-3.8.5.tgz
tar -zxvf Python-3.8.5.tgz

# 3、编译安装
sudo mkdir /usr/local/python3.8.5
cd Python-3.8.5
sudo ./configure --prefix=/usr/local/python3.8.5
sudo make && sudo make install

# 4、建立软链接
sudo ln -s /usr/local/python3.8.5/bin/python3 /usr/bin/python3
sudo ln -s /usr/local/python3.8.5/bin/pip3 /usr/bin/pip3

# 5、验证安装
python3 -V
pip3 -V

二、安装虚拟环境、创建虚拟环境
# 1、安装虚拟环境virtualenv
yum install -y python-virtualenv

# 2、创建虚拟环境
# 在项目根目录创建虚拟环境
virtualenv -p python3 venv

# 3、激活虚拟环境
source ./venv/bin/activate

# 4、退出虚拟环境
deactivate

安装教程

输入如下命令,安装本框架的所有第三方库依赖

pip install -r requirements.txt

使用说明

config-->conf.yaml

img.png

首先是配置文件,这里主要存放了一个公共的配置数据,如项目名称、钉钉、邮箱、企业微信、数据库等相关的配置全部都在这里 所有的字段在conf.yaml中都有相关的注释自行修改即可。

目前框架主要是用的企业微信通知,在用例执行成功之后发送通知,通知内容如下,可以根据公司主要使用的通讯工具自行更改。 在公共方法中分别封装了钉钉通知、以及邮箱通知。

注意点:

之前为了小伙伴们拉下代码执行的时候不受影响,企业微信、钉钉、邮箱的通知配置的都是我的

我发现很多拉代码的小伙伴这里配置都没改,所有的通知都发到我这里来了哦~~麻烦看到这里的小伙伴自己在conf.yaml改一下相关配置

img.png

如程序执行执行异常时,会自动收集错误信息,并将内容发送邮件。

img.png

config --> setting.py

setting.py 文件主要是用来存放项目中所有文件的目录地址

更改过一些公用的配置之后,下面我们来开始编写自动化

data 用来存放测试用例

img.png

上方主要是测试用例,测试用例是整个自动化程序中非常重要的一部分,需要严格按照我上方图中的格式进行编写。 下面我会对每个字段依次进行解释对应的作用。

  • url: 请求接口的地址,${{MerchantHost}} 为接口的host放在conf.yaml 文件中可以更改成公司项目的host
  • method: 请求方式目前支持GET、POST、DELETE、PUT本人公司目前设计到的请求方式只有这四种如有需求可自行添加
  • detail: 用例描述,程序中未强制要求必填,但是最好是每个用例都填写上,打印日志以及生成代码的函数注释,都会依赖用例描述
  • header: 请求头
  • requestType: 必填这个字段主要取决于你请求的是参数是以json、params、file、或者data的格式
  • data: 请求参数 如接口中需要的请求参数全部放在data中
  • allureEpic: 作用与allure装饰器必填如有多个测试用例只需要写在第一个用例中就行
  • allureFeature: 作用于allure装饰器必填如有多个测试用例只需要写在第一个用例中就行
  • resp: 响应断言相关的数据
    • 响应接口的参数字段(如code): code就是接口的响应状态码这些参数都是自己加的。
      • jsonpath: 这里获取到对应的接口数据主要使用到了jsonpath。如果有不了这一块的大家可以看我的博客https://blog.csdn.net/weixin_43865008/article/details/118371620
      • value: 预期值这里会根据你前面jsonpath中获取到的响应数据然后和你添加的预期值进行断言。如果断言失败会打印对应的日志信息以及allure测试报告中也会呈现这条用例的失败状态
      • type: 断言的类型,如判断是否相等,则使用”==“,或者”!=“则表示内容不相等”IN“则表示预期值是否在响应值中对应的还有"NOTIN"
      • AssertType: 目前自动化支持两种断言类型接口响应断言和数据库断言。如果是接口响应断言则AssertType的值可不填如果值为"SQL"的话则走数据库断言。为sql的时候sql查询出来的数据类型是字典类型因此value值会从sql查询出来的字段中使用jsonpath的形式读取sql查询出来的数据
    • 如有多个数据,则可像上方图中一样,创建多个字段
    • sql: sql 是以 LIST 的类型存储的可以将我们这个接口需要依赖的sql语句全部放在这里程序中会循环查询出sql中的所有语句并且返回数据库中的值从而与接口响应的值做匹配。这里也是对于sql多表联查不太会的朋友的福音。如果不会多表联查的话可以编写单表sql程序中会将所有单表的数据内容全部查询出来
  • 接口中如有多条测试用例,则以上方格式为例,添加多个即可。

lib---> xxx.py

假设我们按照上方图中的格式内容创建了一个用例创建成功之后yaml文件的用例创建之后下面我们来生成自动化脚本执行第一条用例。 img.png

首先我们找到tools目录下的 testcaseAutomaticControl.py 文件,然后执行这里的代码

执行成功之后我们可以看到lib和test_case目录下会生成一个和创建用例yaml文件名称一模一样的py文件,test_case名称会以test_开头 内容如下: img.png

下面我们就可以开始执行我们的测试用例了这里生成的文件主要类似于我们自动化模型中的PO模型生成的page

执行之后我们可以看到下方详细的请求日志信息方便我们进行用例调试lie层只是作用域单个接口的调试如果需要多接口跑业务的话直接到test_case层去做即可

img.png

test_case --> test_apply_verifycode.py

用例调试成功之后,下面我们进入编写用例脚本阶段,主要内容如下:

img.png

其中代码中关于pytest的相关内容网上的资料有非常多并且非常详情这里不做赘述。

所有的用例内容格式都为统一的目前只能生成单接口的业务用例如果需要接口执行的话还需要在case层调用对应业务的接口

用例添加完成之后执行run.py程序会执行所有文件的用例并且生成测试报告发送钉钉通知。

关于框架未来功能的规划

1、计划后期多接口业务逻辑也统一放在yaml文件中维护并且生成对应业务逻辑的相关代码 2、自动生成代码的功能计划通过多线程实现


以上便是整个框架的使用说明,这个框架属于个人业余时间开发,大家如果在使用中遇到什么问题,或者有相关建议,可以随时反馈给我, 框架内容会随着大家的反馈持续更新邮箱地址1602343211@qq.com

如果觉得框架有帮助到你,麻烦收藏一下哦~~谢谢。:)