增加请求方法限制,更新readme文件,删除无用文件

This commit is contained in:
wangjie 2023-09-28 16:30:10 +08:00
parent e0a8629ea1
commit 20ae1bdbae
4 changed files with 55 additions and 20 deletions

View File

@ -1,5 +1,7 @@
# SensoroApi
## 联系方式:
对本框架有任何疑问均可加我微信咨询wj1641540482
![img_1.png](img_1.png)
## 实现功能:
- 测试数据隔离, 实现数据驱动
@ -32,10 +34,13 @@
* 获取源码后在pycharm终端运行以下代码即可一键安装项目依赖
* ```pip3 install -r requirements.txt```
* 注如果是window系统报错 ```UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 65: illegal multibyte sequence```则需要先在终端执行下方的命令将终端编码格式改为utf-8再执行上方install命令即可解决编码问题
* ``` chcp 65001 ```
*
如果是window系统报错 ```UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 65: illegal multibyte sequence```
则需要先在终端执行下方的命令将终端编码格式改为utf-8再执行上方install命令即可解决编码问题
* ``` chcp 65001 ```
* 或者直接使用pycharm自带的提示功能安装依赖包推荐这种
![img.png](img.png)
![img.png](img.png)
## 项目结构
```
@ -45,9 +50,12 @@
├── common 公共方法类存放目录
│ ├── base_log.py 日志记录器
│ ├── base_api.py 基础类,对请求方法进行二次封装
│ ├── lins_environment_enums.py 项目环境枚举
│ ├── models.py 项目环境枚举
│ ├── exceptions.py 自定义异常
│ ├── mail_sender.py 发送邮件方法
│ └── settings.py 项目配置文件
│ ├── settings.py 项目配置文件
│ ├── connect_DB.py 连接数据库方法
│ └── rebot_sender.py 发送群聊通知方法
├── configs 项目配置信息目录
│ ├── dir_path_config.py 项目各目录路径文件
│ ├── lins_environment.ini 项目全局环境变量配置文件(弃用)
@ -56,7 +64,6 @@
├── conftest.py pytest共享文件设置allure报告及其他报告的环境变量
├── datas 测试数据存放目录
│ ├── login.yaml 登录测试的数据demo
├── environment.properties allure报告环境变量展示文件
├── outFiles 各种输出文件存放目录
│ ├── logs 日志存放目录
│ ├── pytest_report pytest报告存放目录
@ -73,12 +80,19 @@
│ ├── test_alarms.py 预警测试用例demo
│ └── test_login.py 预警测试用例demo
└── utils 测试工具存放目录
├── get_config.py 读取config配置文件的方法
├── get_dir_path.py 获取项目各个文件路径的类
├── get_yaml_data.py 读取yaml文件的方法
├── lock_reset.py 门禁出厂
├── temperature_terminal_reset.py 测温终端出厂
└── time_utils.py 时间转换工具类
├── config_handle.py 读取config配置文件的方法
├── allure_handle.py allure相关工具
├── cache_handle.py 设置、读取缓存的工具(解决接口数据依赖)
├── command_parser.py 设置命令行启动命令工具
├── data_handle.py 数据处理工具
├── excel_handle.py excel表格处理工具
├── faker_utils.py 造假数据工具
├── file_handle.py 文件处理工具
├── get_local_ip.py 获取本机ip地址的方法
├── jenkins_handle.py 获取Jenkins相关数据的工具
├── report_data_handle.py 获取测试结果统计的方法
├── yaml_handle.py yaml文件处理工具
└──time_utils.py 时间转换工具类
```
## 项目代码工程构建思路:
@ -245,7 +259,9 @@ class TestLogin: # 测试类名
#### 2.1整体项目运行流程
- 在run.py中配置需要运行的测试用例及对整个测试的一些其他配置然后右键运行该文件
- 方式1在run.py中配置需要运行的测试用例及对整个测试的一些其他配置然后直接右键运行该文件
- 方式2如果在Jenkins上运行可以通过命令行启动的方式执行此方式可以指定运行环境是否发送通知等参数例如python3 run.py
-env TEST --send-wechat True
```python
pytest.main([

View File

@ -16,7 +16,8 @@ from requests import PreparedRequest
from requests.structures import CaseInsensitiveDict
from common.base_log import logger
from common.exceptions import ValueNotFoundError
from common.exceptions import ValueNotFoundError, ValueTypeError
from common.models import Method
from configs.lins_environment import EntryPoint
from utils.allure_handle import allure_attach_text, allure_attach_json
from utils.time_utils import TimeUtil
@ -49,7 +50,12 @@ class BaseApi:
@staticmethod
def _make_method(method) -> str:
"""对请求方法进行预处理"""
return method.lower()
# 检查传入的method是否在Method枚举中
try:
method_enum = Method[method.upper()]
except KeyError:
raise ValueTypeError(f"无效的HTTP请求,请检查你的请求方法是否正确:{method}")
return method_enum.value
@staticmethod
def _make_params(params) -> dict[str, int | Any]:

View File

@ -18,7 +18,7 @@ class Environment(Enum):
@dataclass
class TestMetrics:
""" 用例执行数据 """
""" 用例结果数据 """
total: int
passed: int
failed: int
@ -31,9 +31,17 @@ class TestMetrics:
duration: float
if __name__ == '__main__':
print(Environment.DEV.name)
print(Environment.DEV.value)
class Method(Enum):
"""
请求方式
"""
GET = "GET"
POST = "POST"
PUT = "PUT"
DELETE = "DELETE"
PATCH = "PATCH"
HEAD = "HEAD"
OPTIONS = "OPTIONS"
@unique # 枚举类装饰器,确保只有一个名称绑定到任何一个值。
@ -64,3 +72,8 @@ class AllureAttachmentType(Enum):
WEBM = "webm"
PDF = "pdf"
if __name__ == '__main__':
print(Environment.DEV.name)
print(Environment.DEV.value)

BIN
img_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB