From 54fea86d1b844915ba52592591ec5ac382bb9f9d Mon Sep 17 00:00:00 2001 From: chenyongzhiaaron <262667641@qq.com> Date: Wed, 5 Jul 2023 18:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E5=86=99readme.md=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 3 +- README.md | 386 ++++++++++++++++++------------------ cases/cases/test_cases.xlsx | Bin 21416 -> 21467 bytes directory_tree.txt | 136 +++++++++++++ generate_tree.py | 89 ++++----- image/img_18.png | Bin 0 -> 107611 bytes main_labor_register.py | 13 -- run.py | 16 +- 8 files changed, 388 insertions(+), 255 deletions(-) create mode 100644 directory_tree.txt create mode 100644 image/img_18.png delete mode 100644 main_labor_register.py diff --git a/.idea/encodings.xml b/.idea/encodings.xml index d241519..b3f57ff 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -3,6 +3,7 @@ + @@ -13,8 +14,8 @@ + - diff --git a/README.md b/README.md index d4d024f..639e01e 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,29 @@ # 使用文档 -#### 项目介绍 +## 项目介绍 -接口自动化测试项目1.0 +接口自动化测试项目2.0 -#### 软件架构 +### 软件架构 本框架主要是基于 Python + unittest + ddt + HTMLTestRunner + log + excel + mysql + 企业微信通知 + Jenkins 实现的接口自动化框架。 -##### 想要`2.0`版本尚未开源的小伙伴,可以私聊勇哥哈。 - * 项目参与者: 陈勇志 * 技术支持邮箱: 262667641@qq.com * 个人微信: blue-blue-lemon * 个人博客地址: [https://home.cnblogs.com/u/Nephalem-262667641](https://home.cnblogs.com/u/Nephalem-262667641) +* 微信公众号:测试玩家勇哥 -## 前言 +### 前言 公司突然要求你做自动化,但是没有代码基础不知道怎么做?或者有自动化基础,但是不知道如何系统性的做自动化, -放在 excel 文件中维护,不知道如何处理多业务依赖的逻辑? +放在 excel 文件中维护,不知道如何处理多业务依赖的逻辑,又或者你想想postman一样可以给每一条测试用例编写一些代码来处理脚本,但是又不知道怎么做。 +那么 gitee 中勇哥的自动化测试框架,将为你解决这些问题。 + +### 框架优势 + +本框架不收取汾河费用,其优势在于测试人员直接编写测试用例,运行一个测试文件就可以自动执行所有测试用例。 -那么本自动化框架,将为你解决这些问题。 框架主要使用 python 语言编写,结合 unittest 进行二次开发,用户仅需要在 excel 文件中编写测试用例, 编写成功之后,会自动生成测试用例的代码,零基础代码小白,也可以操作。 @@ -28,198 +31,182 @@ 本框架支持动态脚本函数扩展,可以随时内部预置函数,或者增加动态脚本,通过固定格式写法 {{fun()}} 动态调用 接口 unittest 框架生成 HTML 报告及 excel 用例执行报告,并且发送 企业微信通知/ 钉钉通知/ 邮箱通知/ 飞书通知,灵活配置。 -## 实现功能 +### 实现功能 -* 测试数据隔离, 实现数据驱动 -* 直接多套环境使用,比如测试用例相同,但是环境不同,只需在 excel 中启用需要执行的环境即可 -* 支持多接口数据依赖: 如A接口需要同时依赖 B、C 接口的响应数据作为参数,或者 c 接口断言需要动态使用A接口的入参作为预期结果 -* 数据库断言: 直接在测试用例中写入查询的 sql 即可断言,无需编写代码 -* 动态多断言: 如接口需要同时校验响应数据和 sql 校验,支持多场景断言 -* 自动生成用例代码: 测试人员在 excel 文件中填写好测试用例, 程序可以直接生成用例代码,纯小白也能使用 -* 统计接口的运行时长: 拓展功能,订制开关,可以决定是否需要使用 -* 日志模块: 打印每个接口的日志信息,同样订制了开关,可以决定是否需要打印日志 -* 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知 -* 内置实现了一部分随意函数及自定义常用函数:如:随机字符串、任意日期时间、随机gps、随机用户身份证、地址、邮箱、企业信息等等 -* 自定义拓展函数: 如用例中需要自己实习一些函数使用,可以随时写上函数,通过 {{func()}} 随时调用 -* 支持自定义脚本代码段,类似postman一样给每一条测试用例编写一些代码,使用PM对象操作前后置数据 -* 支持导入postman或者openapi导出的json文件自动处理成测试用例,然后修改一下参数即可使用 +* 测试数据隔离, 实现数据驱动。 +* 支持多套环境使用,比如测试用例相同,但是环境不同,只需在 excel 中启用需要执行的环境即可。 +* 支持多接口数据依赖: 如A接口需要同时依赖 B、C 接口的响应数据作为参数,或者 c 接口断言需要动态使用A接口的入参作为预期结果。 +* 数据库断言: 直接在测试用例中写入查询的 sql 即可断言,无需编写代码。 +* 动态多断言: 如接口需要同时校验响应数据和 sql 校验,支持多场景断言。 +* 支持自定义脚本代码(python语言),可以让你像 postman 一样给每一条测试用例编写任意前后置脚本代码,内置了 action 对象操作及一些方法可以很便捷的处理前置或后置脚本。 +* 自动生成用例代码: 测试人员在 excel 文件中填写好测试用例, 程序可以直接生成用例代码,纯小白也能使用。 +* 支持自定义拓展函数: 如用例中需要使用自己实现的函数,可以随时在指定的目录下面写上函数,通过 {{func(*args,**kwargs)}} 随时调用你自己设置的函数。 +* 内置实现了一部分随意函数及自定义常用函数:如:随机字符串、任意日期时间、随机gps、随机用户身份证、地址、邮箱、企业信息等等,用户还可以自己定义任意函数,无门槛使用。 +* 统计接口的运行时长: 拓展功能,订制开关,可以决定是否需要使用。 +* 支持用例定时器运行,比如:B用例执行前需要A用例执行后等待5秒才开始执行,可以随意加上等待时间。 +* 日志模块: 打印每个接口的日志信息,同样订制了开关,可以决定是否需要打印日志。 +* 钉钉、企业微信通知、邮件通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知。 +* 封装了发送MQTT的类,支持发送MQTT消息。 +* 支持导入postman或者swargs导出的json文件自动处理成测试用例,然后修改一下参数即可使用。 -## 遇到问题 +### gitee 地址 +接口自动化框架地址:[点我查看](https://gitee.com/chenyongzhiaaron_admin/apitest/edit/master/README.md) + +### 遇到问题 * 请仔细阅读文档,文档中几乎可以帮你避免所有的问题 * 可以添加微信: blue-blue-lemon, 添加微信会将你拉倒自动化交流群中,群内有很多热心的小伙伴,但是前提是希望你已经阅读了文档中的所有内容 * 你也可以请作者为你解答,当然在我时间空闲的时候,也可以让作者为你一对一服务,当然是收费的。 + ## 目录结构 ```markdown . -├── OutPut -│ ├── Log // 日志 -│ ├── Reports // html|json 报告 -│ │ ├── T 测试报告.html -│ │ ├── T.html -│ │ ├── history.json -│ │ ├── report.html -│ │ ├── test_api 测试报告.html -│ │ └── test_api.html -│ └── __init__.py -├── Pipfile -├── Pipfile.lock -├── README.md // 帮助 -├── cases // 测试用例数据文件夹 -│ ├── cases // 测试用例 -│ │ ├── test_api.xlsx -│ │ ├── test_openapi_cases.xlsx -│ │ └── test_postman_cases.xlsx -│ ├── templates // 测试用例模板 -│ │ └── template.xlsx -│ └── temporary_file // openapi| postman 导出的 json文件存放位置 -│ ├── apifox.json -│ ├── openapi.json -│ └── postman.json -├── common // 功能配置及核心功能函数 -│ ├── __init__.py -│ ├── bif_functions // 内置一些函数工具 -│ │ ├── __init__.py -│ │ ├── bif_datetime.py // 内置日期时间函数 -│ │ ├── bif_hashlib.py // 内置hash 函数 -│ │ ├── bif_json.py // 内置json解析函数 -│ │ ├── bif_list.py // 内置列表操作函数 -│ │ ├── bif_random.py // 内置随机函数 -│ │ ├── bif_re.py // 内置正则函数 -│ │ ├── bif_str.py // 内置字符串函数 -│ │ ├── bif_time.py // 内置时间函数 -│ │ └── random_tools.py // 内置其他随机函数 -│ ├── config.py // 公共基础环境路径存放位置:如日志,测试测试脚本路径 -│ ├── crypto // 加密工具 -│ │ ├── __init__.py -│ │ ├── encryption_aes.py // aes 加密 -│ │ ├── encryption_base64_to_image.py // base64 转图片工具 -│ │ ├── encryption_main.py // 执行加入函数入口,对应excel中的加密方法选项,结合 extensions 中的 sign 可自定义加密规则 -│ │ ├── encryption_rsa.py // 常用的字符串加密工具函数 -│ │ └── encryption_str.py // rsa 加密 -│ ├── data_extraction // 数据提取器 -│ │ ├── __init__.py -│ │ ├── analysis_json.py // json 字典分析函数,类似 jsonpath -│ │ ├── assert_dict.py // 旧断言字段函数 (暂时舍弃) -│ │ ├── data_extractor.py // 数据提取函数 -│ │ ├── dependent_parameter.py // 数据替换函数 -│ │ └── dict_get.py // 旧路径提取函数 -│ ├── database // 数据库操作工具 -│ │ ├── __init__.py -│ │ ├── do_mongo.py // mongoDB 操作工具 -│ │ ├── execute_sql.py // mysql 操作工具 -│ │ ├── do_psycopg.py // presto 操作工具 -│ │ └── do_redis.py // redis 操作工具 -│ ├── variables.py // 数据依赖类 -│ ├── file_handling // 文件操作 -│ │ ├── __init__.py -│ │ ├── do_bat_sql.py // 批量读取文件下的 sql 文件并打开文件执行文件内的每条 sql -│ │ ├── do_excel.py // excel 处理 -│ │ ├── excel.py // excel 处理(旧) -│ │ ├── get_all_path.py // 递归获取目录下所有的文件的路径 -│ │ ├── get_conf_data.py // 读取配置文件(不使用,更改为 pytest 模式时,可能 pytest 需要) -│ │ ├── get_excel_init.py // 读取 excel 中初始化 init 表 的数据 -│ │ ├── get_file.py // 获取指定目录内的所有文件(没卵用) -│ │ ├── get_folder.py // 获取指定路径下的所有文件夹及文件(没卵用) -│ │ └── read_file.py // 文件读取(没卵用) -│ ├── random_tools // 独立的随机工具类,主要用于自动创建一些测试数据给收工测试使用 -│ │ ├── __init__.py -│ │ ├── credit_cards // 随机银行卡 -│ │ │ ├── __init__.py -│ │ │ ├── bankcard.py -│ │ │ └── cardbin.csv -│ │ ├── credit_identifiers // 随机企业唯一信用代码 -│ │ │ ├── __init__.py -│ │ │ ├── address.json -│ │ │ ├── credit_identifier.py -│ │ │ └── unified_social_credit_identifier.py -│ │ ├── emails // 速记邮件 -│ │ │ ├── __init__.py -│ │ │ ├── email.py -│ │ │ └── free_email.csv -│ │ ├── identification // 随机身份证 -│ │ │ ├── __init__.py -│ │ │ ├── area.csv -│ │ │ └── id_card.py -│ │ ├── names // 随机中国人姓名 -│ │ │ ├── __init__.py -│ │ │ ├── first_name_boy.csv -│ │ │ ├── first_name_girl.csv -│ │ │ ├── last_name.csv -│ │ │ └── name.py -│ │ └── phone_numbers // 随机手机号 -│ │ ├── __init__.py -│ │ ├── phone.py -│ │ └── phone_area.csv -│ ├── utils // 杂七杂八的工具包 -│ │ ├── WxworkSms.py // 企业微信,需要使用其他工具,可以在这个模块下扩展增加脚本 -│ │ ├── __init__.py -│ │ ├── captcha.py // 识别图片转字符串,常用于验证码登录 -│ │ ├── function_run_time.py // 运行时间装饰器(没卵用) -│ │ ├── hooks.py // 请求钩子函数(暂时没用到) -│ │ ├── http_client.py // http请求封装 -│ │ ├── logger.py // 日志记录loggin -│ │ ├── mylogger.py // 日志记录loguru -│ │ ├── parsing_openapi.py // 解析 openapi导出的文件 json-->excel -│ │ ├── parsing_postman.py // 解析 postman导出的文件 json-->excel -│ │ ├── request.py // 请求封装(暂时没用到) -│ │ ├── request_processor.py // 请求处理器(暂时没用到) -│ │ ├── retry.py // 重试(实际没啥用) -│ │ └── singleton.py // 单例模式 -│ └── validation // 断言及加载动条函数工具包 -│ ├── __init__.py -│ ├── comparator_dict.py // 自定义比较器名词释义 -│ ├── comparators.py // 自定义比较器 -│ ├── extractor.py // 提取器 -│ ├── load_modules_from_folder.py // 动态从模块中加载函数(暂未使用) -│ ├── loaders.py // 动态加载函数及加载内置比较器等工具包 -│ └── validator.py // 断言校验器 -├── debug // 调试使用,与实际程序没啥关系 -├── excel_converter.py // postman|openapi 导出的json文件转excel测试用例的程序入口 -├── extensions // 动态扩展程序文件包 -│ ├── __init__.py -│ ├── ext_method_online.py // 动态扩展方法 -│ └── sign.py // 自定义签名规则 -├── generate_tree.py // 目录树生成文件 -├── image // 图片 -│ ├── wx.jpg -│ └── zfb.jpg -├── main.py // 自动化测试执行入口文件 -├── main_personal_information.py // 随机个人信息 -├── pipenv_command.text -├── scripts // 动态测试用例脚本库 -│ └── __init__.py -├── temp // 临时脚本文件,与自动化测试无关 -│ ├── __init__.py -│ ├── excel_handler.py -│ ├── extent -│ │ ├── __init__.py -│ │ ├── api.py -│ │ ├── config.py -│ │ └── test_api_script.py -│ ├── fun.md -│ ├── get_zl.py -│ ├── mqtt_sender.py -│ ├── parsing_jmeter.py -│ ├── rabbit_mq_sender.py -│ └── test_log.py -└── test_script // 执行测试逻辑脚本文件 - ├── __init__.py - ├── automation - │ ├── __init__.py - │ └── test_api_script.py // 测试执行文件 - └── script // 重新封装的测试脚本框架 - ├── __init__.py - ├── baseclass.py - └── test_api.py +└── cases/ // 测试用例数据文件夹 + └── cases/ // 测试用例 + └── test_cases.xlsx + └── templates/ // 测试用例模板 + └── template.xlsx + └── temporary_file/ // swagger| postman 导出的 json文件存放位置 + └── openapi.json + └── postman.json +└── common/ // 配置及核心功能代码 + └── bif_functions/ // 内置函数工具 + └── __init__.py + └── bif_datetime.py // 内置日期时间函数 + └── bif_hashlib.py // 内置hash 函数 + └── bif_json.py // 内置json解析函数 + └── bif_list.py // 内置列表操作函数 + └── bif_random.py // 内置随机函数 + └── bif_re.py // 内置正则函数 + └── bif_str.py // 内置字符串函数 + └── bif_time.py // 内置时间函数 + └── random_tools.py // 内置其他随机函数 + └── crypto/ // 加密工具 + └── __init__.py + └── encrypt_data.py // 执行数据加密封装入口 + └── encryption_aes.py // aes 加密 + └── encryption_base64_to_image.py // base64 转图片工具 + └── encryption_main.py // 执行加入函数入口,对应excel中的加密方法选项,结合 extensions 中的 sign 可自定义加密规则 + └── encryption_rsa.py // rsa 加密 + └── encryption_str.py // 常用的字符串加密工具函数 + └── data_extraction/ // 数据提取器 + └── __init__.py + └── analysis_json.py // json 字典分析函数,类似 jsonpath + └── assert_dict.py // 旧断言字段函数 (暂时舍弃) + └── data_extractor.py // 数据提取函数 + └── dependent_parameter.py // 数据替换函数 + └── dict_get.py // 旧路径提取函数 + └── database/ // 数据库操作工具 + └── __init__.py + └── execute_sql_files.py // sql 批处理工具 + └── mongodb_client.py // mongoDB 操作工具 + └── mysql_client.py // mysql 操作工具 + └── psycopg_client.py // presto 操作工具 + └── redis_client.py // redis 操作工具 + └── file_handling/ // 文件操作 + └── __init__.py + └── do_excel.py // excel 处理 + └── excel.py // excel 处理 + └── file_utils.py // json、yarm等文件操作以及一些目录操作 + └── http_client/ // http_client 发送http的工具 + └── __init__.py + └── http_client.py // http 请求封装 + └── MQclient/ // MQ 工具 + └── __init__.py + └── mqtt_client.py // mqtt 工具 + └── rabbit_mq_client.py // rmq 工具 + └── random_tools/ // 常用随机数工具包 + └── credit_cards/ // 随机银行卡 + └── __init__.py + └── bankcard.py + └── cardbin.csv + └── credit_identifiers/ // 随机企业唯一信用代码 + └── __init__.py + └── address.json + └── credit_identifier.py + └── unified_social_credit_identifier.py + └── emails/ // 随机邮箱 + └── __init__.py + └── email.py + └── free_email.csv + └── identification/ // 随机身份证 + └── __init__.py + └── area.csv + └── id_card.py + └── names/ // 随机姓名 + └── __init__.py + └── first_name_boy.csv + └── first_name_girl.csv + └── last_name.csv + └── name.py + └── phone_numbers/ // 随机手机号 + └── __init__.py + └── phone.py + └── phone_area.csv + └── __init__.py + └── utils/ // 工具包 + └── __init__.py + └── captcha.py // 识别图片转字符串,常用于验证码登录 + └── load_and_execute_script.py // 动态加载自定义python文件工具 + └── logger.py // loggin 日志封装 + └── mylogger.py // loguru 日志封装 + └── parsing_openapi.py // 解析 swagger 文件 转测试用例 + └── parsing_postman.py // 解析 postman 文件 转测试用例 + └── singleton.py // 单例 + └── WxworkSms.py // 企业微信 + └── validation/ // 断言及加载动条函数工具包 + └── __init__.py + └── comparator_dict.py // 自定义比较器名词释义 + └── comparators.py // 自定义比较器 + └── extractor.py // 提取器 + └── load_modules_from_folder.py // 动态从模块中加载函数 + └── loaders.py // 动态加载函数及加载内置比较器等工具包 + └── validator.py // 断言校验器 + └── __init__.py + └── action.py // 核心类 + └── config.py // 配置文件 + └── variables.py // 数据操作类 +└── extensions/ // 动态扩展模块目录 + └── __init__.py + └── ext_method_online.py // 动态扩展方法模块 + └── sign.py // 加签模块 +└── image/ + └── wx.jpg + └── zfb.jpg +└── OutPut/ // 日志报错 + └── log/ + └── 2023-06-25.log + └── 2023-07-04.log + └── 2023-07-05.log + └── reports/ + └── history.json +└── scripts/ // 动态脚本目录 + └── __init__.py + └── prepost_script_安全纯净大屏_2.py // 对应每条测试用例的前后置脚本(可选) + └── request_script_sheetname_id.py +└── test_script/ // 测试脚本核心模块 + └── __init__.py + └── test_api.py +└── directory_tree.txt +└── excel_converter.py // postman、swagger 文件转换主入口模块 +└── generate_tree.py // 项目目录树模块 +└── main_personal_information.py // 随机个人信息核心入口 +└── pipenv_command.text +└── Pipfile +└── Pipfile.lock +└── README.md +└── run.py // 自动化测试执行入口模块 ``` -## 依赖库 + +## 安装教程 + + +### 依赖库 参考 pipenv --Pipfile 虚拟环境文件,不一一列出 -## 安装教程 首先,执行本框架之后,需要搭建好 python 环境,python 环境搭建自行百度 @@ -229,9 +216,10 @@ #### 使用说明 -1. 提取参数方式可以使用正则,jsonpath及json逐层取值 -2. xxxx -3. Personalinformation +1. 测试用例只需要在 cases/cases/xxx.xlsx 文件填写测试用例即可,可以参考测试用例模板文件,由于模板文件的用例已经做了敏感信息处理,所以执行执行模板的用例应该会报错 +2. 运行用例可以直接进入到 test_script/test_xxx.py 中,执行test_xxx.py文件,也可以直接运训 最外层的 run.py文件, +3. Personalinformation.py 这个文件是用来生成一些测试数据,方便做功能测试或者其他一般性测试使用 + ## 开放测试接口文档 @@ -243,6 +231,28 @@ ## 如何创建用例 +### excel中的测试用例相关字段介 +下面是一个关于一个用例中的所有字段,字段不是全部必填 +![字段解释](image/img_18.png) +下面对每一个字段的作用,做出解释: +* Id:测试用例的id,唯一,必填 +* Name: 测试用例的名称,必填 +* Description: 测试用例描述,可选,建议填写,生成的报告会用到这个字段 +* Run: 是否运行这条用例,如果不填或填写的不是YES/yes,则不运行这条用例 +* Time: 定时器,数字,非必填,填写则会等待多少秒后运行这条用例 +* Method: 请求方法,支持所有的http请求方法,get/post/put/patch等等 +* Url: 接口路径或者整个请求地址,如果不带域名,则会自动去init表中拼接host上去,Url中可以参数化,如: /test/api/get/{{id}}/{{func()}} +* Headers: 请求头,字典填写方式,如:{"Content-Type":"application/json","token":"{{token}}",'time':'{{timestamp()}}'} +* Headers Crypto: 请求头是否加密,可以自定义加密方式,然后这里输入你的加密方法名即可,如 MD5\sha1 等 +* Query Str: 查询字符串参数,也就是URL过长的时候,可以将URL后面的参数拆出来填写在这里,字典的方式填写,支持参数化 +* Request Data Type: 请求参数类型,有json,file,params,data等等这几种 +* Request Data: 请求参数,字典形式填写,支持参数化,如:{"projectId":"{{projectId}}","tvSequence":"{{random_string()}}"} +* Setup Script: 前置脚本,可以直接写 pthon 代码,比如类,函数,等等,如果是函数,类一定要调用才会执行。编写方式见后面的讲解 +* Request Data Crypto: 请求参数是否加密,可以填写你需要的加密方式,如 MD5\sha1 等 +* Extract Request Data:提取请求参数的字段或整个请求参数字典,如:{"k": "$.projectId", "x": "$.data[0].age[3].a"} +* Jsonpath: 提取响应结果的 jsonpath 表达式,示例:默认情况下若表达式结果只有一个值那么就存为字符串,如果表达式执行结果有多个值,那么就存为列表,表达式填写方式如下: {"k": "$.data", "x": "$.data[0].age[3].a"} + + ### 创建用例步骤 1. 在 data 文件夹下方创建被测模块或者系统,然后在系统下创建相关的 excel 用例 diff --git a/cases/cases/test_cases.xlsx b/cases/cases/test_cases.xlsx index 193b6980ad2ad088dc52a339aadee8ea453da669..a606d08d5878f3656b0bf1a20fd54489559f100f 100644 GIT binary patch delta 6862 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 diff --git a/directory_tree.txt b/directory_tree.txt new file mode 100644 index 0000000..97c3680 --- /dev/null +++ b/directory_tree.txt @@ -0,0 +1,136 @@ +. + cases/ + cases/ + test_cases.xlsx + templates/ + template.xlsx + temporary_file/ + openapi.json + postman.json + common/ + bif_functions/ + __init__.py + bif_datetime.py + bif_hashlib.py + bif_json.py + bif_list.py + bif_random.py + bif_re.py + bif_str.py + bif_time.py + random_tools.py + crypto/ + __init__.py + encrypt_data.py + encryption_aes.py + encryption_base64_to_image.py + encryption_main.py + encryption_rsa.py + encryption_str.py + data_extraction/ + __init__.py + analysis_json.py + assert_dict.py + data_extractor.py + dependent_parameter.py + dict_get.py + database/ + __init__.py + execute_sql_files.py + mongodb_client.py + mysql_client.py + psycopg_client.py + redis_client.py + file_handling/ + __init__.py + do_excel.py + excel.py + file_utils.py + http_client/ + __init__.py + http_client.py + MQclient/ + __init__.py + mqtt_client.py + rabbit_mq_client.py + random_tools/ + credit_cards/ + __init__.py + bankcard.py + cardbin.csv + credit_identifiers/ + __init__.py + address.json + credit_identifier.py + unified_social_credit_identifier.py + emails/ + __init__.py + email.py + free_email.csv + identification/ + __init__.py + area.csv + id_card.py + names/ + __init__.py + first_name_boy.csv + first_name_girl.csv + last_name.csv + name.py + phone_numbers/ + __init__.py + phone.py + phone_area.csv + __init__.py + utils/ + __init__.py + captcha.py + load_and_execute_script.py + logger.py + mylogger.py + parsing_openapi.py + parsing_postman.py + singleton.py + WxworkSms.py + validation/ + __init__.py + comparator_dict.py + comparators.py + extractor.py + load_modules_from_folder.py + loaders.py + validator.py + __init__.py + action.py + config.py + variables.py + extensions/ + __init__.py + ext_method_online.py + sign.py + image/ + wx.jpg + zfb.jpg + OutPut/ + log/ + 2023-06-25.log + 2023-07-04.log + 2023-07-05.log + reports/ + history.json + scripts/ + __init__.py + prepost_script_ȫ_2.py + request_script_sheetname_id.py + test_script/ + __init__.py + test_api.py + directory_tree.txt + excel_converter.py + generate_tree.py + main_personal_information.py + pipenv_command.text + Pipfile + Pipfile.lock + README.md + run.py diff --git a/generate_tree.py b/generate_tree.py index 2544ec0..c873a6a 100644 --- a/generate_tree.py +++ b/generate_tree.py @@ -1,54 +1,53 @@ import os -from treelib import Tree - -def generate_directory_tree(directory, tree, parent=None, indent=''): - items = os.listdir(directory) - items.sort() # 对目录列表按照字符排序 - - # 排除的文件后缀名、文件夹名称和隐藏文件 - exclude_extensions = ('.png', '.gif', '.jmx', '.logger', 'pyc') - exclude_folders = ('__pycache__') - - for i, item in enumerate(items): - item_path = os.path.join(directory, item) - - if item in exclude_folders: - continue - - if any(item.endswith(ext) for ext in exclude_extensions): - continue - - if item.startswith('.'): - continue - - if os.path.isdir(item_path): - node = tree.create_node(item, item_path, parent=parent) - generate_directory_tree(item_path, tree, parent=node.identifier, indent=indent + ' ') - else: - tree.create_node(item, item_path, parent=parent) - - -def save_directory_tree(tree, node, file, indent=''): - if node is None: - return - - file.write(f"{indent}{node}\n") - for child_id in tree.children(node): - child_node = tree.get_node(child_id) - save_directory_tree(tree, child_node.identifier, file, indent=indent + ' ') +def generate_directory_tree(directory, file, indent=''): + items = os.listdir(directory) + folders = [] + files = [] + + # 排除的文件后缀名、文件夹名称和隐藏文件 + exclude_extensions = ('.png', '.gif', '.jmx', '.logger', 'pyc') + exclude_folders = ('__pycache__') + + for item in items: + item_path = os.path.join(directory, item) + + if item in exclude_folders: + continue + + if any(item.endswith(ext) for ext in exclude_extensions): + continue + + if item.startswith('.'): + continue + + if os.path.isdir(item_path): + folders.append(item) + else: + files.append(item) + + # 按首字母排序文件夹(不区分大小写) + folders.sort(key=lambda x: x.lower()) + + for folder in folders: + folder_path = os.path.join(directory, folder) + file.write(f"{indent}└── {folder}/\n") + generate_directory_tree(folder_path, file, indent + ' ') + + # 按首字母排序文件(不区分大小写) + files.sort(key=lambda x: x.lower()) + + for file_name in files: + file.write(f"{indent}└── {file_name}\n") root_directory = '.' # 当前目录 -directory_tree = Tree() -root_node = directory_tree.create_node(root_directory, root_directory) +output_file = 'directory_tree.txt' -generate_directory_tree(root_directory, directory_tree, parent=root_node.identifier) +with open(output_file, 'w') as file: + file.write(root_directory + '\n') + generate_directory_tree(root_directory, file) -# 保存目录树到文件 -with open('directory_tree.txt', 'w') as file: - save_directory_tree(directory_tree, root_node.identifier, file) - -print("目录树已保存到文件:directory_tree.txt") +print("目录树已保存到文件:", output_file) diff --git a/image/img_18.png b/image/img_18.png new file mode 100644 index 0000000000000000000000000000000000000000..27cbdc1a772ff82c971a9cadb14af785ac38a2d4 GIT binary patch literal 107611 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 literal 0 HcmV?d00001 diff --git a/main_labor_register.py b/main_labor_register.py deleted file mode 100644 index 32b9601..0000000 --- a/main_labor_register.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -""" -@author: kira -@contact: 262667641@qq.com -@file: main_labor_register.py -@time: 2023/6/29 18:01 -@desc: -""" -if __name__ == "__main__": - number = int(input("请输入你需要实名制的用户数据总数: ")) - for i in range(number): - pytest.main(["script/bgy/test_labor_register.py"]) diff --git a/run.py b/run.py index b3c9ecd..b9d95e0 100644 --- a/run.py +++ b/run.py @@ -17,15 +17,15 @@ from unittestreport import TestRunner from common.utils.WxworkSms import WxWorkSms + def run(): - test_report = Config.test_report - # print(f"当前测试报告路劲: {test_report},测试脚本路劲: {Config.script}") - test_case = unittest.defaultTestLoader.discover(Config.script, pattern="test_*.py") - runner = TestRunner(test_case, report_dir=test_report, title="接口自动化测试报告", templates=2, - tester="kira", desc="自动化测试") - runner.run() - WxWorkSms('8b1647d4-dc32-447c-b524-548acf18a938').send_main(test_report, 1, 2, 3, 4, 5, 6, 7, 8, 9) + test_report = Config.test_report + test_case = unittest.defaultTestLoader.discover(Config.script, pattern="test_*.py") + runner = TestRunner(test_case, report_dir=test_report, title="接口自动化测试报告", templates=2, tester="kira", + desc="自动化测试") + runner.run() + WxWorkSms('8b1647d4-dc32-447c-b524-548acf18a938').send_main(test_report, 1, 2, 3, 4, 5, 6, 7, 8, 9) if __name__ == '__main__': - run() + run()