Commit 9606dbff by tang

API Text v1.0

parent 9ce096d2
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test60
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/5/20 15:40
# Description:
#
# ---------------------------------------------------------------------------
import functools
import logging
import os
import time
log_dir_path = os.path.join(os.path.join(os.path.dirname(__file__), "report"), "log")
if not os.path.exists(log_dir_path):
# makedirs(c:\c\d\a) os.mkdir
os.makedirs(log_dir_path)
log_file_name = os.path.join(log_dir_path, time.strftime("%Y_%m_%d_%H_%M_%S") + ".log")
def log():
# 创建logger对象
logger = logging.getLogger()
# 设置日志的级别
logger.level = logging.ERROR
# 设置日志文件
handler = logging.FileHandler(log_file_name, mode="a", encoding="utf-8")
# 设置日志的格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
# 将格式添加到handler中
handler.setFormatter(formatter)
# 将handler添加到logger对象中
logger.addHandler(handler)
return logger
log = log()
def log_decorator(func_name):
@functools.wraps(func_name)
def inner(*args, **kwargs):
try:
# 写入info级别的日志
"""
__init__(): 构造方法,初始化对象
__new__(): 为对象分配内存空间
__del__(): 析构方法,回收对象
__enter__()/__exit__(): 实现上下文管理器
__mro__: 查看继承顺序
__file__: 获取文件的路径
__name__: 获取功能/类/方法/模块的名称
__iter__(): 创建迭代器
__next__(): 迭代器和生成器取值
__code__: 获取功能的code属性
func.__code__.co_filename: 获取func所在的py文件名称
func.__code__.co_firstlineno: 获取func所在的py文件中行号
__doc__:获取功能的描述
"""
log.info(f"执行的功能为:{func_name.__name__}, 功能的描述为:{func_name.__doc__}, 所在的文件为:"
f"{func_name.__code__.co_filename}, 所在行为:{func_name.__code__.co_firstlineno}")
# 执行功能
return func_name(*args, **kwargs)
except Exception as e:
# 如果发生错误,写入一个错误的日志
log.error(f"执行的功能为:{func_name.__name__}, 功能的描述为:{func_name.__doc__}, 所在的文件为:"
f"{func_name.__code__.co_filename}, 所在行为:{func_name.__code__.co_firstlineno}, 错误为:{e}")
raise e
return inner
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test60
# FileName: db.py
# Author: lao_zhao
# Datetime: 2024/5/20 14:08
# Description:
#
# ---------------------------------------------------------------------------
import pymysql
from InterfaceAutoTest第三版 import log_decorator
from InterfaceAutoTest第三版.common.read_ini import ReadIni
class DB:
@log_decorator
def __init__(self):
"""链接数据库,获取链接对象和游标对象"""
ini = ReadIni()
try:
self.conn = pymysql.connect(
host=ini.get_db_connect_message("host"),
port=int(ini.get_db_connect_message("port")),
user=ini.get_db_connect_message("username"),
password=ini.get_db_connect_message("password"),
database=ini.get_db_connect_message("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
except Exception as e:
raise e
@log_decorator
def close(self):
"""关闭吧数据库链接"""
self.cursor.close()
self.conn.close()
@log_decorator
def delete_func(self, sql):
"""执行删除的sql语句"""
try:
self.cursor.execute(sql)
self.conn.commit()
except Exception as e:
raise e
@log_decorator
def select_func(self, sql):
"""执行查询的sql语句,并返回查询结果"""
try:
self.cursor.execute(sql)
except Exception as e:
raise e
else:
result_select = self.cursor.fetchall()
if result_select:
return result_select[0][0]
if __name__ == '__main__':
db = DB()
\ No newline at end of file
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test60
# FileName: read_excel.py
# Author: lao_zhao
# Datetime: 2024/5/20 14:15
# Description:
#
# ---------------------------------------------------------------------------
import openpyxl
from InterfaceAutoTest第三版 import log_decorator
from InterfaceAutoTest第三版.common.read_ini import ReadIni
from InterfaceAutoTest第三版.common.read_json import read_json
class ReadExcel:
@log_decorator
def __init__(self, username="demo", table_name="BPM"):
"""获取所有json文件的路径,再读取json文件,再获取excel的路径和工作表名称,加载工作簿,获取工作表"""
self.ini = ReadIni()
case_data_path = self.ini.get_file_path("case", username)
expect_data_path = self.ini.get_file_path("expect", username)
sql_data_path = self.ini.get_file_path("sql", username)
self.case_data_dict = read_json(case_data_path)
self.expect_data_dict = read_json(expect_data_path)
self.sql_data_dict = read_json(sql_data_path)
excel_path = self.ini.get_file_path("excel", username)
# table_name = self.ini.get_table_name("table_name")
try:
wb = openpyxl.load_workbook(excel_path)
self.ws = wb[table_name]
except Exception as e:
raise e
@log_decorator
def __get_cell_value(self, column: str, row: int) -> str:
"""获取指定单元格数据"""
try:
value = self.ws[column+str(row)].value
except Exception as e:
raise e
else:
if value is None:
return None
elif value.strip():
return value.strip()
@log_decorator
def module_name(self, row):
"""获取模块名称"""
return self.__get_cell_value("b", row)
@log_decorator
def api_name(self, row):
"""获取接口名称"""
return self.__get_cell_value("c", row)
@log_decorator
def case_req_method(self, row):
"""获取请求方法"""
return self.__get_cell_value("f", row)
@log_decorator
def case_req_url(self, row):
"""获取请求url"""
value = self.__get_cell_value("g", row)
if value:
return self.ini.get_host("bpm") + value
@log_decorator
def case_req_mime(self, row):
"""获取请求的媒体类型"""
value = self.__get_cell_value("h", row)
if value:
return value.lower()
@log_decorator
def case_data(self, row):
"""获取用例数据"""
case_data_key = self.__get_cell_value("i", row)
if case_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.case_data_dict[module_name][api_name][case_data_key]
@log_decorator
def expect_data(self, row):
"""获取用例数据"""
expect_data_key = self.__get_cell_value("j", row)
if expect_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.expect_data_dict[module_name][api_name][expect_data_key]
@log_decorator
def sql_data(self, row):
"""获取用例数据"""
sql_data_key = self.__get_cell_value("k", row)
if sql_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.sql_data_dict[module_name][api_name][sql_data_key]
@log_decorator
def sql_type(self, row):
"""获取sql语句类型"""
value = self.__get_cell_value("l", row)
if value:
return value.lower()
@log_decorator
def update_key(self, row):
"""获取更新的key"""
return self.__get_cell_value("m", row)
@log_decorator
def get_data(self):
"""获取excel中的数据存放在二维列表中"""
list_data = []
for row in range(2, self.ws.max_row+1):
method = self.case_req_method(row)
url = self.case_req_url(row)
mime = self.case_req_mime(row)
case_data = self.case_data(row)
expect_data = self.expect_data(row)
sql_data = self.sql_data(row)
sql_type = self.sql_type(row)
update_key = self.update_key(row)
if method and url:
list_data.append([method, url, mime, case_data, expect_data, sql_data, sql_type, update_key])
else:
return list_data
if __name__ == '__main__':
excel = ReadExcel()
print(excel.get_data())
\ No newline at end of file
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test60
# FileName: read_ini.py
# Author: lao_zhao
# Datetime: 2024/5/20 14:02
# Description:
#
# ---------------------------------------------------------------------------
import configparser
import os
from InterfaceAutoTest第三版 import log_decorator
class ReadIni:
@log_decorator
def __init__(self):
"""获取ini文件的路径,再使用Configparser对象读取ini文件"""
self.data_config_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data_config')
ini_path = os.path.join(self.data_config_path, 'config.ini')
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
@log_decorator
def get_file_path(self, key, username="demo"):
"""根据key获取file节点下文件的路径"""
try:
value = self.conf.get("file", key)
except Exception as e:
raise e
else:
username_dir = os.path.join(self.data_config_path, username)
return os.path.join(username_dir, value)
@log_decorator
def get_table_name(self, key):
"""根据key获取工作表名称"""
try:
value = self.conf.get("worksheet", key)
except Exception as e:
raise e
else:
return value
@log_decorator
def get_host(self, key):
"""根据key获取域名"""
try:
value = self.conf.get("host", key)
except Exception as e:
raise e
else:
return value
@log_decorator
def get_db_connect_message(self, key):
"""根据key获取数据库的链接信息"""
try:
value = self.conf.get("db", key)
except Exception as e:
raise e
else:
return value
\ No newline at end of file
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test60
# FileName: read_json.py
# Author: lao_zhao
# Datetime: 2024/5/20 14:13
# Description:
#
# ---------------------------------------------------------------------------
import json
import os.path
from InterfaceAutoTest第三版 import log_decorator
@log_decorator
def read_json(filename):
"""读取json文件,将json文件的内容序列化为python对象"""
if os.path.isfile(filename) and filename.endswith(".json"):
try:
with open(filename, mode="r", encoding="utf-8") as f:
return json.load(f)
except Exception as e:
raise e
else:
raise FileNotFoundError("json文件的路径错误")
\ No newline at end of file
# 配置数据配置层中文件的名称
# 配置数据配置层中文件的名称
[file]
# 配置用例管理文件的名称
excel=APIAutoTest.xlsx
# 配置用例数据文件的名称
case=case_data.json
# 配置期望数据的文件
expect=expect_data.json
# sql语句的文件
sql=sql_data.json
[worksheet]
table_name=BPM
[host]
# 配置测试系统的域名
bpm=http://120.46.172.186:8080
[db]
# 配置测试系统的数据库的链接项
host=120.46.172.186
port=3306
username=root
password=root@2023
database=eipsaas
\ No newline at end of file
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"admin","password":"MTIzNDU2"},
"LoginErrorPasswordIsNone": {"username":"admin","password":""},
"LoginErrorPasswordIsLong":{"username":"admin","password":"MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2"},
"LoginErrorPasswordIsShort":{"username":"admin","password":"m"},
"LoginErrorPasswordIsSpecial":{"username":"admin","password":"☯㍿卍卐"},
"LoginErrorUsernameIsNone":{"username":"","password":"MTIzNDU2"},
"LoginErrorUsernameIsLong":{"username":"adminadminadminadmin","password":"MTIzNDU2"},
"LoginErrorUsernameIsShort":{"username":"a","password":"MTIzNDU2"},
"LoginErrorUsernameIsSpecial":{"username":"☯㍿卍卐","password":"MTIzNDU2"},
"LoginErrorUsernameIsErr":{"username":"admin123","password":"MTIzNDU2"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {
"code": "api_auto_test_add_dem",
"description": "api_auto_test_add_dem",
"isDefault": 0,
"name": "api_auto_test_add_dem"
}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "需要更新"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "test_add_org",
"demId": "需要更新",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"组织加入用户": {
"UserAddOrgSuccess": {"orgCode": "test_add_org", "accounts": "admin"}
},
"保存组织参数": {
"SaveParamSuccess": {
"query": {"orgCode": "test_add_org"},
"body": [{"alias":"sz","value":100},{"alias":"kc","value":"语文课"}]
}
},
"删除组织": {
"DeleteOrgSuccess": "test_add_org"
}
}
}
\ No newline at end of file
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员","loginStatus":true, "account":"admin"},
"LoginErrorPasswordIsNone": {"message":"账号或密码错误"},
"LoginErrorPasswordIsLong":{"message":"账号或密码错误"},
"LoginErrorPasswordIsShort":{"message":"账号或密码错误"},
"LoginErrorPasswordIsSpecial":{"message":"账号或密码错误"},
"LoginErrorUsernameIsNone":{"message":"账号或密码错误"},
"LoginErrorUsernameIsLong":{"message":"账号或密码错误"},
"LoginErrorUsernameIsShort":{"message":"账号或密码错误"},
"LoginErrorUsernameIsSpecial":{"message":"账号或密码错误"},
"LoginErrorUsernameIsErr":{"message":"账号或密码错误"}
},
"刷新token": {
"RefreshTokenSuccess": {"message": "刷新token成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess":{"message": "添加维度成功!"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功"}
},
"组织加入用户": {
"UserAddOrgSuccess": {"state":true,"message":"加入成功","value":""}
},
"保存组织参数": {
"SaveParamSuccess": {"state":true,"message":"保存组织参数成功!","value":""}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!","value":""}
}
}
}
\ No newline at end of file
{
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"select": "select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";",
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";"
}
}
}
}
\ No newline at end of file
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"admin","password":"MTIzNDU2"},
"LoginErrorPasswordIsNone": {"username":"admin","password":""},
"LoginErrorPasswordIsLong":{"username":"admin","password":"MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2"},
"LoginErrorPasswordIsShort":{"username":"admin","password":"m"},
"LoginErrorPasswordIsSpecial":{"username":"admin","password":"☯㍿卍卐"},
"LoginErrorUsernameIsNone":{"username":"","password":"MTIzNDU2"},
"LoginErrorUsernameIsLong":{"username":"adminadminadminadmin","password":"MTIzNDU2"},
"LoginErrorUsernameIsShort":{"username":"a","password":"MTIzNDU2"},
"LoginErrorUsernameIsSpecial":{"username":"☯㍿卍卐","password":"MTIzNDU2"},
"LoginErrorUsernameIsErr":{"username":"admin123","password":"MTIzNDU2"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {
"code": "api_auto_test_add_dem",
"description": "api_auto_test_add_dem",
"isDefault": 0,
"name": "api_auto_test_add_dem"
}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "需要更新"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "test_add_org",
"demId": "需要更新",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"组织加入用户": {
"UserAddOrgSuccess": {"orgCode": "test_add_org", "accounts": "admin"}
},
"保存组织参数": {
"SaveParamSuccess": {
"query": {"orgCode": "test_add_org"},
"body": [{"alias":"sz","value":100},{"alias":"kc","value":"语文课"}]
}
},
"删除组织": {
"DeleteOrgSuccess": "test_add_org"
}
}
}
\ No newline at end of file
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员","loginStatus":true, "account":"admin"},
"LoginErrorPasswordIsNone": {"message":"账号或密码错误"},
"LoginErrorPasswordIsLong":{"message":"账号或密码错误"},
"LoginErrorPasswordIsShort":{"message":"账号或密码错误"},
"LoginErrorPasswordIsSpecial":{"message":"账号或密码错误"},
"LoginErrorUsernameIsNone":{"message":"账号或密码错误"},
"LoginErrorUsernameIsLong":{"message":"账号或密码错误"},
"LoginErrorUsernameIsShort":{"message":"账号或密码错误"},
"LoginErrorUsernameIsSpecial":{"message":"账号或密码错误"},
"LoginErrorUsernameIsErr":{"message":"账号或密码错误"}
},
"刷新token": {
"RefreshTokenSuccess": {"message": "刷新token成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess":{"message": "添加维度成功!"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功"}
},
"组织加入用户": {
"UserAddOrgSuccess": {"state":true,"message":"加入成功","value":""}
},
"保存组织参数": {
"SaveParamSuccess": {"state":true,"message":"保存组织参数成功!","value":""}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!","value":""}
}
}
}
\ No newline at end of file
{
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"select": "select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";",
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";"
}
}
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{"uuid": "dd9458d0-191c-4a1a-b4ce-c19eef40f513", "befores": [{"name": "method", "status": "passed", "start": 1716266934417, "stop": 1716266934417}], "start": 1716266934417, "stop": 1716266934485}
{"uuid": "dd9458d0-191c-4a1a-b4ce-c19eef40f513", "befores": [{"name": "method", "status": "passed", "start": 1716266934417, "stop": 1716266934417}], "start": 1716266934417, "stop": 1716266934485}
\ No newline at end of file
{"uuid": "567070d7-989f-4cf7-a9f9-a586517176ad", "befores": [{"name": "mime", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932868}
{"uuid": "567070d7-989f-4cf7-a9f9-a586517176ad", "befores": [{"name": "mime", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932868}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg-query-case_data13-expect_data13-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "f3b5f661-135b-4d50-b33c-dfd5729e9d89-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "2432ae07-ea25-49ce-ab0d-0ef63df09f79-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'orgCode': 'test_add_org', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266934418, "stop": 1716266934476, "uuid": "2ff7d722-a55b-4624-8d40-18a59550cf27", "historyId": "0b9402e8442282ca8233e0d2c2de4e59", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg-query-case_data13-expect_data13-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "f3b5f661-135b-4d50-b33c-dfd5729e9d89-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "2432ae07-ea25-49ce-ab0d-0ef63df09f79-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'orgCode': 'test_add_org', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266934418, "stop": 1716266934476, "uuid": "2ff7d722-a55b-4624-8d40-18a59550cf27", "historyId": "0b9402e8442282ca8233e0d2c2de4e59", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "aba3dfde-6af6-4c62-8e4e-78562683d03e", "befores": [{"name": "url", "status": "passed", "start": 1716266935379, "stop": 1716266935379}], "start": 1716266935379, "stop": 1716266935553}
{"uuid": "aba3dfde-6af6-4c62-8e4e-78562683d03e", "befores": [{"name": "url", "status": "passed", "start": 1716266935379, "stop": 1716266935379}], "start": 1716266935379, "stop": 1716266935553}
\ No newline at end of file
{"name": "test_bpm[post-http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams-query|json-case_data14-expect_data14-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "65f55d60-e166-4f22-916d-59a090b8489c-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "3ccf2c40-242d-4dcf-bbb9-d82aa2226a24-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_add_org'}, 'body': [{'alias': 'sz', 'value': 100}, {'alias': 'kc', 'value': '语文课'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266934490, "stop": 1716266934553, "uuid": "7637dea4-f04b-4d2c-9482-3b2ff3fdd643", "historyId": "3e5b4b59e5df6db9ff74f5498389340b", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[post-http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams-query|json-case_data14-expect_data14-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "65f55d60-e166-4f22-916d-59a090b8489c-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "3ccf2c40-242d-4dcf-bbb9-d82aa2226a24-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_add_org'}, 'body': [{'alias': 'sz', 'value': 100}, {'alias': 'kc', 'value': '语文课'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266934490, "stop": 1716266934553, "uuid": "7637dea4-f04b-4d2c-9482-3b2ff3fdd643", "historyId": "3e5b4b59e5df6db9ff74f5498389340b", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "937e1227-89da-43c0-9006-d721103f2def", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934633}
{"uuid": "937e1227-89da-43c0-9006-d721103f2def", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934633}
\ No newline at end of file
{"uuid": "678b9e85-6e81-4a39-b3f2-1fd7af4cef32", "befores": [{"name": "mime", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933212}
{"uuid": "678b9e85-6e81-4a39-b3f2-1fd7af4cef32", "befores": [{"name": "mime", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933212}
\ No newline at end of file
{"uuid": "a6b32403-9239-4dde-a536-31647a3f6aee", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934636}
{"uuid": "a6b32403-9239-4dde-a536-31647a3f6aee", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934636}
\ No newline at end of file
{"uuid": "ff5ec99c-0ca3-4c4c-b808-a9c01cc29372", "befores": [{"name": "update_key", "status": "passed", "start": 1716266935927, "stop": 1716266935927}], "start": 1716266935927, "stop": 1716266935988}
{"uuid": "ff5ec99c-0ca3-4c4c-b808-a9c01cc29372", "befores": [{"name": "update_key", "status": "passed", "start": 1716266935927, "stop": 1716266935927}], "start": 1716266935927, "stop": 1716266935988}
\ No newline at end of file
{"uuid": "493ec24f-f7ea-478f-9411-d2762415d335", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934409}
{"uuid": "493ec24f-f7ea-478f-9411-d2762415d335", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934409}
\ No newline at end of file
{"uuid": "15110b82-1a1e-4eff-88f1-dbb72f26ff5f", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933098}
{"uuid": "15110b82-1a1e-4eff-88f1-dbb72f26ff5f", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933098}
\ No newline at end of file
{"uuid": "13b5a867-a795-45ca-a2ea-51f5dcdea8f8", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933429}
{"uuid": "13b5a867-a795-45ca-a2ea-51f5dcdea8f8", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933429}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/auth-json-case_data8-expect_data8-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "76593356-57b7-4e8c-a8e9-e5c28c686422-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "bbfb16ea-28f3-40e2-a249-dd661dd466c6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '☯㍿卍卐', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933553, "stop": 1716266933650, "uuid": "47ba56f1-fdb7-4a4d-9dbe-7e2eb0c97040", "historyId": "88e6f83dead97262929368bf14af5012", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/auth-json-case_data8-expect_data8-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "76593356-57b7-4e8c-a8e9-e5c28c686422-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "bbfb16ea-28f3-40e2-a249-dd661dd466c6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'username': '☯㍿卍卐', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933553, "stop": 1716266933650, "uuid": "47ba56f1-fdb7-4a4d-9dbe-7e2eb0c97040", "historyId": "88e6f83dead97262929368bf14af5012", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "3bae59c1-f454-4d87-8bb0-0217dd4fa919", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266935379, "stop": 1716266935380}], "start": 1716266935379, "stop": 1716266935546}
{"uuid": "3bae59c1-f454-4d87-8bb0-0217dd4fa919", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266935379, "stop": 1716266935380}], "start": 1716266935379, "stop": 1716266935546}
\ No newline at end of file
{"uuid": "1793a067-bba0-4f39-a148-13ebe7282fce", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933432}
{"uuid": "1793a067-bba0-4f39-a148-13ebe7282fce", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933432}
\ No newline at end of file
{"uuid": "b4f47f40-3df4-49ea-a166-ab2704567174", "befores": [{"name": "url", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933437}
{"uuid": "b4f47f40-3df4-49ea-a166-ab2704567174", "befores": [{"name": "url", "status": "passed", "start": 1716266933330, "stop": 1716266933330}], "start": 1716266933330, "stop": 1716266933437}
\ No newline at end of file
{"uuid": "ec0da4d9-7692-49b7-800f-1a21760f6cea", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932799, "stop": 1716266932799}], "start": 1716266932799, "stop": 1716266932862}
{"uuid": "ec0da4d9-7692-49b7-800f-1a21760f6cea", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932799, "stop": 1716266932799}], "start": 1716266932799, "stop": 1716266932862}
\ No newline at end of file
{"uuid": "a28af370-d4a1-49b3-8beb-8332bd5293d8", "befores": [{"name": "update_key", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933207}
{"uuid": "a28af370-d4a1-49b3-8beb-8332bd5293d8", "befores": [{"name": "update_key", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933207}
\ No newline at end of file
{"uuid": "d79cb50f-c5cd-47a6-9df6-d57446224dc4", "children": ["468e11ef-a495-4039-b88d-5d9d165c1285", "417aab49-821a-41b9-95ca-636c53b3c19e", "dcacbdd8-5375-4dc3-8726-373623494bca", "a06d8584-0d3b-426f-949f-05e5ea60054b", "b95f79be-64b8-4367-9c2c-566e937f37b4", "20ed2990-cba9-4d95-a236-02eafc63decf", "33ae6a9e-8478-4be5-97e0-45261172f623", "20d8886e-08af-41ba-9fe9-bc69d3e3a144", "47ba56f1-fdb7-4a4d-9dbe-7e2eb0c97040", "de083fe3-33fa-44d3-87b9-15882bbd3940", "ef95cbd3-2d52-493d-8316-c5e1443c7101", "dc5bcfa8-fd78-4e8d-aeda-7a73748d1b2c", "95bbaf99-1707-4d14-b618-f988066bc0b9", "2ff7d722-a55b-4624-8d40-18a59550cf27", "7637dea4-f04b-4d2c-9482-3b2ff3fdd643", "f1e66fb8-ecde-4dee-9934-819aa3c1fcf2", "8f610924-7909-409e-8a69-f90f649c7037"], "befores": [{"name": "db_fix", "status": "passed", "start": 1716266932186, "stop": 1716266932705}], "afters": [{"name": "db_fix::0", "status": "passed", "start": 1716266936129, "stop": 1716266936129}], "start": 1716266932186, "stop": 1716266936129}
{"uuid": "d79cb50f-c5cd-47a6-9df6-d57446224dc4", "children": ["468e11ef-a495-4039-b88d-5d9d165c1285", "417aab49-821a-41b9-95ca-636c53b3c19e", "dcacbdd8-5375-4dc3-8726-373623494bca", "a06d8584-0d3b-426f-949f-05e5ea60054b", "b95f79be-64b8-4367-9c2c-566e937f37b4", "20ed2990-cba9-4d95-a236-02eafc63decf", "33ae6a9e-8478-4be5-97e0-45261172f623", "20d8886e-08af-41ba-9fe9-bc69d3e3a144", "47ba56f1-fdb7-4a4d-9dbe-7e2eb0c97040", "de083fe3-33fa-44d3-87b9-15882bbd3940", "ef95cbd3-2d52-493d-8316-c5e1443c7101", "dc5bcfa8-fd78-4e8d-aeda-7a73748d1b2c", "95bbaf99-1707-4d14-b618-f988066bc0b9", "2ff7d722-a55b-4624-8d40-18a59550cf27", "7637dea4-f04b-4d2c-9482-3b2ff3fdd643", "f1e66fb8-ecde-4dee-9934-819aa3c1fcf2", "8f610924-7909-409e-8a69-f90f649c7037"], "befores": [{"name": "db_fix", "status": "passed", "start": 1716266932186, "stop": 1716266932705}], "afters": [{"name": "db_fix::0", "status": "passed", "start": 1716266936129, "stop": 1716266936129}], "start": 1716266932186, "stop": 1716266936129}
\ No newline at end of file
{"uuid": "8d4db6c8-cc22-48ca-a72f-1c2b6fed33ae", "befores": [{"name": "method", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934047}
{"uuid": "8d4db6c8-cc22-48ca-a72f-1c2b6fed33ae", "befores": [{"name": "method", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934047}
\ No newline at end of file
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': 'admin', 'password': '☯㍿卍卐'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779578167541760"}
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': 'admin', 'password': '☯㍿卍卐'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779578167541760"}
\ No newline at end of file
{"uuid": "7d82cc12-a942-4e3f-b01e-7f0f071156e4", "befores": [{"name": "url", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933213}
{"uuid": "7d82cc12-a942-4e3f-b01e-7f0f071156e4", "befores": [{"name": "url", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933213}
\ No newline at end of file
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'code': 'api_auto_test_add_dem', 'description': 'api_auto_test_add_dem', 'isDefault': 0, 'name': 'api_auto_test_add_dem'}, 期望数据为:{'message': '添加维度成功!'}, 服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'code': 'api_auto_test_add_dem', 'description': 'api_auto_test_add_dem', 'isDefault': 0, 'name': 'api_auto_test_add_dem'}, 期望数据为:{'message': '添加维度成功!'}, 服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
{"name": "test_bpm[DELETE-http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds-query-case_data5-expect_data5-select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";-select-ids]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '删除维度成功' == '删除维度成功!'\n \n - 删除维度成功!\n ? -\n + 删除维度成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB43B0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'DELETE', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'\nmime = 'query', case_data = {'ids': '1792779587906715648'}, expect_data = {'message': '删除维度成功'}\nsql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', sql_type = 'select', update_key = 'ids'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_mirZhang\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB43B0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'DELETE', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'\nmime = 'query', case_data = {'ids': '1792779587906715648'}, expect_data = {'message': '删除维度成功'}\nsql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', sql_type = 'select', update_key = 'ids'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_mirZhang\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "756467e9-7464-4b98-9e84-1e09579bd95f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'DELETE'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_data", "value": "'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'"}, {"name": "sql_type", "value": "'select'"}, {"name": "update_key", "value": "'ids'"}], "start": 1716266936004, "stop": 1716266936107, "uuid": "027e8c96-463a-4baf-8a90-9f9dca8a0c76", "historyId": "a1c083b3e75068760c39a9e4d684e75b", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
{"name": "test_bpm[DELETE-http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds-query-case_data5-expect_data5-select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";-select-ids]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '删除维度成功' == '删除维度成功!'\n \n - 删除维度成功!\n ? -\n + 删除维度成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB43B0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'DELETE', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'\nmime = 'query', case_data = {'ids': '1792779587906715648'}, expect_data = {'message': '删除维度成功'}\nsql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', sql_type = 'select', update_key = 'ids'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_mirZhang\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB43B0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'DELETE', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'\nmime = 'query', case_data = {'ids': '1792779587906715648'}, expect_data = {'message': '删除维度成功'}\nsql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', sql_type = 'select', update_key = 'ids'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_mirZhang\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "756467e9-7464-4b98-9e84-1e09579bd95f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'DELETE'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_data", "value": "'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'"}, {"name": "sql_type", "value": "'select'"}, {"name": "update_key", "value": "'ids'"}], "start": 1716266936004, "stop": 1716266936107, "uuid": "027e8c96-463a-4baf-8a90-9f9dca8a0c76", "historyId": "a1c083b3e75068760c39a9e4d684e75b", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
\ No newline at end of file
{"uuid": "84284cd3-069c-47a5-b397-8eeec723c671", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933208}
{"uuid": "84284cd3-069c-47a5-b397-8eeec723c671", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933208}
\ No newline at end of file
{"uuid": "2850fd88-753d-4ca3-a82d-14bf98e410ee", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266934645, "stop": 1716266934645}], "start": 1716266934645, "stop": 1716266934765}
{"uuid": "2850fd88-753d-4ca3-a82d-14bf98e410ee", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266934645, "stop": 1716266934645}], "start": 1716266934645, "stop": 1716266934765}
\ No newline at end of file
{"uuid": "d345b105-a1b6-4870-8cc7-aac25151a3e0", "befores": [{"name": "case_data", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933103}
{"uuid": "d345b105-a1b6-4870-8cc7-aac25151a3e0", "befores": [{"name": "case_data", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933103}
\ No newline at end of file
{"uuid": "2769b12e-57b7-4df4-8a8f-7cd1c3da5ebc", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932873, "stop": 1716266932873}], "start": 1716266932873, "stop": 1716266932980}
{"uuid": "2769b12e-57b7-4df4-8a8f-7cd1c3da5ebc", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932873, "stop": 1716266932873}], "start": 1716266932873, "stop": 1716266932980}
\ No newline at end of file
{"uuid": "fa0581e3-2402-4463-9f9f-cb8b8f1cc31d", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933211}
{"uuid": "fa0581e3-2402-4463-9f9f-cb8b8f1cc31d", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933111, "stop": 1716266933111}], "start": 1716266933111, "stop": 1716266933211}
\ No newline at end of file
{"uuid": "59b4edf0-05b2-4faa-8bc2-34e1929483f1", "befores": [{"name": "mime", "status": "passed", "start": 1716266935560, "stop": 1716266935560}], "start": 1716266935560, "stop": 1716266935764}
{"uuid": "59b4edf0-05b2-4faa-8bc2-34e1929483f1", "befores": [{"name": "mime", "status": "passed", "start": 1716266935560, "stop": 1716266935560}], "start": 1716266935560, "stop": 1716266935764}
\ No newline at end of file
{"uuid": "738c55b0-3b05-4c11-924f-c04cb14a2bb3", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934489, "stop": 1716266934489}], "start": 1716266934489, "stop": 1716266934554}
{"uuid": "738c55b0-3b05-4c11-924f-c04cb14a2bb3", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934489, "stop": 1716266934489}], "start": 1716266934489, "stop": 1716266934554}
\ No newline at end of file
{"uuid": "25c0eb00-fef3-43be-8694-f57e60c29ea5", "befores": [{"name": "mime", "status": "passed", "start": 1716266933665, "stop": 1716266933665}], "start": 1716266933665, "stop": 1716266933773}
{"uuid": "25c0eb00-fef3-43be-8694-f57e60c29ea5", "befores": [{"name": "mime", "status": "passed", "start": 1716266933665, "stop": 1716266933665}], "start": 1716266933665, "stop": 1716266933773}
\ No newline at end of file
{"uuid": "9ec04724-d52c-40d6-bfa9-48fd07c8a432", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933219, "stop": 1716266933219}], "start": 1716266933219, "stop": 1716266933322}
{"uuid": "9ec04724-d52c-40d6-bfa9-48fd07c8a432", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933219, "stop": 1716266933219}], "start": 1716266933219, "stop": 1716266933322}
\ No newline at end of file
{"uuid": "2b736d2c-232d-4b44-97d9-ef83e4b5297c", "befores": [{"name": "method", "status": "passed", "start": 1716266936003, "stop": 1716266936003}], "start": 1716266936003, "stop": 1716266936126}
{"uuid": "2b736d2c-232d-4b44-97d9-ef83e4b5297c", "befores": [{"name": "method", "status": "passed", "start": 1716266936003, "stop": 1716266936003}], "start": 1716266936003, "stop": 1716266936126}
\ No newline at end of file
{"uuid": "e021a230-a0b1-4121-8811-0aed33867f18", "befores": [{"name": "case_data", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935919}
{"uuid": "e021a230-a0b1-4121-8811-0aed33867f18", "befores": [{"name": "case_data", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935919}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg-query-case_data2-expect_data2-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "5143a63a-e732-407a-b0e1-f71885025db5-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "7756ac79-31be-45e9-a571-6e002abcea2e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'orgCode': 'test_add_org', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266935770, "stop": 1716266935829, "uuid": "36d13634-09bc-4030-a007-6ca1e3c494ea", "historyId": "81d29a324b2cde22c260bbc928ea8e21", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg-query-case_data2-expect_data2-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "5143a63a-e732-407a-b0e1-f71885025db5-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "7756ac79-31be-45e9-a571-6e002abcea2e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'orgCode': 'test_add_org', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266935770, "stop": 1716266935829, "uuid": "36d13634-09bc-4030-a007-6ca1e3c494ea", "historyId": "81d29a324b2cde22c260bbc928ea8e21", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
\ No newline at end of file
{"uuid": "9cd26a04-5c9f-4997-b57c-383152db690f", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933552, "stop": 1716266933552}], "start": 1716266933552, "stop": 1716266933656}
{"uuid": "9cd26a04-5c9f-4997-b57c-383152db690f", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266933552, "stop": 1716266933552}], "start": 1716266933552, "stop": 1716266933656}
\ No newline at end of file
{"uuid": "ce08d884-1f76-449f-ae30-fe253eab5967", "befores": [{"name": "case_data", "status": "passed", "start": 1716266933665, "stop": 1716266933665}], "start": 1716266933665, "stop": 1716266933772}
{"uuid": "ce08d884-1f76-449f-ae30-fe253eab5967", "befores": [{"name": "case_data", "status": "passed", "start": 1716266933665, "stop": 1716266933665}], "start": 1716266933665, "stop": 1716266933772}
\ No newline at end of file
{"uuid": "684d0084-1a7e-4394-9547-28dfa9d11e19", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935918}
{"uuid": "684d0084-1a7e-4394-9547-28dfa9d11e19", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935918}
\ No newline at end of file
{"uuid": "74eb626e-dba9-42dc-9f88-5a9c567c85a5", "befores": [{"name": "mime", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935920}
{"uuid": "74eb626e-dba9-42dc-9f88-5a9c567c85a5", "befores": [{"name": "mime", "status": "passed", "start": 1716266935846, "stop": 1716266935846}], "start": 1716266935846, "stop": 1716266935920}
\ No newline at end of file
{"uuid": "e2694523-4a03-4195-a027-968af941c02c", "befores": [{"name": "url", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934414}
{"uuid": "e2694523-4a03-4195-a027-968af941c02c", "befores": [{"name": "url", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934414}
\ No newline at end of file
{"name": "test_bpm[GET-http://120.46.172.186:8080/refresh-None-None-expect_data10-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '刷新token成功' == None\n + where None = <built-in method get of dict object at 0x000001E674F79100>('message')\n + where <built-in method get of dict object at 0x000001E674F79100> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...}.get\n + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\n + where <bound method Response.json of <Response [200]>> = <Response [200]>.json", "trace": "self = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F440>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'GET', url = 'http://120.46.172.186:8080/refresh', mime = None, case_data = None\nexpect_data = {'message': '刷新token成功'}, sql_data = None, sql_type = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_demo\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F440>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'GET', url = 'http://120.46.172.186:8080/refresh', mime = None, case_data = None\nexpect_data = {'message': '刷新token成功'}, sql_data = None, sql_type = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x000001E674F79100>('message')\nE + where <built-in method get of dict object at 0x000001E674F79100> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_demo\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "c4cb3978-6082-4eef-b4a9-5cd71c7d2402-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'GET'"}, {"name": "url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新token成功'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933778, "stop": 1716266933876, "uuid": "ef95cbd3-2d52-493d-8316-c5e1443c7101", "historyId": "5b75cba57dfabf3b3fe8031f107d18c6", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[GET-http://120.46.172.186:8080/refresh-None-None-expect_data10-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '刷新token成功' == None\n + where None = <built-in method get of dict object at 0x000001E674F79100>('message')\n + where <built-in method get of dict object at 0x000001E674F79100> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...}.get\n + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\n + where <bound method Response.json of <Response [200]>> = <Response [200]>.json", "trace": "self = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F440>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'GET', url = 'http://120.46.172.186:8080/refresh', mime = None, case_data = None\nexpect_data = {'message': '刷新token成功'}, sql_data = None, sql_type = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_demo\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F440>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'GET', url = 'http://120.46.172.186:8080/refresh', mime = None, case_data = None\nexpect_data = {'message': '刷新token成功'}, sql_data = None, sql_type = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x000001E674F79100>('message')\nE + where <built-in method get of dict object at 0x000001E674F79100> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...2NjkzNH0.nVD_QWwHjgNGpfwiai9U9eOlz91mSGKcjnUnE-PwS2tctYz-qJMFY0qquKnw1Dh2UJYoLO-0u8Gasof0XNO20g', 'userAttrs': {}, ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_demo\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "c4cb3978-6082-4eef-b4a9-5cd71c7d2402-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'GET'"}, {"name": "url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新token成功'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933778, "stop": 1716266933876, "uuid": "ef95cbd3-2d52-493d-8316-c5e1443c7101", "historyId": "5b75cba57dfabf3b3fe8031f107d18c6", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/org/addOrg-json-case_data1-expect_data1-sql_data1-select|delete-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '添加组织成功' == '添加组织成功!'\n \n - 添加组织成功!\n ? -\n + 添加组织成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB5FA0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779587906715648', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_mirZhang\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB5FA0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779587906715648', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_mirZhang\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "f7ba9dbb-46a6-4a0c-a07c-599565f33fbf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_add_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_data", "value": "{'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', 'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "update_key", "value": "'demId'"}], "start": 1716266935561, "stop": 1716266935750, "uuid": "5a106cfb-7166-47db-a73c-d67b30c1c28e", "historyId": "7780572c84f69f07448f1d009ed84f29", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/org/addOrg-json-case_data1-expect_data1-sql_data1-select|delete-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '添加组织成功' == '添加组织成功!'\n \n - 添加组织成功!\n ? -\n + 添加组织成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB5FA0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779587906715648', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_mirZhang\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_mirZhang.test_bpm.TestBPM object at 0x000001E674CB5FA0>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E674F61100>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E675032DB0>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779587906715648', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_mirZhang\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "f7ba9dbb-46a6-4a0c-a07c-599565f33fbf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_add_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_data", "value": "{'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', 'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "update_key", "value": "'demId'"}], "start": 1716266935561, "stop": 1716266935750, "uuid": "5a106cfb-7166-47db-a73c-d67b30c1c28e", "historyId": "7780572c84f69f07448f1d009ed84f29", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
\ No newline at end of file
{"uuid": "c9cad4d9-30a9-4c71-8a50-feea6a38da30", "befores": [{"name": "url", "status": "passed", "start": 1716266933552, "stop": 1716266933552}], "start": 1716266933552, "stop": 1716266933660}
{"uuid": "c9cad4d9-30a9-4c71-8a50-feea6a38da30", "befores": [{"name": "url", "status": "passed", "start": 1716266933552, "stop": 1716266933552}], "start": 1716266933552, "stop": 1716266933660}
\ No newline at end of file
{"uuid": "3844504d-23f1-4359-a3db-60d8a5fd45e0", "befores": [{"name": "mime", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934046}
{"uuid": "3844504d-23f1-4359-a3db-60d8a5fd45e0", "befores": [{"name": "mime", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934046}
\ No newline at end of file
{"uuid": "95cbb8e2-cf83-4ec2-897d-8ba1b31f3285", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266932799, "stop": 1716266932799}], "start": 1716266932799, "stop": 1716266932865}
{"uuid": "95cbb8e2-cf83-4ec2-897d-8ba1b31f3285", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266932799, "stop": 1716266932799}], "start": 1716266932799, "stop": 1716266932865}
\ No newline at end of file
{"uuid": "fed29ab3-9ce4-46dc-b0a7-15eb4cdeca02", "befores": [{"name": "case_data", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932867}
{"uuid": "fed29ab3-9ce4-46dc-b0a7-15eb4cdeca02", "befores": [{"name": "case_data", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932867}
\ No newline at end of file
{"uuid": "decc28ac-3c58-4f85-ac07-dfad296af0f5", "befores": [{"name": "case_data", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934412}
{"uuid": "decc28ac-3c58-4f85-ac07-dfad296af0f5", "befores": [{"name": "case_data", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934412}
\ No newline at end of file
{"uuid": "a4239ae5-cb86-4b1a-bf4e-38cee81ea8be", "befores": [{"name": "url", "status": "passed", "start": 1716266932706, "stop": 1716266932706}], "start": 1716266932706, "stop": 1716266932792}
{"uuid": "a4239ae5-cb86-4b1a-bf4e-38cee81ea8be", "befores": [{"name": "url", "status": "passed", "start": 1716266932706, "stop": 1716266932706}], "start": 1716266932706, "stop": 1716266932792}
\ No newline at end of file
{"uuid": "98c1816e-4b26-4d3a-886e-8855113fa1a8", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266935770, "stop": 1716266935770}], "start": 1716266935770, "stop": 1716266935835}
{"uuid": "98c1816e-4b26-4d3a-886e-8855113fa1a8", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266935770, "stop": 1716266935770}], "start": 1716266935770, "stop": 1716266935835}
\ No newline at end of file
{"uuid": "40fb4328-6f96-4ce1-8d6c-0fbe4133a04e", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933096}
{"uuid": "40fb4328-6f96-4ce1-8d6c-0fbe4133a04e", "befores": [{"name": "update_key", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933096}
\ No newline at end of file
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': '', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779578624720896"}
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': '', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779578624720896"}
\ No newline at end of file
{"name": "test_add_dem", "status": "passed", "attachments": [{"name": "stdout", "source": "b1078622-0261-4717-bce4-b2fa48ab42bd-attachment.txt", "type": "text/plain"}], "start": 1716266934882, "stop": 1716266935025, "uuid": "26fd3c0d-ebdc-4c9f-9258-e52aeea82719", "historyId": "2c19ea97cbbe4cb31079c2ee05828120", "testCaseId": "2c19ea97cbbe4cb31079c2ee05828120", "fullName": "test_case.test_dependency.test_dependency#test_add_dem", "labels": [{"name": "tag", "value": "dependency(depends=['test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependency"}, {"name": "suite", "value": "test_dependency"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependency.test_dependency"}]}
{"name": "test_add_dem", "status": "passed", "attachments": [{"name": "stdout", "source": "b1078622-0261-4717-bce4-b2fa48ab42bd-attachment.txt", "type": "text/plain"}], "start": 1716266934882, "stop": 1716266935025, "uuid": "26fd3c0d-ebdc-4c9f-9258-e52aeea82719", "historyId": "2c19ea97cbbe4cb31079c2ee05828120", "testCaseId": "2c19ea97cbbe4cb31079c2ee05828120", "fullName": "test_case.test_dependency.test_dependency#test_add_dem", "labels": [{"name": "tag", "value": "dependency(depends=['test_login'])"}, {"name": "parentSuite", "value": "test_case.test_dependency"}, {"name": "suite", "value": "test_dependency"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_dependency.test_dependency"}]}
\ No newline at end of file
{"uuid": "d76d74f9-e8e7-4ab7-8b8c-268055bdafe9", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934632}
{"uuid": "d76d74f9-e8e7-4ab7-8b8c-268055bdafe9", "befores": [{"name": "update_key", "status": "passed", "start": 1716266934571, "stop": 1716266934571}], "start": 1716266934571, "stop": 1716266934632}
\ No newline at end of file
{"uuid": "9495d6ce-3f04-4a07-9aef-e76100bcb73b", "befores": [{"name": "mime", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934414}
{"uuid": "9495d6ce-3f04-4a07-9aef-e76100bcb73b", "befores": [{"name": "mime", "status": "passed", "start": 1716266934208, "stop": 1716266934208}], "start": 1716266934208, "stop": 1716266934414}
\ No newline at end of file
{"uuid": "9f58bc25-3341-496e-8779-29acd507b9e2", "befores": [{"name": "url", "status": "passed", "start": 1716266934051, "stop": 1716266934051}], "start": 1716266934051, "stop": 1716266934202}
{"uuid": "9f58bc25-3341-496e-8779-29acd507b9e2", "befores": [{"name": "url", "status": "passed", "start": 1716266934051, "stop": 1716266934051}], "start": 1716266934051, "stop": 1716266934202}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/org/addOrg-json-case_data12-expect_data12-sql_data12-select|delete-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '添加组织成功' == '添加组织成功!'\n \n - 添加组织成功!\n ? -\n + 添加组织成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F320>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779582290542592', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_demo\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F320>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779582290542592', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_demo\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "d31b283f-c901-41b3-a70f-44798ebe0bfd-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_add_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_data", "value": "{'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', 'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "update_key", "value": "'demId'"}], "start": 1716266934208, "stop": 1716266934396, "uuid": "95bbaf99-1707-4d14-b618-f988066bc0b9", "historyId": "0762f4b96a38d976233cb72b53e4c296", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/api/org/v1/org/addOrg-json-case_data12-expect_data12-sql_data12-select|delete-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: assert '添加组织成功' == '添加组织成功!'\n \n - 添加组织成功!\n ? -\n + 添加组织成功", "trace": "self = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F320>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779582290542592', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except AssertionError as e:\n logging.error(f\"断言失败, 用例数据为{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise e\n\ntest_case\\test_demo\\test_bpm.py:55: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <InterfaceAutoTest第三版.test_case.test_demo.test_bpm.TestBPM object at 0x000001E674C6F320>\nreq_fix = <InterfaceAutoTest第三版.requests_method.requsts_method.RequestsMethod object at 0x000001E67477D8E0>\ndb_fix = <InterfaceAutoTest第三版.common.db.DB object at 0x000001E674EEB230>, method = 'POST', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'test_add_org', 'demId': '1792779582290542592', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'}\nsql_type = 'select|delete', update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_data, sql_type, update_key\", excel.get_data())\n def test_bpm(self, req_fix, db_fix, method, url, mime, case_data, expect_data, sql_data, sql_type, update_key):\n \n # 判断sql语句类型是否为select\n if sql_type == \"select\":\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 判断sql语句的类型是否为delete\n elif sql_type == \"delete\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data)\n # 将数据库中的数据删除完之后,再发送请求\n \n # 判断sql语句类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete_func方法执行删除的sql语句\n db_fix.delete_func(sql_data[\"delete\"])\n # 使用DB类对象调用select_func方法执行查询的sql语句,并接收查询结果\n select_result = db_fix.select_func(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 将更新之后的用例数据发送给服务器。\n \n # 使用RequestsMethod对象发送请求\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_demo\\test_bpm.py:52: AssertionError"}, "attachments": [{"name": "log", "source": "d31b283f-c901-41b3-a70f-44798ebe0bfd-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_add_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功'}"}, {"name": "sql_data", "value": "{'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";', 'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_add_org\";'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "update_key", "value": "'demId'"}], "start": 1716266934208, "stop": 1716266934396, "uuid": "95bbaf99-1707-4d14-b618-f988066bc0b9", "historyId": "0762f4b96a38d976233cb72b53e4c296", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "cb5d5780-e52c-427e-8a70-44bc92e2a9aa", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266936003, "stop": 1716266936003}], "start": 1716266936003, "stop": 1716266936123}
{"uuid": "cb5d5780-e52c-427e-8a70-44bc92e2a9aa", "befores": [{"name": "expect_data", "status": "passed", "start": 1716266936003, "stop": 1716266936003}], "start": 1716266936003, "stop": 1716266936123}
\ No newline at end of file
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': 'admin', 'password': 'm'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779577697779712"}
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'username': 'admin', 'password': 'm'}, 期望数据为:{'message': '账号或密码错误'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1792779577697779712"}
\ No newline at end of file
{"uuid": "6bd6c810-b4c5-4f4d-a895-15fcf65186b0", "befores": [{"name": "method", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932870}
{"uuid": "6bd6c810-b4c5-4f4d-a895-15fcf65186b0", "befores": [{"name": "method", "status": "passed", "start": 1716266932798, "stop": 1716266932798}], "start": 1716266932798, "stop": 1716266932870}
\ No newline at end of file
{"name": "test_bpm[pOst-http://120.46.172.186:8080/api/demension/v1/dem/addDem-json-case_data11-expect_data11-delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";-delete-None]", "status": "passed", "attachments": [{"name": "log", "source": "16368a79-ac3a-45c5-bf46-a98182f7492d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e09df6ac-b7ba-4c8b-8f20-34ae39c2818d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'pOst'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'api_auto_test_add_dem', 'description': 'api_auto_test_add_dem', 'isDefault': 0, 'name': 'api_auto_test_add_dem'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_data", "value": "'delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'"}, {"name": "sql_type", "value": "'delete'"}, {"name": "update_key", "value": "None"}], "start": 1716266934051, "stop": 1716266934193, "uuid": "dc5bcfa8-fd78-4e8d-aeda-7a73748d1b2c", "historyId": "4b19079f470a45736a844d533ef525d4", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[pOst-http://120.46.172.186:8080/api/demension/v1/dem/addDem-json-case_data11-expect_data11-delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";-delete-None]", "status": "passed", "attachments": [{"name": "log", "source": "16368a79-ac3a-45c5-bf46-a98182f7492d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e09df6ac-b7ba-4c8b-8f20-34ae39c2818d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'pOst'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'api_auto_test_add_dem', 'description': 'api_auto_test_add_dem', 'isDefault': 0, 'name': 'api_auto_test_add_dem'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_data", "value": "'delete FROM uc_demension WHERE `CODE_`=\"api_auto_test_add_dem\";'"}, {"name": "sql_type", "value": "'delete'"}, {"name": "update_key", "value": "None"}], "start": 1716266934051, "stop": 1716266934193, "uuid": "dc5bcfa8-fd78-4e8d-aeda-7a73748d1b2c", "historyId": "4b19079f470a45736a844d533ef525d4", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"name": "test_bpm[POST-http://120.46.172.186:8080/auth-application/json-case_data5-expect_data5-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "42fb454b-fc68-404f-9636-189eaf6f26e7-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "6988cc82-edbe-4929-8f78-004829b9f7cf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933220, "stop": 1716266933315, "uuid": "20ed2990-cba9-4d95-a236-02eafc63decf", "historyId": "f5985148719a0c347396de1263e3ce97", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
{"name": "test_bpm[POST-http://120.46.172.186:8080/auth-application/json-case_data5-expect_data5-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "42fb454b-fc68-404f-9636-189eaf6f26e7-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "6988cc82-edbe-4929-8f78-004829b9f7cf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'POST'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266933220, "stop": 1716266933315, "uuid": "20ed2990-cba9-4d95-a236-02eafc63decf", "historyId": "f5985148719a0c347396de1263e3ce97", "testCaseId": "2de48645219de93dc51c83a53a42f952", "fullName": "test_case.test_demo.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_demo"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_demo.test_bpm"}]}
\ No newline at end of file
{"uuid": "61266708-4661-4822-891a-9df654e765cd", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933443, "stop": 1716266933443}], "start": 1716266933443, "stop": 1716266933541}
{"uuid": "61266708-4661-4822-891a-9df654e765cd", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933443, "stop": 1716266933443}], "start": 1716266933443, "stop": 1716266933541}
\ No newline at end of file
{"uuid": "b448298c-48e3-4274-8e6d-29378620e71a", "befores": [{"name": "url", "status": "passed", "start": 1716266932873, "stop": 1716266932873}], "start": 1716266932873, "stop": 1716266932988}
{"uuid": "b448298c-48e3-4274-8e6d-29378620e71a", "befores": [{"name": "url", "status": "passed", "start": 1716266932873, "stop": 1716266932873}], "start": 1716266932873, "stop": 1716266932988}
\ No newline at end of file
{"uuid": "0faf24c8-3c5d-4179-ace8-31fc2da99df2", "befores": [{"name": "update_key", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934034}
{"uuid": "0faf24c8-3c5d-4179-ace8-31fc2da99df2", "befores": [{"name": "update_key", "status": "passed", "start": 1716266933778, "stop": 1716266933778}], "start": 1716266933778, "stop": 1716266934034}
\ No newline at end of file
{"uuid": "f6e266ac-156d-4a6b-9f5c-d5a7bbb84df4", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266935560, "stop": 1716266935560}], "start": 1716266935560, "stop": 1716266935760}
{"uuid": "f6e266ac-156d-4a6b-9f5c-d5a7bbb84df4", "befores": [{"name": "sql_type", "status": "passed", "start": 1716266935560, "stop": 1716266935560}], "start": 1716266935560, "stop": 1716266935760}
\ No newline at end of file
{"uuid": "8b4f6152-8c98-4148-87a0-e503f7d0d413", "befores": [{"name": "case_data", "status": "passed", "start": 1716266933443, "stop": 1716266933443}], "start": 1716266933443, "stop": 1716266933542}
{"uuid": "8b4f6152-8c98-4148-87a0-e503f7d0d413", "befores": [{"name": "case_data", "status": "passed", "start": 1716266933443, "stop": 1716266933443}], "start": 1716266933443, "stop": 1716266933542}
\ No newline at end of file
{"uuid": "8bdb87c1-7c32-44aa-99f0-a9bd366df5dd", "befores": [{"name": "url", "status": "passed", "start": 1716266934489, "stop": 1716266934489}], "start": 1716266934489, "stop": 1716266934563}
{"uuid": "8bdb87c1-7c32-44aa-99f0-a9bd366df5dd", "befores": [{"name": "url", "status": "passed", "start": 1716266934489, "stop": 1716266934489}], "start": 1716266934489, "stop": 1716266934563}
\ No newline at end of file
{"name": "test_bpm[post-http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams-query|json-case_data3-expect_data3-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "c9e45577-689c-44c7-b719-58435b537b5d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "58798629-55ba-44ec-8d14-ca5ef979e4f2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_add_org'}, 'body': [{'alias': 'sz', 'value': 100}, {'alias': 'kc', 'value': '语文课'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266935847, "stop": 1716266935911, "uuid": "80cff7b0-df09-4251-8320-c19d9285a3cf", "historyId": "f5742b10586ec7cb2ac1cd65628ba4ae", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
{"name": "test_bpm[post-http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams-query|json-case_data3-expect_data3-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "c9e45577-689c-44c7-b719-58435b537b5d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "58798629-55ba-44ec-8d14-ca5ef979e4f2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_add_org'}, 'body': [{'alias': 'sz', 'value': 100}, {'alias': 'kc', 'value': '语文课'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"}, {"name": "sql_data", "value": "None"}, {"name": "sql_type", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1716266935847, "stop": 1716266935911, "uuid": "80cff7b0-df09-4251-8320-c19d9285a3cf", "historyId": "f5742b10586ec7cb2ac1cd65628ba4ae", "testCaseId": "8c3ca9784f7a20f46f527b41c7204e5a", "fullName": "test_case.test_mirZhang.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case.test_mirZhang"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-6TCP4T29"}, {"name": "thread", "value": "19448-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_mirZhang.test_bpm"}]}
\ No newline at end of file
{"uuid": "cd2eb192-6e09-471a-b412-a2e2aa3ba3ab", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933666, "stop": 1716266933666}], "start": 1716266933666, "stop": 1716266933771}
{"uuid": "cd2eb192-6e09-471a-b412-a2e2aa3ba3ab", "befores": [{"name": "sql_data", "status": "passed", "start": 1716266933666, "stop": 1716266933666}], "start": 1716266933666, "stop": 1716266933771}
\ No newline at end of file
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'orgCode': 'test_add_org', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''}, 服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
ERROR  root:test_bpm.py:57 断言成功, 用例数据为{'orgCode': 'test_add_org', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''}, 服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
{"uuid": "40396ae4-9729-49cb-978c-8507da97fd16", "befores": [{"name": "url", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933105}
{"uuid": "40396ae4-9729-49cb-978c-8507da97fd16", "befores": [{"name": "url", "status": "passed", "start": 1716266932995, "stop": 1716266932995}], "start": 1716266932995, "stop": 1716266933105}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment