Package: dg-itest
1. 文档说明本文档主要用于接口自动化测试框架说明以及使用。1.1 环境准备IDE：Pycharm 等;Python 3.7以上;引用类库，dg-itest; 命令：pip install dg-itestallure 本地环境配置step 1pip install allure-pyteststep 2下载Allure版本：Download并配置到PATH路径下
对应家目录下，.bash_profile配置如下：# Setting PATH for Python 3.9
  # The original version is saved in .bash_profile.pysave
  PATH="/Library/Frameworks/Python.framework/Versions/3.9/bin:${PATH}"
  export PATH
  
  # Setting ALLURE PATH for ALLURE
  export ALLURE=/Users/yaitzayoung/Downloads/Lib/allure-2.7.0/bin
  export PATH=$PATH:$ALLUREstep 3allure(依赖jdk环境1.8+)Download2. 目录结构├── dg-itest
│   ├── test_res     #测试用资源文件夹，需要上传文件时，对应文件归档至该目录
│   ├── test_report  #测试报告生成目录，系统自动生成
│   └── test_src     #测试用例归档目录，测试用例文件归档目录2.1 test_res: 测试用资源文件夹说明：测试资源文件归档至该目录下；例如：相关上传文件等。2.5 test_src: 测试用例归档目录说明：测试用例归档目录，针对不同的测试方案归档至相应目录，测试场景建议新建对应的测试类对应或者文件夹。目前支持.yml,.xls,.xlsx,.py文件类型的测试用例。2.6 test_report: 测试报告生成目录说明：测试报告生成目录。3. 测试执行测试执行入口为main.py；运行main.py文件即可。对应测试用例选取执行根据用例标记来进行区分。4. 用例设计4.1 用例以py文件设计一个测试套原则上为一个python类(对应一个py文件)，一个测试套包含多个测试用例.测试用例再设计的时候，加上对应的中文描述，如下：@allure.suite('任务增删改查')# 注释对应的测试类的中文描述classTestTask01:@allure.testcase('任务创建及删除')# 注释对应的测试方法的中文描述@allure.feature('任务操作')# 注释其对应的特性，可有可无@pytest.mark.smoke# 标记对用测试用例的优先级别。 默认级别：Blocker(该用例执行失败，会造成中断缺陷), Critical(该用例执行失败，会造成临界缺陷，即功能点缺失), Normal(该用例执行失败，会造成普通缺陷), Minor(该用例执行失败，会造成次要缺陷), Trivial(该用例执行失败，会造成轻微缺陷)deftest_create_and_delete(self,api,task_create_and_delete):"""验证任务创建"""withallure.step('任务创建'):# 代码内为with，在方法则为@allure.step('任务创建')task_id,task_name=task_create_and_deleteassertint(task_id),'任务创建验证'withallure.step('任务删除'):result_delete=api.task_delete(task_id=task_id)assertresult_delete.status_code==2004.2 用例以yaml文件设计一个yml文件，文件命名规则(testXXXX.yml 或 testXXXX.yaml)，可以包含一个或多个测试用例验证.测试用例设计模板如下：-test:name:登录接口# 接口用例名称request:url:api/login# 接口请求urlmethod:post# 接口请求类型params:{"json":{"username":"auto_test","password":"auto_test"}}#接口请求入参validate:-eq:$.status# 接口验证结果-eq:$.code# 接口验证结果-sa:{"token":"$.data.accessToken"}# 将会把本次请求的值存在$token$中，后续需要直接在params中传人$token$,会自动替换expect:json:{"code":2000000,"status":200}-test:name:查询接口request:url:api/listmethod:postparams:{"json":{"start":0,"number":10},"headers":{"Content-Type":"application/json","Authorization":"Bearer$token$"}}validate:-eq:$.status# 接口验证结果-eq:$.code# 接口验证结果expect:json:{"code":2000000,"status":200}-test:name:上传接口request:url:api/uploadmethod:getparams:{"data":{"start":0,"number":10},"headers":{"Content-Type":"application/json"},"files":["test1.pdf","test2.xlsx"]}# 系统会自动根据files下的文件名到resource目录下查找对应文件封装后上传，文件不要重名validate:-eq:$.status# 接口验证结果-eq:$.code# 接口验证结果-sa:$.data.id# 存储上传文件的返回IDexpect:json:{"code":2000000,"status":200}支持断言关键字：eq：将根据请求按照路径获取的值与expect进行判等。sa：将把请求得到的值按照路径获取并以对应$key$存储以供后续使用； convert字段，将保存的值按照提供的方法进行转化。co: 将根据请求按照路径获取的值与expect进行包含判断。4.3 用例以xls，xlsx文件进行设计一个xls, xlsx文件，文件命名规则(testXXXX.xls 或 testXXXX.xlsx)，可以包含一个或多个测试用例验证.测试用例设计模板如下：nonamurlmethodparamsvalidatevalidatevalidateexpectstatus1登录接口api/loginpost{ "json": {"username":"auto_test","password":"auto_test"}}{"eq": "$.status"}{"eq": "$.code"}{"sa": {"token": "$.data.accessToken"}}{ "json": { "code": 2000000, "status": 200 } }12文件列表api/listpost{ "json": {"start":0,"limit":10}, "headers": { "Authorization": "Bearer $accessToken$" }}{"eq": "$.status"}{"co": {"$.data"}}{"sa": {"items": "$.data.items"}, "convert": "json.dumps"}{ "json": { "code": 2000000, "status": 200 }, "contains": "total" }1支持断言关键字：eq：将根据请求按照路径获取的值与expect进行判等sa：将把请求得到的值按照路径获取并以对应$key$存储以供后续使用。5. py打包详情5.1 安装打包工具pip3installwhell-y
pip3installtwine-y5.2 打包python3setup.pybdist_wheel5.3 项目结构.
├──README.md
├──dg_itest
│├──__init__.py
│├──servers
││├──__init__.py
││├──dg_servers# 封装基于requests的http请求││├──file_handler# 封装各类文件用例的解析││└──test_handler# 具体用例执行的操作│└──utils# 公用方法归档│├──__init__.py
│├──cache.py
│├──conftest.py
│├──diff_helper.py
│├──env_generater.py
│├──logger.py
│├──replace.py
│└──string_helper.py
├──publish.sh
├──requirements.txt
└──setup.py5.4 上传pypitwineuploaddist/*6. 参考文档[1]pytest-https://www.osgeo.cn/pytest/contents.html[2]allure en-https://docs.qameta.io/allure/