Commit 3f1d20c4 by dsw

api auto test1.0

parents
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:02
# Description:
#
# ---------------------------------------------------------------------------
import logging
import os
import time
def api_log():
# 创建Logger对象 root
logger = logging.getLogger()
# 设置级别
logger.level = logging.INFO
# 日志文件存放的路径
log_dir_path = os.path.join(os.path.join(os.path.dirname(__file__), "report"), "log")
log_file_name = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + ".log"
log_path = os.path.join(log_dir_path, log_file_name)
# 创建日志文件的Handler对象
handler = logging.FileHandler(filename=log_path, mode="a", encoding="utf-8")
# 设置日志显示的格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 给Handler设置日志的格式
handler.setFormatter(formatter)
# 给Logger添加Handler对象
logger.addHandler(handler)
return logger
log = api_log()
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:02
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: db.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:22
# Description:
#
# ---------------------------------------------------------------------------
import pymysql
from APIAutoTest_v3 import log
from APIAutoTest_v3.common.read_ini import ReadIni
class DB:
def __init__(self):
"""链接数据库"""
ini = ReadIni()
try:
self.conn = pymysql.connect(
host=ini.get_connect_sql_msg("host"),
port=int(ini.get_connect_sql_msg("port")),
user=ini.get_connect_sql_msg("user"),
password=ini.get_connect_sql_msg("pwd"),
database=ini.get_connect_sql_msg("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
except Exception as e:
log.error(f"链接数据库时出错,请求检查ini配置文件,发生的错误类型为:{type(e)}, 错误的描述为:{e}")
raise e
def delete(self, sql_sentence):
"""执行删除的sql语句"""
log.info(f"执行的方法为:delete,功能描述为:执行删除的sql语句,传入的参数为:{sql_sentence}")
if isinstance(sql_sentence, str) and sql_sentence.strip().lower().startswith("delete"):
try:
self.cursor.execute(sql_sentence)
self.conn.commit()
except Exception as e:
log.error(
f"执行的方法为:delete,功能描述为:执行删除的sql语句,传入的参数为:{sql_sentence}, 错误类型为:{type(e)}, 错误的描述为:{e}")
raise e
else:
log.error(f"执行的方法为:delete,功能描述为:执行删除的sql语句,传入的参数为:{sql_sentence}, 错误类型为:ValueError, 错误的描述为:sql语句错误")
raise ValueError("sql语句错误")
def select(self, sql_sentence):
"""执行查询的sql语句"""
log.info(f"执行的方法为:select,功能描述为:执行查询的sql语句,传入的参数为:{sql_sentence}")
if isinstance(sql_sentence, str) and sql_sentence.strip().lower().startswith("select"):
try:
self.cursor.execute(sql_sentence)
except Exception as e:
log.error(
f"执行的方法为:select,功能描述为:执行查询的sql语句,传入的参数为:{sql_sentence}, 错误类型为:{type(e)}, 错误的描述为:{e}")
raise e
else:
# 接收查询的结果
select_result = self.cursor.fetchall()
# 判断查询结果是否为空的元组,如果为空的元组返回None,如果不为空的元组返回查询的第一个结果
if select_result:
return select_result[0][0]
else:
log.error(f"执行的方法为:select,功能描述为:执行查询的sql语句,传入的参数为:{sql_sentence}, 错误类型为:ValueError, 错误的描述为:sql语句错误")
raise ValueError("sql语句错误")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: read_excel.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:34
# Description:
#
# ---------------------------------------------------------------------------
import openpyxl
from APIAutoTest_v3 import log
from APIAutoTest_v3.common.read_ini import ReadIni
from APIAutoTest_v3.common.read_json import read_json
class ReadExcel:
def __init__(self):
"""读取所有的json文件,获取excel的工作簿和工作表"""
self.ini = ReadIni()
case_data_path = self.ini.get_file_path("case")
expect_data_path = self.ini.get_file_path("expect")
sql_data_path = self.ini.get_file_path("sql")
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")
table_name = self.ini.get_table_name("name")
try:
wb = openpyxl.load_workbook(excel_path)
self.ws = wb[table_name]
except Exception as e:
log.error(f"获取excel的工作簿或工作表出错,excel的路径为:{excel_path},工作表名称为:{table_name},错误的类型为:{type(e)}, 错误的描述为:{e}")
raise e
def __get_cell_value(self, column: str, row: int) -> str:
"""获取指定单元格数据"""
log.info(f"执行的方法为:__get_cell_value,功能描述为:获取指定单元格数据,传入的参数为:{column}列,{row}行")
try:
cell_value = self.ws[column+str(row)].value
except Exception as e:
log.error(f"执行的方法为:__get_cell_value,功能描述为:获取指定单元格数据,传入的参数为:{column}列,{row}行, 报错,错误类型为:{type(e)}, 错误的描述为:{e}")
raise e
else:
if cell_value is None:
return None
elif cell_value.strip():
return cell_value.strip()
def module_name(self, row):
"""根据行号,获取模块名称"""
log.info(f"执行的方法为:module_name,功能描述为:根据行号,获取模块名称,传入的参数为:{row}行")
return self.__get_cell_value("B", row)
def api_name(self, row):
"""根据行号,获取接口名称"""
log.info(f"执行的方法为:api_name,功能描述为:根据行号,获取接口名称,传入的参数为:{row}行")
return self.__get_cell_value("c", row)
def req_method(self, row):
"""根据行号,获取用例的请求方法"""
log.info(f"执行的方法为:req_method,功能描述为:根据行号,获取用例的请求方法,传入的参数为:{row}行")
return self.__get_cell_value("f", row)
def req_url(self, row):
"""根据行号,获取用例的请求url"""
log.info(f"执行的方法为:req_url,功能描述为:根据行号,获取用例的请求url,传入的参数为:{row}行")
path = self.__get_cell_value("g", row)
if path:
return self.ini.get_host("bpm") + path
def req_mime(self, row):
"""根据行号,获取用例的请求媒体类型"""
log.info(f"执行的方法为:req_mime,功能描述为:根据行号,获取用例的请求媒体类型,传入的参数为:{row}行")
mime = self.__get_cell_value("h", row)
if mime:
return mime.lower()
def case_data(self, row):
"""根据行号,获取用例数据"""
log.info(f"执行的方法为:case_data,功能描述为:根据行号,获取用例数据,传入的参数为:{row}行")
case_data_key = self.__get_cell_value("i", row)
module_name = self.module_name(row)
api_name = self.api_name(row)
if case_data_key and module_name and api_name:
return self.case_data_dict[module_name][api_name][case_data_key]
def expect_data(self, row):
"""根据行号,获取期望数据"""
log.info(f"执行的方法为:expect_data,功能描述为:根据行号,获取期望数据,传入的参数为:{row}行")
expect_data_key = self.__get_cell_value("j", row)
module_name = self.module_name(row)
api_name = self.api_name(row)
if expect_data_key and module_name and api_name:
return self.expect_data_dict[module_name][api_name][expect_data_key]
def sql_type(self, row):
"""根据行号,获取sql语句类型"""
log.info(f"执行的方法为:sql_type,功能描述为:根据行号,获取sql语句类型,传入的参数为:{row}行")
value = self.__get_cell_value("k", row)
if value:
return value.lower()
def sql_data(self, row):
"""根据行号,获取sql语句"""
log.info(f"执行的方法为:sql_data,功能描述为:根据行号,获取sql语句,传入的参数为:{row}行")
sql_data_key = self.__get_cell_value("l", row)
module_name = self.module_name(row)
api_name = self.api_name(row)
if sql_data_key and module_name and api_name:
return self.sql_data_dict[module_name][api_name][sql_data_key]
def update_key(self, row):
"""根据行号,获取用例的更新的key"""
log.info(f"执行的方法为:update_key,功能描述为:根据行号,获取用例的更新的key,传入的参数为:{row}行")
return self.__get_cell_value("m", row)
def get_data(self):
"""将测试使用到的数据存放在二维列表中"""
list_data = []
for row in range(2, self.ws.max_row+1):
method = self.req_method(row)
url = self.req_url(row)
mime = self.req_mime(row)
case_data = self.case_data(row)
expect_data = self.expect_data(row)
sql_type = self.sql_type(row)
sql_data = self.sql_data(row)
update_key = self.update_key(row)
if method and url and expect_data:
list_data.append([method, url, mime, case_data, expect_data, sql_type, sql_data, update_key])
else:
return list_data
if __name__ == '__main__':
excel = ReadExcel()
print(excel.get_data())
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: read_ini.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:09
# Description:
#
# ---------------------------------------------------------------------------
import configparser
import os
from APIAutoTest_v3 import log
class ReadIni:
def __init__(self):
"""读取ini文件"""
self.data_config = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data_config")
ini_path = os.path.join(self.data_config, "config.ini")
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
def get_file_path(self, key):
"""根据key获取file节点下文件的路径"""
log.info(f"执行get_file_path方法,功能为:根据key获取file节点下文件的路径, 传入的参数为:{key}")
try:
file_name = self.conf.get("file", key)
except Exception as e:
log.info(f"执行get_file_path方法,功能为:根据key获取file节点下文件的路径, 传入的参数为:{key}"
f"发生错误,错误的类型为:{type(e)}, 错误的描述为:{e}")
raise e
else:
return os.path.join(self.data_config, file_name)
def get_table_name(self, key):
"""根据key获取table节点下工作表的名称"""
log.info(f"执行get_table_name方法,功能为:根据key获取table节点下工作表的名称, 传入的参数为:{key}")
try:
return self.conf.get("table", key)
except Exception as e:
log.info(f"执行get_table_name方法,功能为:根据key获取table节点下工作表的名称, 传入的参数为:{key}"
f"发生错误,错误的类型为:{type(e)}, 错误的描述为:{e}")
raise e
def get_host(self, key):
"""根据key获取host节点下被测系统的域名"""
log.info(f"执行get_host方法,功能为:根据key获取host节点下被测系统的域名, 传入的参数为:{key}")
try:
return self.conf.get("host", key)
except Exception as e:
log.info(f"执行get_host方法,功能为:根据key获取host节点下被测系统的域名, 传入的参数为:{key}"
f"发生错误,错误的类型为:{type(e)}, 错误的描述为:{e}")
raise e
def get_connect_sql_msg(self, key):
"""根据key获取sql节点下数据库的链接信息"""
log.info(f"执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:{key}")
try:
return self.conf.get("sql", key)
except Exception as e:
log.info(f"执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:{key}"
f"发生错误,错误的类型为:{type(e)}, 错误的描述为:{e}")
raise e
if __name__ == '__main__':
ini = ReadIni()
print(ini.get_file_path("excel"))
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test63
# FileName: read_json.py
# Author: lao_zhao
# Datetime: 2024/11/5 14:17
# Description:
#
# ---------------------------------------------------------------------------
import json
import os
from APIAutoTest_v3 import log
def read_json(file_path):
"""读取json文件,将json文件的内容序列化为python对象在返回"""
log.info(f"执行的函数为:read_json,描述为:读取json文件,将json文件的内容序列化为python对象在返回,传入的参数为:{file_path}")
if isinstance(file_path, str) and os.path.isfile(file_path) and file_path.endswith(".json"):
with open(file_path, mode="r", encoding="utf-8") as f:
try:
return json.loads(f.read())
except Exception as e:
log.error(
f"执行的函数为:read_json,描述为:读取json文件,将json文件的内容序列化为python对象在返回,传入的参数为:{file_path}, 文件路径不存在"
f"错误类型为:{type(e)}, 错误的描述为:{e}")
raise e
else:
log.error(f"执行的函数为:read_json,描述为:读取json文件,将json文件的内容序列化为python对象在返回,传入的参数为:{file_path}, 文件路径不存在"
f"错误类型为:FileNotFoundError, 错误的描述为:文件路径错误")
raise FileNotFoundError("文件路径错误")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: iterator_generator_demo.py
# FileName: aa.py
# Author: dsw
# Datetime: 2024/11/6 20:15
# Description:
#
# ---------------------------------------------------------------------------
import openpyxl
wb=openpyxl.load_workbook("./apiAutoTest.xlsx")
ws=wb["BPM接口测试"]
print(ws.max_row)
\ No newline at end of file
{
"认证接口": {
"登录系统": {
"LoginSuccess": {
"username": "admin",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE="
},
"LoginErrorPasswordIsError": {
"username": "admin",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE"
},
"LoginErrorPasswordIsLong": {
"username": "admin",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE="
},
"LoginErrorPasswordIsShort": {
"username": "admin",
"password": "1"
},
"LoginErrorPasswordIsSpecial": {
"username": "admin",
"password": "㊚㊛囍㊒㊖☑✔☐☒✘卍"
},
"LoginErrorPasswordIsNone": {
"username": "admin",
"password": ""
},
"LoginErrorUsernameIsNone": {
"username": "",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE="
},
"LoginErrorUsernameIsShort": {
"username": "a",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE="
},
"LoginErrorUsernameIsLong": {
"username": "adminadminadminadminadminadmin",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE="
},
"LoginErrorUsernameIsSpecial": {
"username": "㊚㊛囍㊒㊖☑✔☐☒✘卍",
"password": "QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE="
}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {
"code": "testAddDem",
"description": "testAddDem",
"isDefault": 0,
"name": "testAddDem"
}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "需要更新"},
"DeleteDemErrorIdIsNone": {"ids": ""}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"code": "testAddDem"}
},
"更新维度": {
"UpdateDemSuccess": {
"code": "testAddDem",
"description": "测试添加的维度",
"isDefault": 0,
"name": "测试添加的维度"
}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "testAddOrg",
"demId": "需要更新",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"删除组织": {
"DelOrgSuccess": "testAddOrg"
},
"保存组织参数": {
"SaveOrgParamSuccess": {
"query": {"orgCode": "testAddOrg"},
"body": [{"alias": "sz", "value": 1}]
}
}
},
"用户管理": {
"添加用户": {
"AddUserSuccess": {
"id":"",
"account":"testAddUser",
"address":"",
"email":"",
"fullname":"测试添加的用户",
"mobile":"",
"password":"123456",
"photo":"",
"sex":"",
"status":1
}
}
}
}
# 文件格式
[节点名称]
键=值
# 配置文件的名称
[file]
# 配置用例管理文件名称
excel=apiAutoTest.xlsx
# 配置用例json文件名称
case=case_data.json
# 配置期望数据名称名称
expect=expect_data.json
# 配置sql语句文件的名称
sql=sql_data.json
# 配置excel工作表的名称
[table]
name=BPM接口测试
# 配置被测系统的域名
[host]
bpm=http://36.139.193.99:8088
# 数据库的链接信息
[sql]
host=36.139.193.99
port=3306
user=root
pwd=Rhrc@2024
database=eip8
\ No newline at end of file
{
"认证接口":{
"登录系统":{
"LoginSuccess":{"username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true},
"LoginErrorPasswordIsError":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorPasswordIsLong":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorPasswordIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorPasswordIsSpecial":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorPasswordIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorUsernameIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorUsernameIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorUsernameIsLong":{"state":false,"message":"账户错误或该租户未启用"},
"LoginErrorUsernameIsSpecial":{"state":false,"message":"账户错误或该租户未启用"}
},
"刷新token": {
"RefreshTokenSuccess": {"loginStatus":true}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"state": true, "message": "添加维度成功!"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"state":true,"message":"删除维度成功!"},
"DeleteDemErrorIdIsNone": {"state":false,"message":"维度id不能为空!"}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"state": true, "message": "设置默认维度成功"}
},
"更新维度": {
"UpdateDemSuccess": {"state": true, "message": "更新维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"state": true, "message": "添加组织成功"}
},
"删除组织": {
"DelOrgSuccess": {"state":true,"message":"删除组织成功!"}
},
"保存组织参数": {
"SaveOrgParamSuccess": {"state":true,"message":"保存组织参数成功!"}
}
},
"用户管理": {
"添加用户": {
"AddUserSuccess": {"state":true,"message":"用户添加成功!","value":"","code":200}
}
}
}
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE CODE_=\"testAddDem\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"delete": "delete from uc_org where CODE_=\"testAddOrg\";",
"select": "SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";"
}
}
},
"用户管理": {
"添加用户": {
"AddUserSuccess": "delete from uc_user where ACCOUNT_=\"testAddUser\";"
}
}
}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data5-expect_data5-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903CBA70>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903CBA70>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "a24d547e-6cf0-477f-9c09-4f04cbe3ff24-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': ''}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961167, "stop": 1730882961225, "uuid": "7e65e3f0-2005-4821-976b-0a9bc5c03129", "historyId": "781b1912fae0d3cef959a4f8372f5006", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "0c04ec51-ba04-4884-b31f-f8c2728d37f9", "befores": [{"name": "method", "status": "passed", "start": 1730882960725, "stop": 1730882960725}], "start": 1730882960725, "stop": 1730882961033}
\ No newline at end of file
{"name": "test_bpm[DELETE-http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds-query-case_data18-expect_data18-select-SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";-ids]", "status": "passed", "attachments": [{"name": "log", "source": "828f1c6e-a59c-470c-a36c-dc734ee0a8d0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'DELETE'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除维度成功!'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1730882961788, "stop": 1730882961818, "uuid": "06fceb6b-39cd-4a5b-84c7-05506d539d01", "historyId": "4b291a570730ed9642e0ca46cc6ae3ba", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data2-expect_data2-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903B3D70>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '解密密码异常,请检查RSA公钥和私钥配置' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 解密密码异常,请检查RSA公钥和私钥配置\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903B3D70>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEj...LfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "ab349aaf-2be9-4939-b93a-111745622bad-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcwlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdcPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961036, "stop": 1730882961051, "uuid": "402925f8-10b0-4517-ae52-acf33f5c723e", "historyId": "44e9602b4f01c5cfe3da8128f768def1", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
INFO  root:test_bpm.py:32 断言成功,用例数据为:None,期望数据为:{'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzA5NjkxOTAsImlhdCI6MTczMDg4Mjc5MH0.h1tZWgK_hFYsT0o26hE9vAUffPeFHEhha4CGl3PHuNotGapLy2udnrz3a9ezieK4BJnkwAPdNE1PKevDrSdGJw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
\ No newline at end of file
{"uuid": "8814042f-c1fc-4a9e-a74a-6fde910dae08", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961524, "stop": 1730882961524}], "start": 1730882961524, "stop": 1730882961555}
\ No newline at end of file
{"uuid": "b7401942-a39a-4170-9e01-87e3a27f488a", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961648, "stop": 1730882961648}], "start": 1730882961648, "stop": 1730882961687}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data4-expect_data4-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903C8440>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}\nsql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903C8440>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}\nsql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "620475a2-02b3-438f-b70a-462b783e6964-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961116, "stop": 1730882961150, "uuid": "3d9fc9d2-f3bd-4d31-b429-66ecc81e1cb9", "historyId": "06214bad6c54cd8b2613cbb14956e885", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "9c737606-b99d-4e80-a6b4-d1b98bf27320", "befores": [{"name": "method", "status": "passed", "start": 1730882961524, "stop": 1730882961524}], "start": 1730882961524, "stop": 1730882961559}
\ No newline at end of file
{"uuid": "ec6844e4-3b06-4514-ba93-04f6e0db4171", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961035, "stop": 1730882961036}], "start": 1730882961035, "stop": 1730882961059}
\ No newline at end of file
{"uuid": "4a92c3ff-65b3-4db2-961c-8844ecf256a7", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882961524, "stop": 1730882961524}], "start": 1730882961524, "stop": 1730882961556}
\ No newline at end of file
{"uuid": "24674bf7-ca70-462a-a295-a98ce2945ab1", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961648, "stop": 1730882961648}], "start": 1730882961648, "stop": 1730882961690}
\ No newline at end of file
{"uuid": "89a7d985-6803-42a0-aa9a-9d9cc9cb67bc", "befores": [{"name": "mime", "status": "passed", "start": 1730882961277, "stop": 1730882961277}], "start": 1730882961277, "stop": 1730882961312}
\ No newline at end of file
INFO  root:read_ini.py:58 执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:host
INFO  root:read_ini.py:58 执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:port
INFO  root:read_ini.py:58 执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:user
INFO  root:read_ini.py:58 执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:pwd
INFO  root:read_ini.py:58 执行get_connect_sql_msg方法,功能为:根据key获取sql节点下数据库的链接信息, 传入的参数为:database
INFO  root:read_ini.py:48 执行get_host方法,功能为:根据key获取host节点下被测系统的域名, 传入的参数为:bpm
INFO  root:test_bpm.py:32 断言成功,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400, 'loginStatus': True}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzA5NjkxODksImlhdCI6MTczMDg4Mjc4OX0.3BTBKwBpCWnCFcKkof9CqxL1rEPkHdFP4MKNpdlmbyifE_zyBPElxmkMIYFWIUom78kL_tCo-ezfwClEKYlgig","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
{"uuid": "138984d9-dc4e-48ec-99b0-191cd92ee94b", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882961389, "stop": 1730882961389}], "start": 1730882961389, "stop": 1730882961419}
\ No newline at end of file
{"uuid": "c7a33f42-90a3-4019-a969-8c0886994baa", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961167, "stop": 1730882961167}], "start": 1730882961167, "stop": 1730882961233}
\ No newline at end of file
{"uuid": "dcc9d4b0-2cd4-442b-9b8f-111846971a15", "befores": [{"name": "url", "status": "passed", "start": 1730882961387, "stop": 1730882961387}], "start": 1730882961387, "stop": 1730882961421}
\ No newline at end of file
{"uuid": "a99870bc-6fd2-4e7f-b99e-1a9b5d7f4242", "befores": [{"name": "method", "status": "passed", "start": 1730882961387, "stop": 1730882961387}], "start": 1730882961387, "stop": 1730882961422}
\ No newline at end of file
{"uuid": "16ca1b07-1bfd-40b0-b186-1cd358e1bc17", "befores": [{"name": "case_data", "status": "passed", "start": 1730882960681, "stop": 1730882960681}], "start": 1730882960681, "stop": 1730882960721}
\ No newline at end of file
{"uuid": "ddc3b066-2e76-4480-a31d-f7b46133e160", "befores": [{"name": "url", "status": "passed", "start": 1730882960725, "stop": 1730882960725}], "start": 1730882960725, "stop": 1730882961032}
\ No newline at end of file
{"uuid": "6c78d6b7-0cc8-4cb1-b3ec-39d44dd0c8f2", "befores": [{"name": "url", "status": "passed", "start": 1730882961787, "stop": 1730882961788}], "start": 1730882961787, "stop": 1730882961822}
\ No newline at end of file
{"uuid": "af7d5b8c-8f2f-4852-b222-63d6d94d0646", "befores": [{"name": "mime", "status": "passed", "start": 1730882961115, "stop": 1730882961115}], "start": 1730882961115, "stop": 1730882961162}
\ No newline at end of file
{"uuid": "5db4735b-cb44-4b64-82b1-1ad6481ad1d8", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961425, "stop": 1730882961425}], "start": 1730882961425, "stop": 1730882961474}
\ No newline at end of file
{"uuid": "54b04e46-f63a-4420-8579-626cf4043712", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882961035, "stop": 1730882961035}], "start": 1730882961035, "stop": 1730882961061}
\ No newline at end of file
{"uuid": "88b9ae1d-6ccc-4a36-98bb-f4c29bb0125d", "children": ["5bf19376-b33f-401b-b4e9-6a13036e4dfa", "7923858e-aad3-47ae-904e-448d0e13d6ce", "402925f8-10b0-4517-ae52-acf33f5c723e", "99f2b7da-ffb8-4f82-aea5-c6ab9c5e410d", "3d9fc9d2-f3bd-4d31-b429-66ecc81e1cb9", "7e65e3f0-2005-4821-976b-0a9bc5c03129", "35fd291c-24e6-47e9-9253-4d3f64070f85", "7de250ed-075f-4b46-9657-e4f09d826a35", "529eb311-a409-4b35-9ec8-16bc4a552258", "84b3532f-fdd0-4a26-92b0-48d52a4c11ec", "83dd56c4-e43e-483d-8e6d-cfa7e45a16f8", "6993aaa3-9609-42a6-8579-ad6bc5c01048", "2c43b47a-8c42-4cac-b841-aee5ee77ac01", "8d8b1c1e-8366-45ac-b740-58d91bba3004", "365f82b0-eafb-44c6-8757-87016c7125ec", "a4d0dfef-c17d-4ce8-9b18-775e12a15970", "e2418dde-8de7-4e13-b9fc-52c4531d8092", "fb4ad027-88fc-4cff-ac66-1bdcfed98b73", "06fceb6b-39cd-4a5b-84c7-05506d539d01", "5b905c14-e365-46cb-88d5-806bedba8aa6"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1730882960430, "stop": 1730882960589}], "start": 1730882960430, "stop": 1730882961855}
\ No newline at end of file
{"uuid": "5bc7e387-07c6-4303-bac3-1a7ad4bc187a", "befores": [{"name": "mime", "status": "passed", "start": 1730882961166, "stop": 1730882961166}], "start": 1730882961166, "stop": 1730882961236}
\ No newline at end of file
{"uuid": "2095f6f2-8dac-4ab3-999d-c34481ed1b35", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882961316, "stop": 1730882961316}], "start": 1730882961316, "stop": 1730882961348}
\ No newline at end of file
{"uuid": "87534ac4-b67a-4a29-adb3-e60e98e90a7d", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961115, "stop": 1730882961115}], "start": 1730882961115, "stop": 1730882961160}
\ No newline at end of file
{"uuid": "dcdcc967-d761-4a5d-8a83-f11d17d38a61", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961648, "stop": 1730882961648}], "start": 1730882961648, "stop": 1730882961688}
\ No newline at end of file
{"uuid": "185efccb-545b-4e90-b2e5-0625648030e1", "befores": [{"name": "url", "status": "passed", "start": 1730882961827, "stop": 1730882961827}], "start": 1730882961827, "stop": 1730882961852}
\ No newline at end of file
{"uuid": "6630ec39-b2f2-4e9a-a29e-404df770062f", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961316, "stop": 1730882961316}], "start": 1730882961316, "stop": 1730882961349}
\ No newline at end of file
{"uuid": "2193ed02-7317-4085-836e-66fb1a36c4cc", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882961278, "stop": 1730882961278}], "start": 1730882961278, "stop": 1730882961310}
\ No newline at end of file
{"uuid": "6e64482e-3305-4e8e-bcad-80066078dcc2", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961240, "stop": 1730882961240}], "start": 1730882961240, "stop": 1730882961273}
\ No newline at end of file
{"uuid": "5eb83dd1-3c1e-4dd9-9020-5d272dea2361", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882961167, "stop": 1730882961167}], "start": 1730882961167, "stop": 1730882961235}
\ No newline at end of file
{"uuid": "70a4fdca-7768-4619-93ca-9e3c4e85508a", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961066, "stop": 1730882961066}], "start": 1730882961066, "stop": 1730882961111}
\ No newline at end of file
{"uuid": "e2f43f48-7a14-4ea0-9808-d4c2fe253e54", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882961354, "stop": 1730882961354}], "start": 1730882961354, "stop": 1730882961383}
\ No newline at end of file
INFO  root:test_bpm.py:32 断言成功,用例数据为:testAddOrg,期望数据为:{'state': True, 'message': '删除组织成功!'}, 服务器返回的数据为:{"state":true,"message":"删除组织成功!","value":"","code":200}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data3-expect_data3-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903CA1B0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '账号或密码错误' == '账户错误或该租户未启用'\nE \nE - 账户错误或该租户未启用\nE + 账号或密码错误\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903CA1B0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json', case_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "43c5f435-6ad5-4baf-ba49-c75833a23ffd-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '1'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961066, "stop": 1730882961099, "uuid": "99f2b7da-ffb8-4f82-aea5-c6ab9c5e410d", "historyId": "5216c1ffb8088c9ee656743ed3f1494b", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/api/org/v1/org/addOrg-json-case_data14-expect_data14-select|delete-sql_data14-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125908326C0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'testAddOrg', 'demId': '1854082921121030144', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功', 'state': True}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}, update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert '添加组织成功!' == '添加组织成功'\nE \nE - 添加组织成功\nE + 添加组织成功!\nE ? +\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125908326C0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/org/addOrg', mime = 'json'\ncase_data = {'code': 'testAddOrg', 'demId': '1854082921121030144', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功', 'state': True}\nsql_type = 'select|delete'\nsql_data = {'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}, update_key = 'demId'\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "8cb09751-f91a-4c8b-8dd3-08c56a02d1d3-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'testAddOrg', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '添加组织成功'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "sql_data", "value": "{'delete': 'delete from uc_org where CODE_=\"testAddOrg\";', 'select': 'SELECT ID_ FROM uc_demension WHERE CODE_=\"testAddDem\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1730882961563, "stop": 1730882961633, "uuid": "365f82b0-eafb-44c6-8757-87016c7125ec", "historyId": "fb59027e387f9146f821406a9b065f5b", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "e95c792c-6e15-49b1-b03d-4dab91879f5a", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961481, "stop": 1730882961481}], "start": 1730882961481, "stop": 1730882961519}
\ No newline at end of file
{"uuid": "53e94dc3-e16e-423a-ba3e-5d8a68e60ee0", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961726, "stop": 1730882961726}], "start": 1730882961726, "stop": 1730882961778}
\ No newline at end of file
{"uuid": "b93f0202-f48b-4fb6-b7c4-855053716dc2", "befores": [{"name": "url", "status": "passed", "start": 1730882961725, "stop": 1730882961725}], "start": 1730882961725, "stop": 1730882961782}
\ No newline at end of file
{"uuid": "5d2a0e91-bece-484b-9b13-9ee219271e33", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882960725, "stop": 1730882960725}], "start": 1730882960725, "stop": 1730882961020}
\ No newline at end of file
{"uuid": "5e500938-0202-4cf5-b42f-4df3638099d3", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882960725, "stop": 1730882960725}], "start": 1730882960725, "stop": 1730882961020}
\ No newline at end of file
{"uuid": "c7b4bcf3-0333-451d-af96-a5fddafa78f5", "befores": [{"name": "method", "status": "passed", "start": 1730882961725, "stop": 1730882961725}], "start": 1730882961725, "stop": 1730882961782}
\ No newline at end of file
{"uuid": "a40893e5-5990-41ee-ad26-a0332c53976e", "befores": [{"name": "method", "status": "passed", "start": 1730882961353, "stop": 1730882961353}], "start": 1730882961353, "stop": 1730882961385}
\ No newline at end of file
{"uuid": "88c701fe-d078-44a2-be7e-f9236fb9478c", "befores": [{"name": "method", "status": "passed", "start": 1730882961277, "stop": 1730882961277}], "start": 1730882961277, "stop": 1730882961313}
\ No newline at end of file
{"uuid": "0569ba50-fcf6-4a44-b316-b2414d6ad466", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961694, "stop": 1730882961694}], "start": 1730882961694, "stop": 1730882961720}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams-query|json-case_data16-expect_data16-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125908317F0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert False == True\nE + where False = <built-in method get of dict object at 0x0000012590903080>('state')\nE + where <built-in method get of dict object at 0x0000012590903080> = {'code': 200, 'message': '保存失败,请将参数填写完整', 'state': False, 'value': '根据输入的组织编码没有找到对应的组织信息!'}.get\nE + where {'code': 200, 'message': '保存失败,请将参数填写完整', 'state': False, 'value': '根据输入的组织编码没有找到对应的组织信息!'} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125908317F0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post'\nurl = 'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams', mime = 'query|json'\ncase_data = {'body': [{'alias': 'sz', 'value': 1}], 'query': {'orgCode': 'testAddOrg'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None\nsql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "83c22760-e253-4bda-ba4f-620055972630-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'testAddOrg'}, 'body': [{'alias': 'sz', 'value': 1}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961695, "stop": 1730882961709, "uuid": "e2418dde-8de7-4e13-b9fc-52c4531d8092", "historyId": "a0a71bd0481418c9c53054d9a0bd0023", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "3d987b0c-255a-4808-8d66-d8e1cb22c45d", "befores": [{"name": "mime", "status": "passed", "start": 1730882961316, "stop": 1730882961316}], "start": 1730882961316, "stop": 1730882961350}
\ No newline at end of file
{"uuid": "d4b912d4-5356-4e1b-8afd-3fe96ac38863", "befores": [{"name": "method", "status": "passed", "start": 1730882961481, "stop": 1730882961481}], "start": 1730882961481, "stop": 1730882961521}
\ No newline at end of file
{"uuid": "3b5bde1e-d351-49dd-9b34-5d85d74349c8", "befores": [{"name": "method", "status": "passed", "start": 1730882961035, "stop": 1730882961035}], "start": 1730882961035, "stop": 1730882961063}
\ No newline at end of file
{"uuid": "b860ff8a-aace-41bd-ab23-2be32d980f43", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961482, "stop": 1730882961482}], "start": 1730882961482, "stop": 1730882961516}
\ No newline at end of file
{"uuid": "0839033e-146a-426a-b067-34f3bb9b853c", "befores": [{"name": "mime", "status": "passed", "start": 1730882961481, "stop": 1730882961481}], "start": 1730882961481, "stop": 1730882961519}
\ No newline at end of file
{"uuid": "9e8b8170-5d73-47a8-9f10-e095902211a4", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882961115, "stop": 1730882961115}], "start": 1730882961115, "stop": 1730882961161}
\ No newline at end of file
{"uuid": "99a0aa0a-8fa8-44aa-a739-349101e4e50e", "befores": [{"name": "mime", "status": "passed", "start": 1730882961353, "stop": 1730882961353}], "start": 1730882961353, "stop": 1730882961384}
\ No newline at end of file
ERROR  root:test_bpm.py:29 断言失败,用例数据为:{'username': 'admin', 'password': '1'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1854082919573331968"}
\ No newline at end of file
ERROR  root:test_bpm.py:29 断言失败,用例数据为:{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MzA5NjkxODksImlhdCI6MTczMDg4Mjc4OX0.3BTBKwBpCWnCFcKkof9CqxL1rEPkHdFP4MKNpdlmbyifE_zyBPElxmkMIYFWIUom78kL_tCo-ezfwClEKYlgig","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
{"uuid": "1307bc70-bcda-4691-94ce-320ad44bdd8f", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961389, "stop": 1730882961389}], "start": 1730882961389, "stop": 1730882961418}
\ No newline at end of file
{"uuid": "f85d87fc-326f-45f8-aece-6b7b3e06e2e8", "befores": [{"name": "expect_data", "status": "passed", "start": 1730882961066, "stop": 1730882961066}], "start": 1730882961066, "stop": 1730882961110}
\ No newline at end of file
INFO  root:test_bpm.py:32 断言成功,用例数据为:{'username': '㊚㊛囍㊒㊖☑✔☐☒✘卍', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1854082920768708608"}
\ No newline at end of file
{"uuid": "999a657e-8e6c-4b63-87f5-159da21a5e5e", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961788, "stop": 1730882961788}], "start": 1730882961788, "stop": 1730882961821}
\ No newline at end of file
{"uuid": "10b3fab8-f47f-48e0-8bfd-f9b6a7826dd7", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961425, "stop": 1730882961425}], "start": 1730882961425, "stop": 1730882961475}
\ No newline at end of file
{"uuid": "2bc6b63c-5616-49db-8e34-e101e44655b0", "befores": [{"name": "mime", "status": "passed", "start": 1730882961035, "stop": 1730882961035}], "start": 1730882961035, "stop": 1730882961062}
\ No newline at end of file
{"uuid": "3fb7c627-6026-4d8a-99c9-ab6ee37b0522", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961115, "stop": 1730882961115}], "start": 1730882961115, "stop": 1730882961159}
\ No newline at end of file
{"uuid": "b34d8341-a04a-4454-ab3a-6c3dc7790c56", "befores": [{"name": "method", "status": "passed", "start": 1730882961694, "stop": 1730882961694}], "start": 1730882961694, "stop": 1730882961723}
\ No newline at end of file
{"uuid": "73f7d47f-b7ad-430b-bc6e-cc8c53332c85", "befores": [{"name": "sql_type", "status": "passed", "start": 1730882961035, "stop": 1730882961035}], "start": 1730882961035, "stop": 1730882961060}
\ No newline at end of file
{"uuid": "dc7b86c0-ff07-4590-8ea3-852016ce6b4d", "befores": [{"name": "mime", "status": "passed", "start": 1730882961648, "stop": 1730882961648}], "start": 1730882961648, "stop": 1730882961690}
\ No newline at end of file
INFO  root:db.py:36 执行的方法为:delete,功能描述为:执行删除的sql语句,传入的参数为:DELETE FROM uc_demension WHERE CODE_="testAddDem";
INFO  root:test_bpm.py:32 断言成功,用例数据为:{'code': 'testAddDem', 'description': 'testAddDem', 'isDefault': 0, 'name': 'testAddDem'},期望数据为:{'state': True, 'message': '添加维度成功!'}, 服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":"","code":200}
\ No newline at end of file
{"uuid": "3220f673-7b71-4361-81c9-8dd21d33940b", "befores": [{"name": "sql_data", "status": "passed", "start": 1730882961066, "stop": 1730882961066}], "start": 1730882961066, "stop": 1730882961109}
\ No newline at end of file
{"uuid": "e92ee877-e553-49a0-8709-9eb6ba14e0a9", "befores": [{"name": "url", "status": "passed", "start": 1730882961066, "stop": 1730882961066}], "start": 1730882961066, "stop": 1730882961112}
\ No newline at end of file
{"name": "test_bpm[get-http://36.139.193.99:8088/refresh-None-None-expect_data10-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "02530403-4663-417a-944e-6ec248356407-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'get'"}, {"name": "url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'loginStatus': True}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961389, "stop": 1730882961417, "uuid": "83dd56c4-e43e-483d-8e6d-cfa7e45a16f8", "historyId": "cce02121243ac62c8729993e5d5ae69f", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data1-expect_data1-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903AB4D0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n> assert res.json().get(key) == expect_data[key]\nE AssertionError: assert None == False\nE + where None = <built-in method get of dict object at 0x00000125907F96C0>('state')\nE + where <built-in method get of dict object at 0x00000125907F96C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTczMDg4Mjc4OX0.3BTBKwBpCWnCFcKkof9CqxL1rEPkHdFP4MKNpdlmbyifE_zyBPElxmkMIYFWIUom78kL_tCo-ezfwClEKYlgig', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...ksImlhdCI6MTczMDg4Mjc4OX0.3BTBKwBpCWnCFcKkof9CqxL1rEPkHdFP4MKNpdlmbyifE_zyBPElxmkMIYFWIUom78kL_tCo-ezfwClEKYlgig', ...} = json()\nE + where json = <Response [200]>.json\n\ntest_case\\test_bpm.py:27: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3.test_case.test_bpm.TestBPM object at 0x00000125903AB4D0>\nreq_fix = <APIAutoTest_v3.requests_method.requests_method.RequestsMethod object at 0x000001259087ADE0>, method = 'post', url = 'http://36.139.193.99:8088/auth'\nmime = 'application/json'\ncase_data = {'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize(\"method, url, mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel().get_data())\n def test_bpm(self, req_fix, method, url, mime, case_data, expect_data, sql_type, sql_data, update_key):\n \n # 使用RequestsMethod类对象调用request_all方法发送请求。自定义固件就是RequestsMethod类对象\n res = req_fix.request_all(req_method=method, req_url=url, req_mime=mime, req_case_data=case_data, sql_type=sql_type, sql_data=sql_data, update_key=update_key)\n \n # 断言\n try:\n for key in expect_data.keys():\n assert res.json().get(key) == expect_data[key]\n except AssertionError:\n log.error(f\"断言失败,用例数据为:{case_data},期望数据为:{expect_data}, 服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_bpm.py:30: AssertionError"}, "attachments": [{"name": "log", "source": "448584d3-64ae-4720-a87f-95f8a4f02267-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882960726, "stop": 1730882960783, "uuid": "7923858e-aad3-47ae-904e-448d0e13d6ce", "historyId": "8dff1ffa698fc4c67743f43eeaa3a974", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "5cfd7b07-ae62-4b5f-97d8-a8cb797d8ea4", "befores": [{"name": "method", "status": "passed", "start": 1730882961240, "stop": 1730882961240}], "start": 1730882961240, "stop": 1730882961275}
\ No newline at end of file
{"uuid": "487c3d9c-288c-478e-852e-52aee744785a", "befores": [{"name": "mime", "status": "passed", "start": 1730882961424, "stop": 1730882961424}], "start": 1730882961424, "stop": 1730882961477}
\ No newline at end of file
{"name": "test_bpm[post-http://36.139.193.99:8088/auth-application/json-case_data8-expect_data8-None-None-None]", "status": "passed", "attachments": [{"name": "log", "source": "96ff285b-2c81-4a0d-9066-f05126745550-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "method", "value": "'post'"}, {"name": "url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadmin', 'password': 'QKpkgIwnyACrUXQrQVRaSUbhPSOsKnj5hoRN5LGKHT3NmLCwGIN+aGa981YZtlLoEfpVvGDnILn0QU09VHSkgL+Or6oTG1E8OtVTmAEjivAe/a4zLPwd/OfvKYIYbBP5ExZyy+wlVTbLgDfqkuKPGOMPPSLlZWLfvG7yzdc+CyE='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1730882961317, "stop": 1730882961346, "uuid": "529eb311-a409-4b35-9ec8-16bc4a552258", "historyId": "36a8f853f3663b27e90fc79477def8cb", "testCaseId": "c86107830ef6493a770bf26c1e1c566b", "fullName": "test_case.test_bpm.TestBPM#test_bpm", "labels": [{"name": "parentSuite", "value": "test_case"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-9N1Q7L6B"}, {"name": "thread", "value": "9556-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm"}]}
\ No newline at end of file
{"uuid": "60176d02-88d8-49cc-a4a5-8a5872693ca9", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961563, "stop": 1730882961563}], "start": 1730882961563, "stop": 1730882961644}
\ No newline at end of file
{"uuid": "e26003d9-fd3e-4df9-b8b5-b67739751995", "befores": [{"name": "url", "status": "passed", "start": 1730882961648, "stop": 1730882961648}], "start": 1730882961648, "stop": 1730882961691}
\ No newline at end of file
{"uuid": "b2002ebb-e897-49e3-a0fd-04e42a4ca655", "befores": [{"name": "update_key", "status": "passed", "start": 1730882961788, "stop": 1730882961788}], "start": 1730882961788, "stop": 1730882961819}
\ No newline at end of file
{"uuid": "6d48761c-e76f-4a6c-83e9-276f7542ece0", "befores": [{"name": "mime", "status": "passed", "start": 1730882961387, "stop": 1730882961387}], "start": 1730882961387, "stop": 1730882961421}
\ No newline at end of file
ERROR  root:test_bpm.py:29 断言失败,用例数据为:{'username': 'admin', 'password': '㊚㊛囍㊒㊖☑✔☐☒✘卍'},期望数据为:{'state': False, 'message': '账户错误或该租户未启用'}, 服务器返回的数据为:{"state":false,"message":"账号或密码错误","code":200,"logId":"1854082919795630080"}
\ No newline at end of file
{"uuid": "0bcf05b9-3df4-4686-896b-3ae8373c9562", "befores": [{"name": "case_data", "status": "passed", "start": 1730882961694, "stop": 1730882961694}], "start": 1730882961694, "stop": 1730882961721}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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