Commit 5762c030 by wanglixuan

api

parent 35d2efc9
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/12 17:33
# Description:
#
# ---------------------------------------------------------------------------
import functools
import logging
import os
import time
# from APIAutoTest.common.log import get_log
#
# log = get_log()
"""
pip install pytest-html 用例生成html报告
pytest -vv 用例层目录 --html=报告路径 --self-contained-html
先安装3.2.0的版本,卸载掉,再安装3.1.0版本
"""
"""
失败重跑:pip install pytest-rerunfailures
pytest 用例层目录 --reruns 失败重跑的次数 --reruns-delay 失败重跑的间隔时间
"""
"""
allure生成测试报告的步骤:
1: 生成测试结果的json文件---json非常多
pytest 测试模块 --alluredir=存放json文件的目录 --clean-alluredir
2:根据第一步生成的json文件来生成测试报告:
a): 生成web服务
allure serve 第一步存放的json文件目录
b): 生成静态报告
allure generate 第一步存放的json文件目录 -o 存放静态报告的目录
打开静态报告:allure open 静态报告存放的目录
"""
def get_logs():
# 将日志写入到文件中---流程
# 创建logger
logger = logging.getLogger()
# 设置日志文件中写入的级别
logger.setLevel(level=logging.DEBUG)
# 需要设置日志的名称
log_name = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(time.time())) + ".log"
# 获取日志的目录
log_dir = os.path.join(os.path.join(os.path.dirname(__file__), "report"), "result_log")
# 日志路径拼接
log_path = os.path.join(log_dir, log_name)
# 设置日志文件
file_handler = logging.FileHandler(log_path, mode="a", encoding="utf-8")
# 设置日志在文件中显示的格式
log_format = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
# 将日志设置格式添加到日志文件中
file_handler.setFormatter(log_format)
# 将日志文件的handler添加到logger对象中
logger.addHandler(file_handler)
return logger
log = get_logs()
# 装饰器
def log_decorator(func_name):
@functools.wraps(func_name) # 让被装饰对象使用它原来的名称,不要使用inner
def inner(*arg, **kwargs):
try:
log.info(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}")
value = func_name(*arg, **kwargs)
except Exception as e:
log.error(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}报错,错误为:{e}")
raise e
else:
return value
return inner
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: db.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:10
# Description:
#
# ---------------------------------------------------------------------------
import pymysql
from APIAutoTest_v3_1.common.read_basic_ini import ReadBasicIni
class DB:
def __init__(self):
"""链接数据库,获取链接对象,再获取游标对象"""
ini = ReadBasicIni()
self.conn = pymysql.connect(
host=ini.sql_connect_msg("host"),
port=int(ini.sql_connect_msg("port")),
user=ini.sql_connect_msg("user"),
password=ini.sql_connect_msg("pwd"),
database=ini.sql_connect_msg("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
def close(self):
self.cursor.close()
self.conn.close()
def delete(self, sql):
"""执行删除的sql语句"""
try:
self.cursor.execute(sql)
except Exception as e:
raise e
else:
self.conn.commit()
def select(self, sql):
"""执行查询的sql语句,并返回查询的结果"""
try:
self.cursor.execute(sql)
except Exception as e:
raise e
else:
select_result = self.cursor.fetchall()
if select_result:
return select_result[0][0]
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: log.py
# Author: lao_zhao
# Datetime: 2024/7/12 17:20
# Description:
#
# ---------------------------------------------------------------------------
import logging
import os
import time
from APIAutoTest_v3_1.common.read_basic_ini import ReadBasicIni
def get_log():
# 将日志写入到文件中---流程
# 创建logger
logger = logging.getLogger()
# 设置日志文件中写入的级别
logger.setLevel(level=logging.DEBUG)
# 需要设置日志的名称
log_name = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(time.time())) + ".log"
# 获取日志的目录
log_dir = ReadBasicIni().get_log_dir("log")
# 日志路径拼接
log_path = os.path.join(log_dir, log_name)
# 设置日志文件
file_handler = logging.FileHandler(log_path, mode="a", encoding="utf-8")
# 设置日志在文件中显示的格式
log_format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 将日志设置格式添加到日志文件中
file_handler.setFormatter(log_format)
# 将日志文件的handler添加到logger对象中
logger.addHandler(file_handler)
return logger
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: read_basic_ini.py
# Author: lao_zhao
# Datetime: 2024/7/12 16:48
# Description:
#
# ---------------------------------------------------------------------------
import os, configparser
class ReadBasicIni:
def __init__(self):
"""获取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, "basic_config.ini")
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
def get_url(self, key):
"""根据key,获取被测系统的域名"""
try:
return self.conf.get("host", key)
except Exception as e:
raise e
def sql_connect_msg(self, key):
"""根据key,获取数据库的链接信息"""
try:
return self.conf.get("sql", key)
except Exception as e:
raise e
def get_log_dir(self, key):
"""根据key获取日志存放的目录"""
try:
# 获取日志存放的目录名称
dir_name = self.conf.get("report", key)
except Exception as e:
raise e
else:
# 获取report目录路径
report_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "report")
# 拼接日志文件的目录路径,再返回
return os.path.join(report_path, dir_name)
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: read_excel.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:15
# Description:
#
# ---------------------------------------------------------------------------
import openpyxl
from APIAutoTest_v3_1 import log_decorator
from APIAutoTest_v3_1.common.read_basic_ini import ReadBasicIni
from APIAutoTest_v3_1.common.read_ini import ReadIni
from APIAutoTest_v3_1.common.read_json import read_json
from APIAutoTest_v3_1.data_config.settings import *
class ReadExcel:
@log_decorator
def __init__(self, username):
"""获取数据配置层中,除了ini文件以外所有文件的路径"""
self.ini = ReadIni(username)
case_data_path = self.ini.get_file_path(CASE_FILE)
expect_data_path = self.ini.get_file_path(EXPECT_FILE)
sql_data_path = self.ini.get_file_path(SQL_FILE)
excel_path = self.ini.get_file_path(EXCEL_FILE)
table_name = self.ini.get_table_name(TABLE_NAME)
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)
try:
wb = openpyxl.load_workbook(excel_path)
self.ws = wb[table_name]
except Exception as e:
# log.error(f"获取excel工作簿或工作表时报错,错误为:{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(MODULE, row)
@log_decorator
def api_name(self, row):
"""根据行,获取接口名称"""
return self.__get_cell_value(API, row)
@log_decorator
def req_method(self, row):
"""根据行,获取请求方法"""
return self.__get_cell_value(METHOD, row)
@log_decorator
def req_url(self, row):
"""根据行,获取请求的url"""
host = ReadBasicIni().get_url(HOST)
path = self.__get_cell_value(PATH, row)
if path:
return host + path
@log_decorator
def case_mime(self, row):
"""根据行,获取用例的媒体类型"""
value = self.__get_cell_value(MIME, row)
if value:
return value.lower()
@log_decorator
def case_data(self, row):
"""根据行,获取用例数据"""
case_data_key = self.__get_cell_value(CASE, 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(EXPECT, 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_type(self, row):
"""根据行,获取sql语句的类型"""
value = self.__get_cell_value(SQLTYPE, row)
if value:
return value.lower()
@log_decorator
def sql_data(self, row):
"""根据行,获取期望数据"""
sql_data_key = self.__get_cell_value(SQLDATA, 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 update_key(self, row):
"""根据行,获取更新的key"""
return self.__get_cell_value(UPDATEKEY, row)
@log_decorator
def case_title(self, row):
"""根据行,获取用例的标题"""
return self.__get_cell_value(TITLE, row)
@log_decorator
def case_level(self, row):
"""根据行,获取用例的标题"""
return self.__get_cell_value(LEVEL, row)
@log_decorator
def get_data(self):
"""将测试使用的数据存放在一个二维列表中"""
data_list = []
for row in range(2, self.ws.max_row+1):
module_name = self.module_name(row)
api_name = self.api_name(row)
case_title = self.case_title(row)
level = self.case_level(row)
case_method = self.req_method(row)
case_url = self.req_url(row)
case_mime = self.case_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 case_method is not None and case_url is not None:
data_list.append([module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key])
else:
return data_list
if __name__ == '__main__':
excel = ReadExcel("lao_zhang")
print(excel.get_data())
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: read_ini.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:03
# Description:
#
# ---------------------------------------------------------------------------
import configparser
import os.path
class ReadIni:
def __init__(self, username):
"""获取ini文件的路径,并读取"""
self.username_data_config_path = os.path.join(os.path.join(os.path.dirname(os.path.dirname(__file__)), "data_config"), username)
ini_path = os.path.join(self.username_data_config_path, "config.ini")
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
def get_file_path(self, key):
"""根据key,获取file节点下文件的路径"""
try:
file_name = self.conf.get("file", key)
except Exception as e:
raise e
else:
return os.path.join(self.username_data_config_path, file_name)
# def get_url(self, key):
# """根据key,获取被测系统的域名"""
# try:
# return self.conf.get("host", key)
# except Exception as e:
# raise e
def get_table_name(self, key):
"""根据key获取工作表的名称"""
try:
return self.conf.get("table_name", key)
except Exception as e:
raise e
#
# def sql_connect_msg(self, key):
# """根据key,获取数据库的链接信息"""
# try:
# return self.conf.get("sql", key)
# except Exception as e:
# raise e
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: read_json.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:08
# Description:
#
# ---------------------------------------------------------------------------
import json
import os
def read_json(file_path):
"""读取json文件,并将json文件的内容序列化为python对象,再返回"""
if os.path.isfile(file_path) and file_path.endswith(".json"):
try:
with open(file_path, mode="r", encoding="utf-8") as f:
return json.loads(f.read())
except Exception as e:
raise e
else:
raise FileNotFoundError("文件路径错误")
\ No newline at end of file
{
"认证接口":{
"登录系统":{
"LoginSuccess":{"username":"admin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsNone":{"username":"","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsShort":{"username":"a","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsLong":{"username":"adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsSpecial":{"username":"♡♣♤♥♦♧♨♩ε","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailPwdIsNone":{"username":"admin","password":""},
"LoginFailPwdIsShort":{"username":"admin","password":"1"},
"LoginFailPwdIsLong":{"username":"admin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"code": "test_dem_xyz_123","description": "测试维度","isDefault": 0, "name": "xyz测试维度"}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"code": "test_dem_xyz_123"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "需要更新"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "test_org",
"demId": "需要更新",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"保存组织参数": {
"SaveOrgParamSuccess": {
"query": {"orgCode": "test_org"},
"body": [{"alias":"sr","value":"dog"}]
}
},
"删除组织": {
"DeleteOrgSuccess": "test_org"
}
}
}
\ No newline at end of file
[节点名称]
键=值
# 配置数据层中文件的节点
[file]
# 用例管理文件
excel=APIAutoTest.xlsx
# 用例数据文件
case=case_data.json
# 期望数据文件
expect=expect.json
# sql语句文件
sql=sql_data.json
# 配置excel中工作表的名称
[table_name]
table=BPM
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员","account":"admin","userId":"1","expiration":86400},
"LoginFailUsernameIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsLong":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsSpecial":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsLong":{"state":false,"message":"账户错误或该租户未启用"}
},
"刷新token": {
"RefreshSuccess": {"message": "刷新成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"message": "添加维度成功!"}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"message": "设置默认维度成功!"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功!"}
},
"保存组织参数": {
"SaveOrgParamSuccess": {"state":true,"message":"保存组织参数成功!"}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!"}
}
}
}
\ No newline at end of file
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"select": "SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";",
"delete": "delete from uc_org where CODE_=\"test_org\";"
}
}
}
}
# 配置被测系统的域名
[host]
test_host=http://36.139.193.99:8088
[sql]
host=36.139.193.99
port=3306
user=root
pwd=Rhrc@2024
database=eip8
[report]
log=result_log
\ No newline at end of file
{
"认证接口":{
"登录系统":{
"LoginSuccess":{"username":"admin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsNone":{"username":"","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsShort":{"username":"a","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsLong":{"username":"adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailUsernameIsSpecial":{"username":"♡♣♤♥♦♧♨♩ε","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="},
"LoginFailPwdIsNone":{"username":"admin","password":""},
"LoginFailPwdIsShort":{"username":"admin","password":"1"},
"LoginFailPwdIsLong":{"username":"admin","password":"F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8="}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"code": "test_dem_xyz_123","description": "测试维度","isDefault": 0, "name": "xyz测试维度"}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"code": "test_dem_xyz_123"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "需要更新"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "test_org",
"demId": "需要更新",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"保存组织参数": {
"SaveOrgParamSuccess": {
"query": {"orgCode": "test_org"},
"body": [{"alias":"sr","value":"dog"}]
}
},
"删除组织": {
"DeleteOrgSuccess": "test_org"
}
}
}
\ No newline at end of file
[节点名称]
键=值
# 配置数据层中文件的节点
[file]
# 用例管理文件
excel=张三.xlsx
# 用例数据文件
case=case_data.json
# 期望数据文件
expect=expect.json
# sql语句文件
sql=sql_data.json
# 配置excel中工作表的名称
[table_name]
table=BPM
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员","account":"admin","userId":"1","expiration":86400},
"LoginFailUsernameIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsLong":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailUsernameIsSpecial":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsNone":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsShort":{"state":false,"message":"账户错误或该租户未启用"},
"LoginFailPwdIsLong":{"state":false,"message":"账户错误或该租户未启用"}
},
"刷新token": {
"RefreshSuccess": {"message": "刷新成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"message": "添加维度成功!"}
},
"设置默认维度": {
"SetDefaultDemSuccess": {"message": "设置默认维度成功!"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功!"}
},
"保存组织参数": {
"SaveOrgParamSuccess": {"state":true,"message":"保存组织参数成功!"}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!"}
}
}
}
\ No newline at end of file
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"select": "SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";",
"delete": "delete from uc_org where CODE_=\"test_org\";"
}
}
}
}
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: settings.py
# Author: lao_zhao
# Datetime: 2024/7/15 17:14
# Description:
#
# ---------------------------------------------------------------------------
# ===excel中列的配置项================================
NUMBER = "A"
MODULE = "B"
API = "C"
TITLE = "D"
LEVEL = "E"
METHOD = "F"
PATH = "G"
MIME = "H"
CASE = "I"
EXPECT = "J"
SQLTYPE = "K"
SQLDATA = "L"
UPDATEKEY = "M"
# file节点下键的名称============================
EXCEL_FILE = "excel"
CASE_FILE = "case"
EXPECT_FILE = "expect"
SQL_FILE = "sql"
# table_name节点下key的名称========================
TABLE_NAME = "table"
# host节点下key的名称========================
HOST = "test_host"
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjQsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/org/deleteOrg form test_org {'state': True, 'message': '删除组织成功!'} None None None
{"state":true,"message":"删除组织成功!","value":"","code":200}
断言成功
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774411037155328"}
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/org/deleteOrg form test_org {'state': True, 'message': '删除组织成功!'} None None None
{"state":true,"message":"删除组织成功!","value":"","code":200}
断言成功
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data0-expect_data0-\u6b63\u5411\u7528\u4f8b] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?code=bspDAYiuFkKO HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "PUT /api/demension/v1/dem/setDefaultDem?code=test_dem_xyz_123 HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=test_org HTTP/11" 200 None
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjEsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjIsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjMsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774411037155328"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774415470534656"}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774344196726784"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774348655271936"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774353130594304"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774357614305280"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774390887718912"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774395333681152"}
POST http://36.139.193.99:8088/auth application/json {'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812774329629908992"}
断言成功
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NTQsImlhdCI6MTcyMTAzNDA1NH0.c-wb9LuJOLxJGNcZ-A1cgQbK-YSFJePH1z7kkD7TT6rbi3NqFolHxR15FOR_nDdH8Bm8gybe0H4Xauhik_Kiag","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
断言成功
post http://36.139.193.99:8088/api/org/v1/org/addOrg json {'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'} {'message': '添加组织成功!'} select|delete {'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123";', 'delete': 'delete from uc_org where CODE_="test_org";'} demId
{"state":true,"message":"添加组织成功!","value":"","code":200}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/addOrg HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812774329814458368"}
断言成功
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774329999007744"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774335053144064"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774339528466432"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774329999007744"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774335053144064"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774339528466432"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774343991205888"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/deleteOrg HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=test_org HTTP/11" 200 None
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774390887718912"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774395333681152"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774399876112384"}
post http://36.139.193.99:8088/api/demension/v1/dem/addDem json {'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'} {'message': '添加维度成功!'} delete DELETE FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; None
{"state":true,"message":"添加维度成功!","value":"","code":200}
断言成功
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams query|json {'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]} {'state': True, 'message': '保存组织参数成功!'} None None None
{"state":true,"message":"保存组织参数成功!","value":"","code":200}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjEsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
PUT http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem query {'code': 'test_dem_xyz_123'} {'message': '设置默认维度成功!'} None None None
{"state":true,"message":"设置默认维度成功!","value":"","code":200}
断言成功
post http://36.139.193.99:8088/api/org/v1/org/addOrg json {'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'} {'message': '添加组织成功!'} select|delete {'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123";', 'delete': 'delete from uc_org where CODE_="test_org";'} demId
{"state":true,"message":"添加组织成功!","value":"","code":200}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjQsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjUsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjEsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjIsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjQsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjUsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjYsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774344196726784"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774348655271936"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "PUT /api/demension/v1/dem/setDefaultDem?code=test_dem_xyz_123 HTTP/11" 200 None
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data1-expect_data1-\u53cd\u5411\u7528\u4f8b1] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?code= HTTP/11" 500 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
\ No newline at end of file
post http://36.139.193.99:8088/api/demension/v1/dem/addDem json {'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'} {'message': '添加维度成功!'} delete DELETE FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; None
{"state":true,"message":"添加维度成功!","value":"","code":200}
断言成功
post http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams query|json {'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]} {'state': True, 'message': '保存组织参数成功!'} None None None
{"state":true,"message":"保存组织参数成功!","value":"","code":200}
断言成功
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774411037155328"}
POST http://36.139.193.99:8088/auth application/json {'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812774328992374784"}
断言成功
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774411037155328"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774401151180800'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774415470534656"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_add_dem in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_login succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774329999007744"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812774385271545856'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812774390887718912"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774385271545856 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
PUT http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem query {'code': 'test_dem_xyz_123'} {'message': '设置默认维度成功!'} None None None
{"state":true,"message":"设置默认维度成功!","value":"","code":200}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/deleteOrg HTTP/11" 200 None
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjEsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjIsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjMsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjQsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjQsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjUsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjYsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA0NjcsImlhdCI6MTcyMTAzNDA2N30.TPvV0Wz7XafXJtoYSIMo0gqMM0_QkDhlbRLEA-v2yTupQ2KP8lR1vtPB4KPDS2SoZuZPGrt_JBg2S07qba10Rg","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/addOrg HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774344196726784"}
POST http://36.139.193.99:8088/auth application/json {'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812774329428582400"}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774344196726784"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774348655271936"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774353130594304"}
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812774401151180800 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812774406603776000"}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774329999007744"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812774335053144064"}
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data2-expect_data2-\u53cd\u5411\u7528\u4f8b2] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?=abctest HTTP/11" 500 None
\ No newline at end of file
"Epic","Feature","Story","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"BPM-张三","维度管理","添加维度","0","0","1","0","0"
"BPM-张三","维度管理","设置默认维度","0","0","1","0","0"
"bpm-场景测试","维度管理","根据维度编码获取维度信息","0","0","3","0","0"
"BPM-Basic","认证接口","登录系统","3","0","5","0","0"
"BPM-Basic","维度管理","添加维度","0","0","1","0","0"
"BPM-Basic","维度管理","根据维度编码删除维度","1","0","0","0","0"
"BPM-Basic","组织管理","删除组织","0","0","1","0","0"
"BPM-Basic","认证接口","刷新token","1","0","0","0","0"
"bpm-场景测试","维度管理","添加维度","0","0","1","0","0"
"BPM-张三","组织管理","添加组织","0","0","1","0","0"
"bpm-场景测试","认证接口","登录系统","0","0","1","0","0"
"BPM-张三","组织管理","保存组织参数","0","0","1","0","0"
"BPM-张三","组织管理","删除组织","0","0","1","0","0"
"BPM-Basic","组织管理","保存组织参数","0","0","1","0","0"
"BPM-Basic","组织管理","添加组织","0","0","1","0","0"
"BPM-Basic","维度管理","设置默认维度","0","0","1","0","0"
"BPM-张三","维度管理","根据维度编码删除维度","1","0","0","0","0"
{
"uid" : "b1a8273437954620fa374b796ffaacdd",
"name" : "behaviors",
"children" : [ {
"name" : "BPM-Basic",
"children" : [ {
"name" : "认证接口",
"children" : [ {
"name" : "登录系统",
"children" : [ {
"name" : "正向用例-用户名和密码正确",
"uid" : "e9d1d0a7dd41e9c3",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "passed",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'正向用例-用户名和密码正确'", "'http://36.139.193.99:8088/auth'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为空-密码正确",
"uid" : "477b4db827f7f2a3",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "passed",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为空-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过短-密码正确",
"uid" : "fcca678309d0ad16",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "passed",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过短-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过长-密码正确",
"uid" : "c95022b8dd4a9ee2",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "passed",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过长-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为特殊字符-密码正确",
"uid" : "44dc49f4c9fab8c8",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "passed",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为特殊字符-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "e7926f135a161579",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "failed",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "c88599ffe3cee03a",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "failed",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4f90734493b69f6a",
"parentUid" : "afe918fc8b48d68ccca4d929ad5b44b1",
"status" : "failed",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
} ],
"uid" : "afe918fc8b48d68ccca4d929ad5b44b1"
}, {
"name" : "刷新token",
"children" : [ {
"name" : "正向用例",
"uid" : "d3ac3c518e93014f",
"parentUid" : "f87a885953146abfe3bf9264e9c9c870",
"status" : "failed",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
} ],
"uid" : "f87a885953146abfe3bf9264e9c9c870"
} ],
"uid" : "efbb689fea518286a8a42d26860d3bcf"
}, {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "13f19f97163dfce8",
"parentUid" : "f2393a7b3ad5f93d711b3ff4153db2ba",
"status" : "passed",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
} ],
"uid" : "f2393a7b3ad5f93d711b3ff4153db2ba"
}, {
"name" : "设置默认维度",
"children" : [ {
"name" : "正向用例",
"uid" : "dad13075f2ba67b4",
"parentUid" : "820ab205957195548b80ae78d5021bab",
"status" : "passed",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
} ],
"uid" : "820ab205957195548b80ae78d5021bab"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "ae886fd8f02f449d",
"parentUid" : "2013d64ce0ccc15b2ac0b10dc9f9369c",
"status" : "failed",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "2013d64ce0ccc15b2ac0b10dc9f9369c"
} ],
"uid" : "c33dd05eac512d34eac7754ba60f4d58"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "9d2279f2826c38de",
"parentUid" : "716c9ae673c4712a1a6c4fbde14238cd",
"status" : "passed",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
} ],
"uid" : "716c9ae673c4712a1a6c4fbde14238cd"
}, {
"name" : "保存组织参数",
"children" : [ {
"name" : "正向用例",
"uid" : "fc278e8ac67339bc",
"parentUid" : "1ec75c9a160573f41acc8efdbf0a60c0",
"status" : "passed",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
} ],
"uid" : "1ec75c9a160573f41acc8efdbf0a60c0"
}, {
"name" : "删除组织",
"children" : [ {
"name" : "正向用例",
"uid" : "694b6ae8f815bc3e",
"parentUid" : "6b27ff75d22cfa20c331d40142cd3b16",
"status" : "passed",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
} ],
"uid" : "6b27ff75d22cfa20c331d40142cd3b16"
} ],
"uid" : "54a5752aa07004150b4de67cee9f5685"
} ],
"uid" : "a17acae1eab7e54410f7c3ce8da43ed7"
}, {
"name" : "bpm-场景测试",
"children" : [ {
"name" : "认证接口",
"children" : [ {
"name" : "登录系统",
"children" : [ {
"name" : "bpm-场景测试-登录-正向",
"uid" : "1525b51bfd3a328e",
"parentUid" : "168dfdb4c708b8ea85ed360baf3a3d7e",
"status" : "passed",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "168dfdb4c708b8ea85ed360baf3a3d7e"
} ],
"uid" : "8f1e5be1e547c9f8a582d80e37a2ebef"
}, {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "bpm-场景测试-添加维度-正向",
"uid" : "1b6806facbba5b60",
"parentUid" : "30e36d4309b5d25d732b843d8bd765a5",
"status" : "passed",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "30e36d4309b5d25d732b843d8bd765a5"
}, {
"name" : "根据维度编码获取维度信息",
"children" : [ {
"name" : "正向用例",
"uid" : "8db57b79649e65c3",
"parentUid" : "b49081282bbdeccbaecbac49c8a47709",
"status" : "passed",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': '需要更新'}", "{'isDelete': '0'}", "'正向用例'" ]
}, {
"name" : "反向用例1",
"uid" : "cd6d851dc01bec9a",
"parentUid" : "b49081282bbdeccbaecbac49c8a47709",
"status" : "passed",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': ''}", "{'message': '必填:code维度编码必填!'}", "'反向用例1'" ]
}, {
"name" : "反向用例2",
"uid" : "12304b3944080174",
"parentUid" : "b49081282bbdeccbaecbac49c8a47709",
"status" : "passed",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'': 'abctest'}", "{'message': \"Required String parameter 'code' is not present\"}", "'反向用例2'" ]
} ],
"uid" : "b49081282bbdeccbaecbac49c8a47709"
} ],
"uid" : "84e2a996d50d25f6bdeb474242a027aa"
} ],
"uid" : "e910ba08e15c3fed7dc9b37fbb7f6731"
}, {
"name" : "BPM-张三",
"children" : [ {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "502af39bbc0eb293",
"parentUid" : "1c867e5735a2aeac081ed0a776ce36ad",
"status" : "passed",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
} ],
"uid" : "1c867e5735a2aeac081ed0a776ce36ad"
}, {
"name" : "设置默认维度",
"children" : [ {
"name" : "正向用例",
"uid" : "cdab123d9c9fba25",
"parentUid" : "67312d2ed99b13ee880bf9527aba5174",
"status" : "passed",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
} ],
"uid" : "67312d2ed99b13ee880bf9527aba5174"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "5b3730d8e95f6233",
"parentUid" : "dc4fa5c0f6328abcb7c1fc4677acee00",
"status" : "failed",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "dc4fa5c0f6328abcb7c1fc4677acee00"
} ],
"uid" : "e4cf6d9687091be2e0527f63d2fbd346"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "58f1f03c8574a0c7",
"parentUid" : "7b9add9319fbd3715876b1032dd82524",
"status" : "passed",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
} ],
"uid" : "7b9add9319fbd3715876b1032dd82524"
}, {
"name" : "保存组织参数",
"children" : [ {
"name" : "正向用例",
"uid" : "f63af686844853db",
"parentUid" : "8530e5440dff2ddf34a147a30153f5ed",
"status" : "passed",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
} ],
"uid" : "8530e5440dff2ddf34a147a30153f5ed"
}, {
"name" : "删除组织",
"children" : [ {
"name" : "正向用例",
"uid" : "100767a5aa17517f",
"parentUid" : "64e1efca50980ab13e689f8bc886d151",
"status" : "passed",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
} ],
"uid" : "64e1efca50980ab13e689f8bc886d151"
} ],
"uid" : "089098e7fdf9226a9d0bbb8ef37b2ed9"
} ],
"uid" : "190def5ec1bc096add1d6e9232694ef3"
} ]
}
\ No newline at end of file
"Category","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"Product defects","6","0","0","0","0"
{
"uid" : "4b4757e66a1912dae1a509f688f20b0f",
"name" : "categories",
"children" : [ {
"name" : "Product defects",
"children" : [ {
"name" : "AssertionError: 断言失败,描述失败的原因",
"children" : [ {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "e7926f135a161579",
"parentUid" : "01f104312821adc032c340c96e863b18",
"status" : "failed",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "c88599ffe3cee03a",
"parentUid" : "01f104312821adc032c340c96e863b18",
"status" : "failed",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4f90734493b69f6a",
"parentUid" : "01f104312821adc032c340c96e863b18",
"status" : "failed",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "d3ac3c518e93014f",
"parentUid" : "01f104312821adc032c340c96e863b18",
"status" : "failed",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "ae886fd8f02f449d",
"parentUid" : "01f104312821adc032c340c96e863b18",
"status" : "failed",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "01f104312821adc032c340c96e863b18"
}, {
"name" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}",
"children" : [ {
"name" : "正向用例",
"uid" : "5b3730d8e95f6233",
"parentUid" : "ecf659f89ca0fdc9e6a2b1f5d735a5cb",
"status" : "failed",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "ecf659f89ca0fdc9e6a2b1f5d735a5cb"
} ],
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d"
} ]
}
\ No newline at end of file
{
"uid" : "83edc06c07f9ae9e47eb6dd1b683e4e2",
"name" : "packages",
"children" : [ {
"name" : "test_case",
"children" : [ {
"name" : "test_basic.test_case",
"children" : [ {
"name" : "正向用例-用户名和密码正确",
"uid" : "e9d1d0a7dd41e9c3",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'正向用例-用户名和密码正确'", "'http://36.139.193.99:8088/auth'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为空-密码正确",
"uid" : "477b4db827f7f2a3",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为空-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过短-密码正确",
"uid" : "fcca678309d0ad16",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过短-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过长-密码正确",
"uid" : "c95022b8dd4a9ee2",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过长-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为特殊字符-密码正确",
"uid" : "44dc49f4c9fab8c8",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为特殊字符-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "e7926f135a161579",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "failed",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "c88599ffe3cee03a",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "failed",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4f90734493b69f6a",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "failed",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "d3ac3c518e93014f",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "failed",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "13f19f97163dfce8",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "dad13075f2ba67b4",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "9d2279f2826c38de",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "正向用例",
"uid" : "fc278e8ac67339bc",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "694b6ae8f815bc3e",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "passed",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "ae886fd8f02f449d",
"parentUid" : "304cb4d11947250e273692025b6b64cd",
"status" : "failed",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "test_basic.test_case"
}, {
"name" : "test_bpm_dependency.test_pytest_decorator",
"children" : [ {
"name" : "bpm-场景测试-登录-正向",
"uid" : "1525b51bfd3a328e",
"parentUid" : "f4c84a1862dfa4943125b332b8ba7afa",
"status" : "passed",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "bpm-场景测试-添加维度-正向",
"uid" : "1b6806facbba5b60",
"parentUid" : "f4c84a1862dfa4943125b332b8ba7afa",
"status" : "passed",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "正向用例",
"uid" : "8db57b79649e65c3",
"parentUid" : "f4c84a1862dfa4943125b332b8ba7afa",
"status" : "passed",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': '需要更新'}", "{'isDelete': '0'}", "'正向用例'" ]
}, {
"name" : "反向用例1",
"uid" : "cd6d851dc01bec9a",
"parentUid" : "f4c84a1862dfa4943125b332b8ba7afa",
"status" : "passed",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': ''}", "{'message': '必填:code维度编码必填!'}", "'反向用例1'" ]
}, {
"name" : "反向用例2",
"uid" : "12304b3944080174",
"parentUid" : "f4c84a1862dfa4943125b332b8ba7afa",
"status" : "passed",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'': 'abctest'}", "{'message': \"Required String parameter 'code' is not present\"}", "'反向用例2'" ]
} ],
"uid" : "test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "test_lao_zhang.test_case",
"children" : [ {
"name" : "正向用例",
"uid" : "502af39bbc0eb293",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "passed",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "cdab123d9c9fba25",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "passed",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "58f1f03c8574a0c7",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "passed",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "正向用例",
"uid" : "f63af686844853db",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "passed",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "100767a5aa17517f",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "passed",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "5b3730d8e95f6233",
"parentUid" : "96c478eb3787e05501dd57d6988e2681",
"status" : "failed",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "test_lao_zhang.test_case"
} ],
"uid" : "3b2e467b921b0ea8d4803b9c79d92d0c"
} ]
}
\ No newline at end of file
"Status","Start Time","Stop Time","Duration in ms","Parent Suite","Suite","Sub Suite","Test Class","Test Method","Name","Description"
"passed","Mon Jul 15 17:02:10 CST 2024","Mon Jul 15 17:02:10 CST 2024","47","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:10 CST 2024","Mon Jul 15 17:02:10 CST 2024","34","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","18","test_case.test_bpm_dependency","test_pytest_decorator","TestBPM","","","反向用例2",""
"passed","Mon Jul 15 17:01:52 CST 2024","Mon Jul 15 17:01:52 CST 2024","212","test_case.test_basic","test_case","TestBPM","","","正向用例-用户名和密码正确",""
"passed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","45","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"failed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","51","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:01:53 CST 2024","Mon Jul 15 17:01:53 CST 2024","34","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名为特殊字符-密码正确",""
"passed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","40","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"failed","Mon Jul 15 17:01:56 CST 2024","Mon Jul 15 17:01:56 CST 2024","31","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名正确-密码为空",""
"passed","Mon Jul 15 17:01:52 CST 2024","Mon Jul 15 17:01:52 CST 2024","53","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名过短-密码正确",""
"failed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","30","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","40","test_case.test_bpm_dependency","test_pytest_decorator","TestBPM","","","bpm-场景测试-添加维度-正向",""
"passed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","25","test_case.test_bpm_dependency","test_pytest_decorator","TestBPM","","","正向用例",""
"failed","Mon Jul 15 17:01:59 CST 2024","Mon Jul 15 17:01:59 CST 2024","31","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名正确-密码过长",""
"passed","Mon Jul 15 17:02:10 CST 2024","Mon Jul 15 17:02:10 CST 2024","53","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","43","test_case.test_bpm_dependency","test_pytest_decorator","TestBPM","","","bpm-场景测试-登录-正向",""
"passed","Mon Jul 15 17:02:10 CST 2024","Mon Jul 15 17:02:10 CST 2024","35","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:10 CST 2024","Mon Jul 15 17:02:10 CST 2024","35","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","33","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"failed","Mon Jul 15 17:02:02 CST 2024","Mon Jul 15 17:02:02 CST 2024","32","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名正确-密码过短",""
"passed","Mon Jul 15 17:02:09 CST 2024","Mon Jul 15 17:02:09 CST 2024","23","test_case.test_bpm_dependency","test_pytest_decorator","TestBPM","","","反向用例1",""
"passed","Mon Jul 15 17:01:52 CST 2024","Mon Jul 15 17:01:52 CST 2024","183","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名为空-密码正确",""
"passed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","68","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"passed","Mon Jul 15 17:01:52 CST 2024","Mon Jul 15 17:01:52 CST 2024","36","test_case.test_basic","test_case","TestBPM","","","反向用例-用户名过长-密码正确",""
"passed","Mon Jul 15 17:02:06 CST 2024","Mon Jul 15 17:02:06 CST 2024","41","test_case.test_basic","test_case","TestBPM","","","正向用例",""
"failed","Mon Jul 15 17:02:13 CST 2024","Mon Jul 15 17:02:13 CST 2024","30","test_case.test_lao_zhang","test_case","TestBPM","","","正向用例",""
{
"uid" : "98d3104e051c652961429bf95fa0b5d6",
"name" : "suites",
"children" : [ {
"name" : "test_case.test_basic",
"children" : [ {
"name" : "test_case",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例-用户名和密码正确",
"uid" : "e9d1d0a7dd41e9c3",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'正向用例-用户名和密码正确'", "'http://36.139.193.99:8088/auth'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为空-密码正确",
"uid" : "477b4db827f7f2a3",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为空-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过短-密码正确",
"uid" : "fcca678309d0ad16",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过短-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名过长-密码正确",
"uid" : "c95022b8dd4a9ee2",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过长-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为特殊字符-密码正确",
"uid" : "44dc49f4c9fab8c8",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为特殊字符-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "e7926f135a161579",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "failed",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "c88599ffe3cee03a",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "failed",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4f90734493b69f6a",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "failed",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "d3ac3c518e93014f",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "failed",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "13f19f97163dfce8",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "dad13075f2ba67b4",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "9d2279f2826c38de",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "正向用例",
"uid" : "fc278e8ac67339bc",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "694b6ae8f815bc3e",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "passed",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "ae886fd8f02f449d",
"parentUid" : "ee030a43b1e728d770eb1c77b9142943",
"status" : "failed",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "ee030a43b1e728d770eb1c77b9142943"
} ],
"uid" : "4e71032b69da49fa4dc153f5a1fef586"
} ],
"uid" : "d6c27516cfb7fd4d4410f19a31d4e57b"
}, {
"name" : "test_case.test_bpm_dependency",
"children" : [ {
"name" : "test_pytest_decorator",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "bpm-场景测试-登录-正向",
"uid" : "1525b51bfd3a328e",
"parentUid" : "54d5e14af6886e7a3e2cd203cbf268ce",
"status" : "passed",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "bpm-场景测试-添加维度-正向",
"uid" : "1b6806facbba5b60",
"parentUid" : "54d5e14af6886e7a3e2cd203cbf268ce",
"status" : "passed",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "正向用例",
"uid" : "8db57b79649e65c3",
"parentUid" : "54d5e14af6886e7a3e2cd203cbf268ce",
"status" : "passed",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': '需要更新'}", "{'isDelete': '0'}", "'正向用例'" ]
}, {
"name" : "反向用例1",
"uid" : "cd6d851dc01bec9a",
"parentUid" : "54d5e14af6886e7a3e2cd203cbf268ce",
"status" : "passed",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': ''}", "{'message': '必填:code维度编码必填!'}", "'反向用例1'" ]
}, {
"name" : "反向用例2",
"uid" : "12304b3944080174",
"parentUid" : "54d5e14af6886e7a3e2cd203cbf268ce",
"status" : "passed",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'': 'abctest'}", "{'message': \"Required String parameter 'code' is not present\"}", "'反向用例2'" ]
} ],
"uid" : "54d5e14af6886e7a3e2cd203cbf268ce"
} ],
"uid" : "ebf0d047a75eb0c8f26e5a25fee8dd40"
} ],
"uid" : "727cdc55e0284d10bada9eae3e5356f7"
}, {
"name" : "test_case.test_lao_zhang",
"children" : [ {
"name" : "test_case",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例",
"uid" : "502af39bbc0eb293",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "passed",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "cdab123d9c9fba25",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "passed",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "58f1f03c8574a0c7",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "passed",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "正向用例",
"uid" : "f63af686844853db",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "passed",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "100767a5aa17517f",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "passed",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "5b3730d8e95f6233",
"parentUid" : "9de6ed16dab2b07fc49b7387ee031fc5",
"status" : "failed",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "9de6ed16dab2b07fc49b7387ee031fc5"
} ],
"uid" : "480ba742f14b6fd962bc5cb59e738f43"
} ],
"uid" : "f807542b498ef7f359918df354af54f0"
} ]
}
\ No newline at end of file
{
"uid" : "100767a5aa17517f",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "d62e434428362512a9058f68faafe2f2",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d1f7b9231cbd37a8",
"name" : "log",
"source" : "d1f7b9231cbd37a8.txt",
"type" : "text/plain",
"size" : 352
}, {
"uid" : "18f3d385cc696857",
"name" : "stdout",
"source" : "18f3d385cc696857.txt",
"type" : "text/plain",
"size" : 221
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'test_org'"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'form'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "100767a5aa17517f.json",
"parameterValues" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "12304b3944080174",
"name" : "反向用例2",
"fullName" : "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg",
"historyId" : "b4daa31cff4b552b412448af5e4ed813",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "fd03366981b494eb",
"name" : "log",
"source" : "fd03366981b494eb.txt",
"type" : "text/plain",
"size" : 531
}, {
"uid" : "edecad3dc7aecd35",
"name" : "stdout",
"source" : "edecad3dc7aecd35.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "epic",
"value" : "bpm-场景测试"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestBPM::test_add_dem'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_bpm_dependency"
}, {
"name" : "suite",
"value" : "test_pytest_decorator"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "case_data",
"value" : "{'': 'abctest'}"
}, {
"name" : "expect_data",
"value" : "{'message': \"Required String parameter 'code' is not present\"}"
}, {
"name" : "title",
"value" : "'反向用例2'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['TestBPM::test_add_dem'])" ]
},
"source" : "12304b3944080174.json",
"parameterValues" : [ "{'': 'abctest'}", "{'message': \"Required String parameter 'code' is not present\"}", "'反向用例2'" ]
}
\ No newline at end of file
{
"uid" : "13f19f97163dfce8",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "ccc47dd491dda4f012668830aede7239",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "baac92174e78650a",
"name" : "log",
"source" : "baac92174e78650a.txt",
"type" : "text/plain",
"size" : 351
}, {
"uid" : "b2b30f9b7b5f6398",
"name" : "stdout",
"source" : "b2b30f9b7b5f6398.txt",
"type" : "text/plain",
"size" : 359
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "13f19f97163dfce8.json",
"parameterValues" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}
\ No newline at end of file
{
"uid" : "1525b51bfd3a328e",
"name" : "bpm-场景测试-登录-正向",
"fullName" : "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_login",
"historyId" : "4569b0471702313459c9b42c94979bb4",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "690600660d4fb6f6",
"name" : "log",
"source" : "690600660d4fb6f6.txt",
"type" : "text/plain",
"size" : 234
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 1,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "epic",
"value" : "bpm-场景测试"
}, {
"name" : "tag",
"value" : "dependency"
}, {
"name" : "parentSuite",
"value" : "test_case.test_bpm_dependency"
}, {
"name" : "suite",
"value" : "test_pytest_decorator"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency" ]
},
"source" : "1525b51bfd3a328e.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "1b6806facbba5b60",
"name" : "bpm-场景测试-添加维度-正向",
"fullName" : "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_add_dem",
"historyId" : "128da70acc78e495205cae38c86a3095",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "be4ca175ae05bbad",
"name" : "log",
"source" : "be4ca175ae05bbad.txt",
"type" : "text/plain",
"size" : 466
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 1,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "epic",
"value" : "bpm-场景测试"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestBPM::test_login'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_bpm_dependency"
}, {
"name" : "suite",
"value" : "test_pytest_decorator"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['TestBPM::test_login'])" ]
},
"source" : "1b6806facbba5b60.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "1eb560ed729702f2",
"name" : "反向用例-用户名正确-密码为空",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "f640363898931f48a2631389cf661c1a",
"time" : {
"start" : 1721034115319,
"stop" : 1721034115349,
"duration" : 30
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "763952a6cb1a8dcc",
"name" : "log",
"source" : "763952a6cb1a8dcc.txt",
"type" : "text/plain",
"size" : 2120
}, {
"uid" : "627a8cfc617a53ff",
"name" : "stdout",
"source" : "627a8cfc617a53ff.txt",
"type" : "text/plain",
"size" : 786
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码为空'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "1eb560ed729702f2.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "26c9ca60fb098112",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "0726b7ece66163239f4822447c1bd114",
"time" : {
"start" : 1721034125119,
"stop" : 1721034125148,
"duration" : 29
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C91540>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C91540> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C91540>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C91540> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDA2Nn0.O71lxRuP6glaAHga1e0g1AJTKF5L4Br7MyPPIoPsvitu6qU-NpX1ezBtzicieQOlecLieXh8KZwGZOvPgc9xPg', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "9aad91a489e2f358",
"name" : "log",
"source" : "9aad91a489e2f358.txt",
"type" : "text/plain",
"size" : 1805
}, {
"uid" : "a16ff0e0ee232b86",
"name" : "stdout",
"source" : "a16ff0e0ee232b86.txt",
"type" : "text/plain",
"size" : 1158
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_method",
"value" : "'GET'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "26c9ca60fb098112.json",
"parameterValues" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "2702778b03b3ff5b",
"name" : "反向用例-用户名正确-密码过短",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "423b926d9c9c8e8a56af3847b1819589",
"time" : {
"start" : 1721034119679,
"stop" : 1721034119719,
"duration" : 40
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7B5C1C0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7B5C1C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...EsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...EsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7B5C1C0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7B5C1C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...EsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...EsImlhdCI6MTcyMTAzNDA2MX0.e3KNfX4AN2jfxAPmepY3RWbnM3B0bz-aag7amH4m3xoYYf-wgO8oer2HL-uKpAcbXnt_hDftWGJrNlErbDdGHQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "f4576185b08c9b72",
"name" : "log",
"source" : "f4576185b08c9b72.txt",
"type" : "text/plain",
"size" : 706
}, {
"uid" : "8e24fe8f78c80dd2",
"name" : "stdout",
"source" : "8e24fe8f78c80dd2.txt",
"type" : "text/plain",
"size" : 851
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过短'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "2702778b03b3ff5b.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "44dc49f4c9fab8c8",
"name" : "反向用例-用户名为特殊字符-密码正确",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "84712d074d431df54c5e53fe70699f96",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "57730049d86d0460",
"name" : "log",
"source" : "57730049d86d0460.txt",
"type" : "text/plain",
"size" : 435
}, {
"uid" : "60ac92369ba9ac6d",
"name" : "stdout",
"source" : "60ac92369ba9ac6d.txt",
"type" : "text/plain",
"size" : 480
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名为特殊字符-密码正确'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "44dc49f4c9fab8c8.json",
"parameterValues" : [ "'登录系统'", "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为特殊字符-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "477b4db827f7f2a3",
"name" : "反向用例-用户名为空-密码正确",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "4a35e629ced594be4e64e255839f5624",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "cea049c5b8dac442",
"name" : "log",
"source" : "cea049c5b8dac442.txt",
"type" : "text/plain",
"size" : 328
}, {
"uid" : "b86c8ad98b2e4f39",
"name" : "stdout",
"source" : "b86c8ad98b2e4f39.txt",
"type" : "text/plain",
"size" : 454
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名为空-密码正确'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "477b4db827f7f2a3.json",
"parameterValues" : [ "'登录系统'", "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为空-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "4b2482ad02a7bda",
"name" : "反向用例-用户名正确-密码过长",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "63bcb2c305b7f0bcb7fd2d55d671e0a6",
"time" : {
"start" : 1721034117490,
"stop" : 1721034117527,
"duration" : 37
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "814430bee6a43adf",
"name" : "log",
"source" : "814430bee6a43adf.txt",
"type" : "text/plain",
"size" : 1413
}, {
"uid" : "a17325ddba6226c5",
"name" : "stdout",
"source" : "a17325ddba6226c5.txt",
"type" : "text/plain",
"size" : 526
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '1'}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过长'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "4b2482ad02a7bda.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "4ee8b1cf26c2c9af",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "0726b7ece66163239f4822447c1bd114",
"time" : {
"start" : 1721034124051,
"stop" : 1721034124079,
"duration" : 28
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C84400>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C84400> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C84400>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C84400> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDA2NX0.kfNNwQcbZXe6xwYYpYa0pZVt7q3amzm1bMjMr-q9IaHf1eYHoxqndAJNbjp13Qq83lVES-8dVfh-MQay_UxoXw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "515c5d2971e3fef4",
"name" : "log",
"source" : "515c5d2971e3fef4.txt",
"type" : "text/plain",
"size" : 1203
}, {
"uid" : "9a08fbaa58b9da94",
"name" : "stdout",
"source" : "9a08fbaa58b9da94.txt",
"type" : "text/plain",
"size" : 772
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_method",
"value" : "'GET'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "4ee8b1cf26c2c9af.json",
"parameterValues" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "4f90734493b69f6a",
"name" : "反向用例-用户名正确-密码过短",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "423b926d9c9c8e8a56af3847b1819589",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C54E40>('state')\nE + where <built-in method get of dict object at 0x0000019CA7C54E40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C54E40>('state')\nE + where <built-in method get of dict object at 0x0000019CA7C54E40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "d7470c5016fe281",
"name" : "log",
"source" : "d7470c5016fe281.txt",
"type" : "text/plain",
"size" : 2506
}, {
"uid" : "d237b9611b705cb6",
"name" : "stdout",
"source" : "d237b9611b705cb6.txt",
"type" : "text/plain",
"size" : 3404
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过短'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "606d20c8602cc715",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034121858,
"stop" : 1721034121903,
"duration" : 45
}
}, {
"uid" : "afa12de4d60111dc",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034120746,
"stop" : 1721034120831,
"duration" : 85
}
}, {
"uid" : "2702778b03b3ff5b",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034119679,
"stop" : 1721034119719,
"duration" : 40
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "4f90734493b69f6a.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "502af39bbc0eb293",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "66a9541ee6ddd173bc3735e2e4285b95",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "fcb4e3ca5163ca65",
"name" : "log",
"source" : "fcb4e3ca5163ca65.txt",
"type" : "text/plain",
"size" : 590
}, {
"uid" : "785bfd1ce3c97cac",
"name" : "stdout",
"source" : "785bfd1ce3c97cac.txt",
"type" : "text/plain",
"size" : 359
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "502af39bbc0eb293.json",
"parameterValues" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}
\ No newline at end of file
{
"uid" : "537219fa86b37585",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "dc258464863d86ec8c9a3ad69f4590ee",
"time" : {
"start" : 1721034130264,
"stop" : 1721034130292,
"duration" : 28
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "a99c843e07d06be1",
"name" : "log",
"source" : "a99c843e07d06be1.txt",
"type" : "text/plain",
"size" : 845
}, {
"uid" : "90176ccc686867f",
"name" : "stdout",
"source" : "90176ccc686867f.txt",
"type" : "text/plain",
"size" : 278
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '需要更新'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "537219fa86b37585.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "58f1f03c8574a0c7",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "1ee398667c230590007adb47d61adfee",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "4b3316f38bd9830b",
"name" : "log",
"source" : "4b3316f38bd9830b.txt",
"type" : "text/plain",
"size" : 349
}, {
"uid" : "4b293c682802684c",
"name" : "stdout",
"source" : "4b293c682802684c.txt",
"type" : "text/plain",
"size" : 495
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加组织成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "update_key",
"value" : "'demId'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "58f1f03c8574a0c7.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}
\ No newline at end of file
{
"uid" : "5b3730d8e95f6233",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "dc258464863d86ec8c9a3ad69f4590ee",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "372664956fe8aad",
"name" : "log",
"source" : "372664956fe8aad.txt",
"type" : "text/plain",
"size" : 3594
}, {
"uid" : "ba9a1702c8904f49",
"name" : "stdout",
"source" : "ba9a1702c8904f49.txt",
"type" : "text/plain",
"size" : 1130
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774401151180800'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "fda02d0624d9475f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774411037155328\"}",
"time" : {
"start" : 1721034132369,
"stop" : 1721034132397,
"duration" : 28
}
}, {
"uid" : "7cf626025a8708b4",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774406603776000\"}",
"time" : {
"start" : 1721034131318,
"stop" : 1721034131341,
"duration" : 23
}
}, {
"uid" : "537219fa86b37585",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}",
"time" : {
"start" : 1721034130264,
"stop" : 1721034130292,
"duration" : 28
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "5b3730d8e95f6233.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "606d20c8602cc715",
"name" : "反向用例-用户名正确-密码过短",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "423b926d9c9c8e8a56af3847b1819589",
"time" : {
"start" : 1721034121858,
"stop" : 1721034121903,
"duration" : 45
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C66DC0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7C66DC0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C66DC0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7C66DC0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDA2M30.aeFMFItlVrgPOpp05-HBjDuYPixfkDS6EAp_X4hETINjS2yuN8JYEFCG4lsQLCyNWQ0tYP7iX8qSjViDL8I6TA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "971e9f23b0b2476b",
"name" : "log",
"source" : "971e9f23b0b2476b.txt",
"type" : "text/plain",
"size" : 1906
}, {
"uid" : "31c6b695a649e8a6",
"name" : "stdout",
"source" : "31c6b695a649e8a6.txt",
"type" : "text/plain",
"size" : 2553
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过短'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "606d20c8602cc715.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "633d3d33f938e24b",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "0726b7ece66163239f4822447c1bd114",
"time" : {
"start" : 1721034122995,
"stop" : 1721034123018,
"duration" : 23
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C66E80>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C66E80> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C66E80>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C66E80> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDA2NH0.335tiaLWB02xaEGtn5hp_3mLfG4F7Ihw5STnS-SeF8Xex7IRs2N5Zo47MWIDvUTHu2lbWlpHzZ3YoShyBpWmLw', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "15175a61c64fa08",
"name" : "log",
"source" : "15175a61c64fa08.txt",
"type" : "text/plain",
"size" : 601
}, {
"uid" : "10cf675dce86c5cc",
"name" : "stdout",
"source" : "10cf675dce86c5cc.txt",
"type" : "text/plain",
"size" : 386
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_method",
"value" : "'GET'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "633d3d33f938e24b.json",
"parameterValues" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "694b6ae8f815bc3e",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "817beae3f290f38d2fbd5f74a7b72a55",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "71c5b077e41a283a",
"name" : "log",
"source" : "71c5b077e41a283a.txt",
"type" : "text/plain",
"size" : 348
}, {
"uid" : "22724edcac8f7ce",
"name" : "stdout",
"source" : "22724edcac8f7ce.txt",
"type" : "text/plain",
"size" : 221
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'test_org'"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'form'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "694b6ae8f815bc3e.json",
"parameterValues" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "6a97db949aeeaadf",
"name" : "反向用例-用户名正确-密码为空",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "f640363898931f48a2631389cf661c1a",
"time" : {
"start" : 1721034114251,
"stop" : 1721034114282,
"duration" : 31
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "511e8be9eea89922",
"name" : "log",
"source" : "511e8be9eea89922.txt",
"type" : "text/plain",
"size" : 1413
}, {
"uid" : "fbba15b1b0d5d850",
"name" : "stdout",
"source" : "fbba15b1b0d5d850.txt",
"type" : "text/plain",
"size" : 524
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码为空'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "6a97db949aeeaadf.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "75c1c0d0f501f5b5",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "d453bc5e72a32f4b8e605532565781e9",
"time" : {
"start" : 1721034128623,
"stop" : 1721034128655,
"duration" : 32
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "c317c57b8a92e70c",
"name" : "log",
"source" : "c317c57b8a92e70c.txt",
"type" : "text/plain",
"size" : 2077
}, {
"uid" : "3a7ec1b3bc7e233e",
"name" : "stdout",
"source" : "3a7ec1b3bc7e233e.txt",
"type" : "text/plain",
"size" : 846
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774385271545856'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "75c1c0d0f501f5b5.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "76ec346b0006e018",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "d453bc5e72a32f4b8e605532565781e9",
"time" : {
"start" : 1721034127570,
"stop" : 1721034127594,
"duration" : 24
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "c859d8ab849992ea",
"name" : "log",
"source" : "c859d8ab849992ea.txt",
"type" : "text/plain",
"size" : 1313
}, {
"uid" : "c32cd9d3aedf9452",
"name" : "stdout",
"source" : "c32cd9d3aedf9452.txt",
"type" : "text/plain",
"size" : 562
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774385271545856'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "76ec346b0006e018.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "7cf626025a8708b4",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "dc258464863d86ec8c9a3ad69f4590ee",
"time" : {
"start" : 1721034131318,
"stop" : 1721034131341,
"duration" : 23
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774406603776000\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774406603776000\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774406603776000\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774406603776000\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "edab866d38bb856e",
"name" : "log",
"source" : "edab866d38bb856e.txt",
"type" : "text/plain",
"size" : 1690
}, {
"uid" : "1c13fb2c92c29ccf",
"name" : "stdout",
"source" : "1c13fb2c92c29ccf.txt",
"type" : "text/plain",
"size" : 562
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774401151180800'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "7cf626025a8708b4.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "8db57b79649e65c3",
"name" : "正向用例",
"fullName" : "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg",
"historyId" : "a74acbda061b937902db30e301248837",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "299a578f821f0c0e",
"name" : "log",
"source" : "299a578f821f0c0e.txt",
"type" : "text/plain",
"size" : 539
}, {
"uid" : "310158f48db60bae",
"name" : "stdout",
"source" : "310158f48db60bae.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "epic",
"value" : "bpm-场景测试"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestBPM::test_add_dem'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_bpm_dependency"
}, {
"name" : "suite",
"value" : "test_pytest_decorator"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "case_data",
"value" : "{'code': '需要更新'}"
}, {
"name" : "expect_data",
"value" : "{'isDelete': '0'}"
}, {
"name" : "title",
"value" : "'正向用例'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['TestBPM::test_add_dem'])" ]
},
"source" : "8db57b79649e65c3.json",
"parameterValues" : [ "{'code': '需要更新'}", "{'isDelete': '0'}", "'正向用例'" ]
}
\ No newline at end of file
{
"uid" : "98a7402b119e1d5d",
"name" : "反向用例-用户名正确-密码为空",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "f640363898931f48a2631389cf661c1a",
"time" : {
"start" : 1721034113044,
"stop" : 1721034113077,
"duration" : 33
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "bd8de14613bca62e",
"name" : "log",
"source" : "bd8de14613bca62e.txt",
"type" : "text/plain",
"size" : 706
}, {
"uid" : "c17e90665e43d2d6",
"name" : "stdout",
"source" : "c17e90665e43d2d6.txt",
"type" : "text/plain",
"size" : 262
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码为空'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "98a7402b119e1d5d.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "9d2279f2826c38de",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "954d05acb58e7681d3d33149248b091d",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d6bf6712a2768a96",
"name" : "log",
"source" : "d6bf6712a2768a96.txt",
"type" : "text/plain",
"size" : 345
}, {
"uid" : "95a24bc4cc404e8",
"name" : "stdout",
"source" : "95a24bc4cc404e8.txt",
"type" : "text/plain",
"size" : 495
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加组织成功!'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "update_key",
"value" : "'demId'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "9d2279f2826c38de.json",
"parameterValues" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}
\ No newline at end of file
{
"uid" : "a82f3b510da85cfb",
"name" : "反向用例-用户名正确-密码过长",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "63bcb2c305b7f0bcb7fd2d55d671e0a6",
"time" : {
"start" : 1721034116432,
"stop" : 1721034116462,
"duration" : 30
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "9640e8bb52944975",
"name" : "log",
"source" : "9640e8bb52944975.txt",
"type" : "text/plain",
"size" : 706
}, {
"uid" : "d88ebf7e9247d469",
"name" : "stdout",
"source" : "d88ebf7e9247d469.txt",
"type" : "text/plain",
"size" : 263
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '1'}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过长'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "a82f3b510da85cfb.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "ae886fd8f02f449d",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "d453bc5e72a32f4b8e605532565781e9",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "c19655f18863d85f",
"name" : "log",
"source" : "c19655f18863d85f.txt",
"type" : "text/plain",
"size" : 2841
}, {
"uid" : "76ab02d71c53e49a",
"name" : "stdout",
"source" : "76ab02d71c53e49a.txt",
"type" : "text/plain",
"size" : 1130
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774385271545856'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "75c1c0d0f501f5b5",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034128623,
"stop" : 1721034128655,
"duration" : 32
}
}, {
"uid" : "76ec346b0006e018",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034127570,
"stop" : 1721034127594,
"duration" : 24
}
}, {
"uid" : "e56848c826747f0c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034126508,
"stop" : 1721034126539,
"duration" : 31
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "ae886fd8f02f449d.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "afa12de4d60111dc",
"name" : "反向用例-用户名正确-密码过短",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "423b926d9c9c8e8a56af3847b1819589",
"time" : {
"start" : 1721034120746,
"stop" : 1721034120831,
"duration" : 85
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7B147C0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7B147C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x0000019CA7B147C0>('state')\nE + where <built-in method get of dict object at 0x0000019CA7B147C0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDA2Mn0.GRH4JZts93pgf8nB_eU48JCfarD-T47aBURZmQUrTAVNuiRtmyPhmVxfBnCWzzvF1hPbx_ymueHRQgDgHSB9AA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42820>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "8dbf53fae641a081",
"name" : "log",
"source" : "8dbf53fae641a081.txt",
"type" : "text/plain",
"size" : 1306
}, {
"uid" : "a10dc1276905de94",
"name" : "stdout",
"source" : "a10dc1276905de94.txt",
"type" : "text/plain",
"size" : 1702
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过短'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "afa12de4d60111dc.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "c88599ffe3cee03a",
"name" : "反向用例-用户名正确-密码过长",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "63bcb2c305b7f0bcb7fd2d55d671e0a6",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "71865e35202b0fab",
"name" : "log",
"source" : "71865e35202b0fab.txt",
"type" : "text/plain",
"size" : 2827
}, {
"uid" : "385cf9968ca60b6f",
"name" : "stdout",
"source" : "385cf9968ca60b6f.txt",
"type" : "text/plain",
"size" : 1052
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '1'}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过长'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "ca9633dc69f0c436",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034118561,
"stop" : 1721034118594,
"duration" : 33
}
}, {
"uid" : "4b2482ad02a7bda",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034117490,
"stop" : 1721034117527,
"duration" : 37
}
}, {
"uid" : "a82f3b510da85cfb",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034116432,
"stop" : 1721034116462,
"duration" : 30
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "c88599ffe3cee03a.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "c95022b8dd4a9ee2",
"name" : "反向用例-用户名过长-密码正确",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "6a5ad61f25e888eed5239bf5b93834c2",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "e50868acc6d05c67",
"name" : "log",
"source" : "e50868acc6d05c67.txt",
"type" : "text/plain",
"size" : 435
}, {
"uid" : "42789d1a5e74ab59",
"name" : "stdout",
"source" : "42789d1a5e74ab59.txt",
"type" : "text/plain",
"size" : 564
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名过长-密码正确'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "c95022b8dd4a9ee2.json",
"parameterValues" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过长-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "ca9633dc69f0c436",
"name" : "反向用例-用户名正确-密码过长",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "63bcb2c305b7f0bcb7fd2d55d671e0a6",
"time" : {
"start" : 1721034118561,
"stop" : 1721034118594,
"duration" : 33
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42760>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "74d2d3442dfc5c5e",
"name" : "log",
"source" : "74d2d3442dfc5c5e.txt",
"type" : "text/plain",
"size" : 2120
}, {
"uid" : "e8d9fedacc725785",
"name" : "stdout",
"source" : "e8d9fedacc725785.txt",
"type" : "text/plain",
"size" : 789
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '1'}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码过长'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "ca9633dc69f0c436.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "cd6d851dc01bec9a",
"name" : "反向用例1",
"fullName" : "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg",
"historyId" : "8b5c6ab7c7d5d427ca8434dcfe2f2220",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "a93367f41876bfe4",
"name" : "log",
"source" : "a93367f41876bfe4.txt",
"type" : "text/plain",
"size" : 528
}, {
"uid" : "111b6b3dd1b2e18f",
"name" : "stdout",
"source" : "111b6b3dd1b2e18f.txt",
"type" : "text/plain",
"size" : 13
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "epic",
"value" : "bpm-场景测试"
}, {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "tag",
"value" : "dependency(depends=['TestBPM::test_add_dem'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_bpm_dependency"
}, {
"name" : "suite",
"value" : "test_pytest_decorator"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_bpm_dependency.test_pytest_decorator"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "case_data",
"value" : "{'code': ''}"
}, {
"name" : "expect_data",
"value" : "{'message': '必填:code维度编码必填!'}"
}, {
"name" : "title",
"value" : "'反向用例1'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['TestBPM::test_add_dem'])" ]
},
"source" : "cd6d851dc01bec9a.json",
"parameterValues" : [ "{'code': ''}", "{'message': '必填:code维度编码必填!'}", "'反向用例1'" ]
}
\ No newline at end of file
{
"uid" : "cdab123d9c9fba25",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "56957926302f06b75969c6b498f201d0",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "a1ae6a1a4f362704",
"name" : "log",
"source" : "a1ae6a1a4f362704.txt",
"type" : "text/plain",
"size" : 383
}, {
"uid" : "928db6b18326726b",
"name" : "stdout",
"source" : "928db6b18326726b.txt",
"type" : "text/plain",
"size" : 248
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "设置默认维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'设置默认维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_dem_xyz_123'}"
}, {
"name" : "case_method",
"value" : "'PUT'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"
}, {
"name" : "expect_data",
"value" : "{'message': '设置默认维度成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "cdab123d9c9fba25.json",
"parameterValues" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "d3ac3c518e93014f",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "0726b7ece66163239f4822447c1bd114",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C84F40>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C84F40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDA2N30.TPvV0Wz7XafXJtoYSIMo0gqMM0_QkDhlbRLEA-v2yTupQ2KP8lR1vtPB4KPDS2SoZuZPGrt_JBg2S07qba10Rg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDA2N30.TPvV0Wz7XafXJtoYSIMo0gqMM0_QkDhlbRLEA-v2yTupQ2KP8lR1vtPB4KPDS2SoZuZPGrt_JBg2S07qba10Rg', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x0000019CA7C84F40>('message')\nE + where <built-in method get of dict object at 0x0000019CA7C84F40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDA2N30.TPvV0Wz7XafXJtoYSIMo0gqMM0_QkDhlbRLEA-v2yTupQ2KP8lR1vtPB4KPDS2SoZuZPGrt_JBg2S07qba10Rg', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDA2N30.TPvV0Wz7XafXJtoYSIMo0gqMM0_QkDhlbRLEA-v2yTupQ2KP8lR1vtPB4KPDS2SoZuZPGrt_JBg2S07qba10Rg', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B428E0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "e6b31e6afff7caa4",
"name" : "log",
"source" : "e6b31e6afff7caa4.txt",
"type" : "text/plain",
"size" : 2407
}, {
"uid" : "d3723286960159e0",
"name" : "stdout",
"source" : "d3723286960159e0.txt",
"type" : "text/plain",
"size" : 1544
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "刷新token"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_method",
"value" : "'GET'"
}, {
"name" : "case_mime",
"value" : "None"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/refresh'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新成功'}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "26c9ca60fb098112",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034125119,
"stop" : 1721034125148,
"duration" : 29
}
}, {
"uid" : "4ee8b1cf26c2c9af",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034124051,
"stop" : 1721034124079,
"duration" : 28
}
}, {
"uid" : "633d3d33f938e24b",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034122995,
"stop" : 1721034123018,
"duration" : 23
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "d3ac3c518e93014f.json",
"parameterValues" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "dad13075f2ba67b4",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "ab9675ee712bd87eed823fadbd2abe6a",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2d98df7b39aa813f",
"name" : "log",
"source" : "2d98df7b39aa813f.txt",
"type" : "text/plain",
"size" : 379
}, {
"uid" : "cbc329a0537ed378",
"name" : "stdout",
"source" : "cbc329a0537ed378.txt",
"type" : "text/plain",
"size" : 248
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "设置默认维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'设置默认维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'test_dem_xyz_123'}"
}, {
"name" : "case_method",
"value" : "'PUT'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"
}, {
"name" : "expect_data",
"value" : "{'message': '设置默认维度成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "dad13075f2ba67b4.json",
"parameterValues" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "e56848c826747f0c",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "d453bc5e72a32f4b8e605532565781e9",
"time" : {
"start" : 1721034126508,
"stop" : 1721034126539,
"duration" : 31
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B42D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774385271545856'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "8760892bbbc15516",
"name" : "log",
"source" : "8760892bbbc15516.txt",
"type" : "text/plain",
"size" : 656
}, {
"uid" : "80e879b4bd314109",
"name" : "stdout",
"source" : "80e879b4bd314109.txt",
"type" : "text/plain",
"size" : 278
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '需要更新'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "e56848c826747f0c.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "e7926f135a161579",
"name" : "反向用例-用户名正确-密码为空",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "f640363898931f48a2631389cf661c1a",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败,描述失败的原因",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x0000019CA7B421F0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7AF7850>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7B49820>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "6886f948eff86f66",
"name" : "log",
"source" : "6886f948eff86f66.txt",
"type" : "text/plain",
"size" : 2827
}, {
"uid" : "6f6f138f8577cbd7",
"name" : "stdout",
"source" : "6f6f138f8577cbd7.txt",
"type" : "text/plain",
"size" : 1048
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名正确-密码为空'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ {
"uid" : "1eb560ed729702f2",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034115319,
"stop" : 1721034115349,
"duration" : 30
}
}, {
"uid" : "6a97db949aeeaadf",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034114251,
"stop" : 1721034114282,
"duration" : 31
}
}, {
"uid" : "98a7402b119e1d5d",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034113044,
"stop" : 1721034113077,
"duration" : 33
}
} ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "e7926f135a161579.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "e9d1d0a7dd41e9c3",
"name" : "正向用例-用户名和密码正确",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "81b63d12303454254c2f6e7bbd67d858",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "e8f31d7be4ba8527",
"name" : "log",
"source" : "e8f31d7be4ba8527.txt",
"type" : "text/plain",
"size" : 563
}, {
"uid" : "45387f48e7db2afd",
"name" : "stdout",
"source" : "45387f48e7db2afd.txt",
"type" : "text/plain",
"size" : 715
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'正向用例-用户名和密码正确'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}"
}, {
"name" : "level",
"value" : "'高'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "e9d1d0a7dd41e9c3.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'正向用例-用户名和密码正确'", "'http://36.139.193.99:8088/auth'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}", "'高'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "f63af686844853db",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "a846fa27705c7e18d3cf0d1b13ce62eb",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "2df9d92b53b77312",
"name" : "log",
"source" : "2df9d92b53b77312.txt",
"type" : "text/plain",
"size" : 378
}, {
"uid" : "82dbefde1a29bdbe",
"name" : "stdout",
"source" : "82dbefde1a29bdbe.txt",
"type" : "text/plain",
"size" : 317
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "保存组织参数"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'保存组织参数'"
}, {
"name" : "case_data",
"value" : "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'query|json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "f63af686844853db.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "fc278e8ac67339bc",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "764d3ad32e20031839427f75fe32737a",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "76714d5a52c58cdf",
"name" : "log",
"source" : "76714d5a52c58cdf.txt",
"type" : "text/plain",
"size" : 374
}, {
"uid" : "b2db52726eac1642",
"name" : "stdout",
"source" : "b2db52726eac1642.txt",
"type" : "text/plain",
"size" : 317
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "保存组织参数"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'保存组织参数'"
}, {
"name" : "case_data",
"value" : "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}"
}, {
"name" : "case_method",
"value" : "'post'"
}, {
"name" : "case_mime",
"value" : "'query|json'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "fc278e8ac67339bc.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "fcca678309d0ad16",
"name" : "反向用例-用户名过短-密码正确",
"fullName" : "test_case.test_basic.test_case.TestBPM#test_bpm",
"historyId" : "c75e95c5293a2f59a8de238e57454e2c",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "e23d2148b0b94088",
"name" : "log",
"source" : "e23d2148b0b94088.txt",
"type" : "text/plain",
"size" : 435
}, {
"uid" : "daa5230fce7e8279",
"name" : "stdout",
"source" : "daa5230fce7e8279.txt",
"type" : "text/plain",
"size" : 455
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : false
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-Basic"
}, {
"name" : "parentSuite",
"value" : "test_case.test_basic"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"
}, {
"name" : "case_method",
"value" : "'POST'"
}, {
"name" : "case_mime",
"value" : "'application/json'"
}, {
"name" : "case_title",
"value" : "'反向用例-用户名过短-密码正确'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/auth'"
}, {
"name" : "expect_data",
"value" : "{'state': False, 'message': '账户错误或该租户未启用'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "fcca678309d0ad16.json",
"parameterValues" : [ "'登录系统'", "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过短-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}
\ No newline at end of file
{
"uid" : "fda02d0624d9475f",
"name" : "正向用例",
"fullName" : "test_case.test_lao_zhang.test_case.TestBPM#test_bpm",
"historyId" : "dc258464863d86ec8c9a3ad69f4590ee",
"time" : {
"start" : 1721034132369,
"stop" : 1721034132397,
"duration" : 28
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774411037155328\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774411037155328\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774411037155328\"}",
"statusTrace" : "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x0000019CA7AF7A30>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x0000019CA7B84D00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x0000019CA7CB7970>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812774401151180800'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774411037155328\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "22667f0576f496ae",
"name" : "log",
"source" : "22667f0576f496ae.txt",
"type" : "text/plain",
"size" : 2642
}, {
"uid" : "b76c7cd38cd92a79",
"name" : "stdout",
"source" : "b76c7cd38cd92a79.txt",
"type" : "text/plain",
"size" : 846
} ],
"parameters" : [ ],
"hasContent" : true,
"stepsCount" : 0,
"attachmentsCount" : 2,
"shouldDisplayMessage" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_lao_zhang"
}, {
"name" : "suite",
"value" : "test_case"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "LAPTOP-O09782E1"
}, {
"name" : "thread",
"value" : "5340-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_lao_zhang.test_case"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '1812774401151180800'}"
}, {
"name" : "case_method",
"value" : "'DELETE'"
}, {
"name" : "case_mime",
"value" : "'query'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "case_url",
"value" : "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "level",
"value" : "'中'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
} ],
"links" : [ ],
"hidden" : true,
"retry" : true,
"extra" : {
"categories" : [ ],
"tags" : [ ]
},
"source" : "fda02d0624d9475f.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}
\ No newline at end of file
{
"uid" : "ab17fc5a4eb3bca4b216b548c7f9fcbc",
"name" : "timeline",
"children" : [ {
"name" : "LAPTOP-O09782E1",
"children" : [ {
"name" : "5340-MainThread",
"children" : [ {
"name" : "正向用例",
"uid" : "58f1f03c8574a0c7",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "正向用例",
"uid" : "100767a5aa17517f",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "ca9633dc69f0c436",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034118561,
"stop" : 1721034118594,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "a82f3b510da85cfb",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034116432,
"stop" : 1721034116462,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "606d20c8602cc715",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034121858,
"stop" : 1721034121903,
"duration" : 45
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例-用户名和密码正确",
"uid" : "e9d1d0a7dd41e9c3",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'正向用例-用户名和密码正确'", "'http://36.139.193.99:8088/auth'", "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "1eb560ed729702f2",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034115319,
"stop" : 1721034115349,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "cdab123d9c9fba25",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "4b2482ad02a7bda",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034117490,
"stop" : 1721034117527,
"duration" : 37
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为特殊字符-密码正确",
"uid" : "44dc49f4c9fab8c8",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为特殊字符-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "e7926f135a161579",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "2702778b03b3ff5b",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034119679,
"stop" : 1721034119719,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "afa12de4d60111dc",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034120746,
"stop" : 1721034120831,
"duration" : 85
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "4ee8b1cf26c2c9af",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034124051,
"stop" : 1721034124079,
"duration" : 28
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "bpm-场景测试-添加维度-正向",
"uid" : "1b6806facbba5b60",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "6a97db949aeeaadf",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034114251,
"stop" : 1721034114282,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "26c9ca60fb098112",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034125119,
"stop" : 1721034125148,
"duration" : 29
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例2",
"uid" : "12304b3944080174",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'': 'abctest'}", "{'message': \"Required String parameter 'code' is not present\"}", "'反向用例2'" ]
}, {
"name" : "正向用例",
"uid" : "f63af686844853db",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "d3ac3c518e93014f",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "fda02d0624d9475f",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034132369,
"stop" : 1721034132397,
"duration" : 28
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "反向用例-用户名正确-密码过长",
"uid" : "c88599ffe3cee03a",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '1'}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过长'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "76ec346b0006e018",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034127570,
"stop" : 1721034127594,
"duration" : 24
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "正向用例",
"uid" : "633d3d33f938e24b",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034122995,
"stop" : 1721034123018,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'GET'", "None", "'正向用例'", "'http://36.139.193.99:8088/refresh'", "{'message': '刷新成功'}", "'高'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "13f19f97163dfce8",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "5b3730d8e95f6233",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "正向用例",
"uid" : "8db57b79649e65c3",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': '需要更新'}", "{'isDelete': '0'}", "'正向用例'" ]
}, {
"name" : "正向用例",
"uid" : "537219fa86b37585",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034130264,
"stop" : 1721034130292,
"duration" : 28
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "反向用例-用户名正确-密码为空",
"uid" : "98a7402b119e1d5d",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034113044,
"stop" : 1721034113077,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码为空'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "fc278e8ac67339bc",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}", "'post'", "'query|json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'", "{'state': True, 'message': '保存组织参数成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "反向用例1",
"uid" : "cd6d851dc01bec9a",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "{'code': ''}", "{'message': '必填:code维度编码必填!'}", "'反向用例1'" ]
}, {
"name" : "正向用例",
"uid" : "e56848c826747f0c",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034126508,
"stop" : 1721034126539,
"duration" : 31
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '需要更新'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "正向用例",
"uid" : "694b6ae8f815bc3e",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'test_org'", "'post'", "'form'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'", "{'state': True, 'message': '删除组织成功!'}", "'中'", "'组织管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "7cf626025a8708b4",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034131318,
"stop" : 1721034131341,
"duration" : 23
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774401151180800'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "反向用例-用户名过短-密码正确",
"uid" : "fcca678309d0ad16",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过短-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "bpm-场景测试-登录-正向",
"uid" : "1525b51bfd3a328e",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "正向用例",
"uid" : "dad13075f2ba67b4",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'设置默认维度'", "{'code': 'test_dem_xyz_123'}", "'PUT'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'", "{'message': '设置默认维度成功!'}", "'中'", "'维度管理'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "75c1c0d0f501f5b5",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034128623,
"stop" : 1721034128655,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
}, {
"name" : "反向用例-用户名正确-密码过短",
"uid" : "4f90734493b69f6a",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名正确-密码过短'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "反向用例-用户名为空-密码正确",
"uid" : "477b4db827f7f2a3",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名为空-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "9d2279f2826c38de",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/org/v1/org/addOrg'", "{'message': '添加组织成功!'}", "'高'", "'组织管理'", "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}", "'select|delete'", "'demId'" ]
}, {
"name" : "反向用例-用户名过长-密码正确",
"uid" : "c95022b8dd4a9ee2",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}", "'POST'", "'application/json'", "'反向用例-用户名过长-密码正确'", "'http://36.139.193.99:8088/auth'", "{'state': False, 'message': '账户错误或该租户未启用'}", "'中'", "'认证接口'", "None", "None", "None" ]
}, {
"name" : "正向用例",
"uid" : "502af39bbc0eb293",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "passed",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}", "'post'", "'json'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'", "{'message': '添加维度成功!'}", "'高'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'delete'", "None" ]
}, {
"name" : "正向用例",
"uid" : "ae886fd8f02f449d",
"parentUid" : "b420ac5b115e6d9cd2d2264d021de4e7",
"status" : "failed",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '1812774385271545856'}", "'DELETE'", "'query'", "'正向用例'", "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'", "{'message': '删除维度成功'}", "'中'", "'维度管理'", "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'", "'select'", "'ids'" ]
} ],
"uid" : "b420ac5b115e6d9cd2d2264d021de4e7"
} ],
"uid" : "7e33cee26d6ca920df2dc9409741f061"
} ]
}
\ No newline at end of file
launch_status failed=6 1721034169000000000
launch_status broken=0 1721034169000000000
launch_status passed=20 1721034169000000000
launch_status skipped=0 1721034169000000000
launch_status unknown=0 1721034169000000000
launch_time duration=20983 1721034169000000000
launch_time min_duration=18 1721034169000000000
launch_time max_duration=212 1721034169000000000
launch_time sum_duration=1303 1721034169000000000
launch_problems product_defects=6 1721034169000000000
launch_retries retries=18 1721034169000000000
launch_retries run=26 1721034169000000000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Allure Report summary mail</title>
</head>
<body>
Mail body
</body>
</html>
launch_status_failed 6
launch_status_broken 0
launch_status_passed 20
launch_status_skipped 0
launch_status_unknown 0
launch_time_duration 20983
launch_time_min_duration 18
launch_time_max_duration 212
launch_time_sum_duration 1303
launch_problems_product_defects 6
launch_retries_retries 18
launch_retries_run 26
module.exports = __webpack_public_path__ + "favicon.ico";
\ No newline at end of file
[ {
"data" : {
"Product defects" : 6
}
} ]
\ No newline at end of file
[ {
"data" : {
"duration" : 20983
}
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 6,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 26
}
} ]
\ No newline at end of file
{
"b4daa31cff4b552b412448af5e4ed813" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "12304b3944080174",
"status" : "passed",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
}
} ]
},
"63bcb2c305b7f0bcb7fd2d55d671e0a6" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "c88599ffe3cee03a",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
}
} ]
},
"423b926d9c9c8e8a56af3847b1819589" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4f90734493b69f6a",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
}
} ]
},
"f640363898931f48a2631389cf661c1a" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e7926f135a161579",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
}
} ]
},
"d62e434428362512a9058f68faafe2f2" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "100767a5aa17517f",
"status" : "passed",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
}
} ]
},
"954d05acb58e7681d3d33149248b091d" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9d2279f2826c38de",
"status" : "passed",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
}
} ]
},
"8b5c6ab7c7d5d427ca8434dcfe2f2220" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "cd6d851dc01bec9a",
"status" : "passed",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
}
} ]
},
"ccc47dd491dda4f012668830aede7239" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "13f19f97163dfce8",
"status" : "passed",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
}
} ]
},
"0726b7ece66163239f4822447c1bd114" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d3ac3c518e93014f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
}
} ]
},
"81b63d12303454254c2f6e7bbd67d858" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e9d1d0a7dd41e9c3",
"status" : "passed",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
}
} ]
},
"128da70acc78e495205cae38c86a3095" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "1b6806facbba5b60",
"status" : "passed",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
}
} ]
},
"84712d074d431df54c5e53fe70699f96" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "44dc49f4c9fab8c8",
"status" : "passed",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
}
} ]
},
"4a35e629ced594be4e64e255839f5624" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "477b4db827f7f2a3",
"status" : "passed",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
}
} ]
},
"6a5ad61f25e888eed5239bf5b93834c2" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "c95022b8dd4a9ee2",
"status" : "passed",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
}
} ]
},
"1ee398667c230590007adb47d61adfee" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "58f1f03c8574a0c7",
"status" : "passed",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
}
} ]
},
"56957926302f06b75969c6b498f201d0" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "cdab123d9c9fba25",
"status" : "passed",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
}
} ]
},
"dc258464863d86ec8c9a3ad69f4590ee" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5b3730d8e95f6233",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败, 用例数据为:{'ids': '1812774401151180800'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812774415470534656\"}",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
}
} ]
},
"ab9675ee712bd87eed823fadbd2abe6a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "dad13075f2ba67b4",
"status" : "passed",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
}
} ]
},
"817beae3f290f38d2fbd5f74a7b72a55" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "694b6ae8f815bc3e",
"status" : "passed",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
}
} ]
},
"c75e95c5293a2f59a8de238e57454e2c" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "fcca678309d0ad16",
"status" : "passed",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
}
} ]
},
"a846fa27705c7e18d3cf0d1b13ce62eb" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "f63af686844853db",
"status" : "passed",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
}
} ]
},
"a74acbda061b937902db30e301248837" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "8db57b79649e65c3",
"status" : "passed",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
}
} ]
},
"d453bc5e72a32f4b8e605532565781e9" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "ae886fd8f02f449d",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败,描述失败的原因",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
}
} ]
},
"66a9541ee6ddd173bc3735e2e4285b95" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "502af39bbc0eb293",
"status" : "passed",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
}
} ]
},
"4569b0471702313459c9b42c94979bb4" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "1525b51bfd3a328e",
"status" : "passed",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
}
} ]
},
"764d3ad32e20031839427f75fe32737a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "fc278e8ac67339bc",
"status" : "passed",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
}
} ]
}
}
\ No newline at end of file
[ {
"data" : {
"run" : 26,
"retry" : 18
}
} ]
\ No newline at end of file
<!DOCTYPE html>
<html dir="ltr">
<head>
<meta charset="utf-8">
<title>Allure Report</title>
<link rel="favicon" href="favicon.ico?v=2">
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="plugins/screen-diff/styles.css">
</head>
<body>
<div id="alert"></div>
<div id="content">
<span class="spinner">
<span class="spinner__circle"></span>
</span>
</div>
<div id="popup"></div>
<script src="app.js"></script>
<script src="plugins/behaviors/index.js"></script>
<script src="plugins/packages/index.js"></script>
<script src="plugins/screen-diff/index.js"></script>
</body>
</html>
'use strict';
allure.api.addTranslation('en', {
tab: {
behaviors: {
name: 'Behaviors'
}
},
widget: {
behaviors: {
name: 'Features by stories',
showAll: 'show all'
}
}
});
allure.api.addTranslation('ru', {
tab: {
behaviors: {
name: 'Функциональность'
}
},
widget: {
behaviors: {
name: 'Функциональность',
showAll: 'показать все'
}
}
});
allure.api.addTranslation('zh', {
tab: {
behaviors: {
name: '功能'
}
},
widget: {
behaviors: {
name: '特性场景',
showAll: '显示所有'
}
}
});
allure.api.addTranslation('de', {
tab: {
behaviors: {
name: 'Verhalten'
}
},
widget: {
behaviors: {
name: 'Features nach Stories',
showAll: 'Zeige alle'
}
}
});
allure.api.addTranslation('nl', {
tab: {
behaviors: {
name: 'Functionaliteit'
}
},
widget: {
behaviors: {
name: 'Features en story’s',
showAll: 'Toon alle'
}
}
});
allure.api.addTranslation('he', {
tab: {
behaviors: {
name: 'התנהגויות'
}
},
widget: {
behaviors: {
name: 'תכונות לפי סיפורי משתמש',
showAll: 'הצג הכול'
}
}
});
allure.api.addTranslation('br', {
tab: {
behaviors: {
name: 'Comportamentos'
}
},
widget: {
behaviors: {
name: 'Funcionalidades por história',
showAll: 'Mostrar tudo'
}
}
});
allure.api.addTranslation('ja', {
tab: {
behaviors: {
name: '振る舞い'
}
},
widget: {
behaviors: {
name: 'ストーリー別の機能',
showAll: '全て表示'
}
}
});
allure.api.addTranslation('es', {
tab: {
behaviors: {
name: 'Funcionalidades'
}
},
widget: {
behaviors: {
name: 'Funcionalidades por Historias de Usuario',
showAll: 'mostrar todo'
}
}
});
allure.api.addTranslation('kr', {
tab: {
behaviors: {
name: '동작'
}
},
widget: {
behaviors: {
name: '스토리별 기능',
showAll: '전체 보기'
}
}
});
allure.api.addTranslation('fr', {
tab: {
behaviors: {
name: 'Comportements'
}
},
widget: {
behaviors: {
name: 'Thèmes par histoires',
showAll: 'Montrer tout'
}
}
});
allure.api.addTab('behaviors', {
title: 'tab.behaviors.name', icon: 'fa fa-list',
route: 'behaviors(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.behaviors.name',
baseUrl: 'behaviors',
url: 'data/behaviors.json',
csvUrl: 'data/behaviors.csv'
});
})
});
allure.api.addWidget('widgets', 'behaviors', allure.components.WidgetStatusView.extend({
rowTag: 'a',
title: 'widget.behaviors.name',
baseUrl: 'behaviors',
showLinks: true
}));
'use strict';
allure.api.addTranslation('en', {
tab: {
packages: {
name: 'Packages'
}
}
});
allure.api.addTranslation('ru', {
tab: {
packages: {
name: 'Пакеты'
}
}
});
allure.api.addTranslation('zh', {
tab: {
packages: {
name: '包'
}
}
});
allure.api.addTranslation('de', {
tab: {
packages: {
name: 'Pakete'
}
}
});
allure.api.addTranslation('nl', {
tab: {
packages: {
name: 'Packages'
}
}
});
allure.api.addTranslation('he', {
tab: {
packages: {
name: 'חבילות'
}
}
});
allure.api.addTranslation('br', {
tab: {
packages: {
name: 'Pacotes'
}
}
});
allure.api.addTranslation('ja', {
tab: {
packages: {
name: 'パッケージ'
}
}
});
allure.api.addTranslation('es', {
tab: {
packages: {
name: 'Paquetes'
}
}
});
allure.api.addTranslation('kr', {
tab: {
packages: {
name: '패키지'
}
}
});
allure.api.addTranslation('fr', {
tab: {
packages: {
name: 'Paquets'
}
}
});
allure.api.addTab('packages', {
title: 'tab.packages.name', icon: 'fa fa-align-left',
route: 'packages(/)(:testGroup)(/)(:testResult)(/)(:testResultTab)(/)',
onEnter: (function (testGroup, testResult, testResultTab) {
return new allure.components.TreeLayout({
testGroup: testGroup,
testResult: testResult,
testResultTab: testResultTab,
tabName: 'tab.packages.name',
baseUrl: 'packages',
url: 'data/packages.json'
});
})
});
(function () {
var settings = allure.getPluginSettings('screen-diff', { diffType: 'diff' });
function renderImage(src) {
return (
'<div class="screen-diff__container">' +
'<img class="screen-diff__image" src="' +
src +
'">' +
'</div>'
);
}
function findImage(data, name) {
if (data.testStage && data.testStage.attachments) {
var matchedImage = data.testStage.attachments.filter(function (attachment) {
return attachment.name === name;
})[0];
if (matchedImage) {
return 'data/attachments/' + matchedImage.source;
}
}
return null;
}
function renderDiffContent(type, diffImage, actualImage, expectedImage) {
if (type === 'diff') {
if (diffImage) {
return renderImage(diffImage);
}
}
if (type === 'overlay' && expectedImage) {
return (
'<div class="screen-diff__overlay screen-diff__container">' +
'<img class="screen-diff__image" src="' +
expectedImage +
'">' +
'<div class="screen-diff__image-over">' +
'<img class="screen-diff__image" src="' +
actualImage +
'">' +
'</div>' +
'</div>'
);
}
if (actualImage) {
return renderImage(actualImage);
}
return 'No diff data provided';
}
var TestResultView = Backbone.Marionette.View.extend({
regions: {
subView: '.screen-diff-view',
},
template: function () {
return '<div class="screen-diff-view"></div>';
},
onRender: function () {
var data = this.model.toJSON();
var testType = data.labels.filter(function (label) {
return label.name === 'testType';
})[0];
var diffImage = findImage(data, 'diff');
var actualImage = findImage(data, 'actual');
var expectedImage = findImage(data, 'expected');
if (!testType || testType.value !== 'screenshotDiff') {
return;
}
this.showChildView(
'subView',
new ScreenDiffView({
diffImage: diffImage,
actualImage: actualImage,
expectedImage: expectedImage,
}),
);
},
});
var ErrorView = Backbone.Marionette.View.extend({
templateContext: function () {
return this.options;
},
template: function (data) {
return '<pre class="screen-diff-error">' + data.error + '</pre>';
},
});
var AttachmentView = Backbone.Marionette.View.extend({
regions: {
subView: '.screen-diff-view',
},
template: function () {
return '<div class="screen-diff-view"></div>';
},
onRender: function () {
jQuery
.getJSON(this.options.sourceUrl)
.then(this.renderScreenDiffView.bind(this), this.renderErrorView.bind(this));
},
renderErrorView: function (error) {
console.log(error);
this.showChildView(
'subView',
new ErrorView({
error: error.statusText,
}),
);
},
renderScreenDiffView: function (data) {
this.showChildView(
'subView',
new ScreenDiffView({
diffImage: data.diff,
actualImage: data.actual,
expectedImage: data.expected,
}),
);
},
});
var ScreenDiffView = Backbone.Marionette.View.extend({
className: 'pane__section',
events: function () {
return {
['click [name="screen-diff-type-' + this.cid + '"]']: 'onDiffTypeChange',
'mousemove .screen-diff__overlay': 'onOverlayMove',
};
},
initialize: function (options) {
this.diffImage = options.diffImage;
this.actualImage = options.actualImage;
this.expectedImage = options.expectedImage;
this.radioName = 'screen-diff-type-' + this.cid;
},
templateContext: function () {
return {
diffType: settings.get('diffType'),
diffImage: this.diffImage,
actualImage: this.actualImage,
expectedImage: this.expectedImage,
radioName: this.radioName,
};
},
template: function (data) {
if (!data.diffImage && !data.actualImage && !data.expectedImage) {
return '';
}
return (
'<h3 class="pane__section-title">Screen Diff</h3>' +
'<div class="screen-diff__content">' +
'<div class="screen-diff__switchers">' +
'<label><input type="radio" name="' +
data.radioName +
'" value="diff"> Show diff</label>' +
'<label><input type="radio" name="' +
data.radioName +
'" value="overlay"> Show overlay</label>' +
'</div>' +
renderDiffContent(
data.diffType,
data.diffImage,
data.actualImage,
data.expectedImage,
) +
'</div>'
);
},
adjustImageSize: function (event) {
var overImage = this.$(event.target);
overImage.width(overImage.width());
},
onRender: function () {
const diffType = settings.get('diffType');
this.$('[name="' + this.radioName + '"][value="' + diffType + '"]').prop(
'checked',
true,
);
if (diffType === 'overlay') {
this.$('.screen-diff__image-over img').on('load', this.adjustImageSize.bind(this));
}
},
onOverlayMove: function (event) {
var pageX = event.pageX;
var containerScroll = this.$('.screen-diff__container').scrollLeft();
var elementX = event.currentTarget.getBoundingClientRect().left;
var delta = pageX - elementX + containerScroll;
this.$('.screen-diff__image-over').width(delta);
},
onDiffTypeChange: function (event) {
settings.save('diffType', event.target.value);
this.render();
},
});
allure.api.addTestResultBlock(TestResultView, { position: 'before' });
allure.api.addAttachmentViewer('application/vnd.allure.image.diff', {
View: AttachmentView,
icon: 'fa fa-exchange',
});
})();
.screen-diff__switchers {
margin-bottom: 1em;
}
.screen-diff__switchers label + label {
margin-left: 1em;
}
.screen-diff__overlay {
position: relative;
cursor: col-resize;
}
.screen-diff__container {
overflow-x: auto;
}
.screen-diff__image-over {
top: 0;
left: 0;
bottom: 0;
background: #fff;
position: absolute;
overflow: hidden;
box-shadow: 2px 0 1px -1px #aaa;
}
.screen-diff-error {
color: #fd5a3e;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"total" : 3,
"items" : [ {
"uid" : "a17acae1eab7e54410f7c3ce8da43ed7",
"name" : "BPM-Basic",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 3
}
}, {
"uid" : "190def5ec1bc096add1d6e9232694ef3",
"name" : "BPM-张三",
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 2
}
}, {
"uid" : "e910ba08e15c3fed7dc9b37fbb7f6731",
"name" : "bpm-场景测试",
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 2
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"Product defects" : 6
}
} ]
\ No newline at end of file
{
"total" : 1,
"items" : [ {
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d",
"name" : "Product defects",
"statistic" : {
"failed" : 6,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 6
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"duration" : 20983
}
} ]
\ No newline at end of file
[ {
"uid" : "502af39bbc0eb293",
"name" : "正向用例",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "cdab123d9c9fba25",
"name" : "正向用例",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "12304b3944080174",
"name" : "反向用例2",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e9d1d0a7dd41e9c3",
"name" : "正向用例-用户名和密码正确",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "13f19f97163dfce8",
"name" : "正向用例",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ae886fd8f02f449d",
"name" : "正向用例",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "44dc49f4c9fab8c8",
"name" : "反向用例-用户名为特殊字符-密码正确",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "694b6ae8f815bc3e",
"name" : "正向用例",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e7926f135a161579",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "fcca678309d0ad16",
"name" : "反向用例-用户名过短-密码正确",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d3ac3c518e93014f",
"name" : "正向用例",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "1b6806facbba5b60",
"name" : "bpm-场景测试-添加维度-正向",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "8db57b79649e65c3",
"name" : "正向用例",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c88599ffe3cee03a",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "58f1f03c8574a0c7",
"name" : "正向用例",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "1525b51bfd3a328e",
"name" : "bpm-场景测试-登录-正向",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "f63af686844853db",
"name" : "正向用例",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "100767a5aa17517f",
"name" : "正向用例",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "fc278e8ac67339bc",
"name" : "正向用例",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4f90734493b69f6a",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "cd6d851dc01bec9a",
"name" : "反向用例1",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "477b4db827f7f2a3",
"name" : "反向用例-用户名为空-密码正确",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9d2279f2826c38de",
"name" : "正向用例",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c95022b8dd4a9ee2",
"name" : "反向用例-用户名过长-密码正确",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "dad13075f2ba67b4",
"name" : "正向用例",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5b3730d8e95f6233",
"name" : "正向用例",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 6,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 26
}
} ]
\ No newline at end of file
[ {
"data" : {
"run" : 26,
"retry" : 18
}
} ]
\ No newline at end of file
[ {
"uid" : "fc278e8ac67339bc",
"name" : "正向用例",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "477b4db827f7f2a3",
"name" : "反向用例-用户名为空-密码正确",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d3ac3c518e93014f",
"name" : "正向用例",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "f63af686844853db",
"name" : "正向用例",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "1525b51bfd3a328e",
"name" : "bpm-场景测试-登录-正向",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "694b6ae8f815bc3e",
"name" : "正向用例",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "dad13075f2ba67b4",
"name" : "正向用例",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e7926f135a161579",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "cd6d851dc01bec9a",
"name" : "反向用例1",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "1b6806facbba5b60",
"name" : "bpm-场景测试-添加维度-正向",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5b3730d8e95f6233",
"name" : "正向用例",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "8db57b79649e65c3",
"name" : "正向用例",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "502af39bbc0eb293",
"name" : "正向用例",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4f90734493b69f6a",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "c95022b8dd4a9ee2",
"name" : "反向用例-用户名过长-密码正确",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c88599ffe3cee03a",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "e9d1d0a7dd41e9c3",
"name" : "正向用例-用户名和密码正确",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9d2279f2826c38de",
"name" : "正向用例",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "58f1f03c8574a0c7",
"name" : "正向用例",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "100767a5aa17517f",
"name" : "正向用例",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ae886fd8f02f449d",
"name" : "正向用例",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "cdab123d9c9fba25",
"name" : "正向用例",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "44dc49f4c9fab8c8",
"name" : "反向用例-用户名为特殊字符-密码正确",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "fcca678309d0ad16",
"name" : "反向用例-用户名过短-密码正确",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "12304b3944080174",
"name" : "反向用例2",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "13f19f97163dfce8",
"name" : "正向用例",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"uid" : "502af39bbc0eb293",
"name" : "正向用例",
"time" : {
"start" : 1721034130010,
"stop" : 1721034130057,
"duration" : 47
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "cdab123d9c9fba25",
"name" : "正向用例",
"time" : {
"start" : 1721034130065,
"stop" : 1721034130099,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "12304b3944080174",
"name" : "反向用例2",
"time" : {
"start" : 1721034129911,
"stop" : 1721034129929,
"duration" : 18
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e9d1d0a7dd41e9c3",
"name" : "正向用例-用户名和密码正确",
"time" : {
"start" : 1721034112472,
"stop" : 1721034112684,
"duration" : 212
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "13f19f97163dfce8",
"name" : "正向用例",
"time" : {
"start" : 1721034126218,
"stop" : 1721034126263,
"duration" : 45
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "ae886fd8f02f449d",
"name" : "正向用例",
"time" : {
"start" : 1721034129687,
"stop" : 1721034129738,
"duration" : 51
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "44dc49f4c9fab8c8",
"name" : "反向用例-用户名为特殊字符-密码正确",
"time" : {
"start" : 1721034113000,
"stop" : 1721034113034,
"duration" : 34
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "694b6ae8f815bc3e",
"name" : "正向用例",
"time" : {
"start" : 1721034126447,
"stop" : 1721034126487,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e7926f135a161579",
"name" : "反向用例-用户名正确-密码为空",
"time" : {
"start" : 1721034116382,
"stop" : 1721034116413,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "fcca678309d0ad16",
"name" : "反向用例-用户名过短-密码正确",
"time" : {
"start" : 1721034112887,
"stop" : 1721034112940,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d3ac3c518e93014f",
"name" : "正向用例",
"time" : {
"start" : 1721034126171,
"stop" : 1721034126201,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "1b6806facbba5b60",
"name" : "bpm-场景测试-添加维度-正向",
"time" : {
"start" : 1721034129804,
"stop" : 1721034129844,
"duration" : 40
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "8db57b79649e65c3",
"name" : "正向用例",
"time" : {
"start" : 1721034129850,
"stop" : 1721034129875,
"duration" : 25
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c88599ffe3cee03a",
"name" : "反向用例-用户名正确-密码过长",
"time" : {
"start" : 1721034119631,
"stop" : 1721034119662,
"duration" : 31
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "58f1f03c8574a0c7",
"name" : "正向用例",
"time" : {
"start" : 1721034130110,
"stop" : 1721034130163,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "1525b51bfd3a328e",
"name" : "bpm-场景测试-登录-正向",
"time" : {
"start" : 1721034129757,
"stop" : 1721034129800,
"duration" : 43
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "f63af686844853db",
"name" : "正向用例",
"time" : {
"start" : 1721034130171,
"stop" : 1721034130206,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "100767a5aa17517f",
"name" : "正向用例",
"time" : {
"start" : 1721034130217,
"stop" : 1721034130252,
"duration" : 35
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "fc278e8ac67339bc",
"name" : "正向用例",
"time" : {
"start" : 1721034126402,
"stop" : 1721034126435,
"duration" : 33
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4f90734493b69f6a",
"name" : "反向用例-用户名正确-密码过短",
"time" : {
"start" : 1721034122946,
"stop" : 1721034122978,
"duration" : 32
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "cd6d851dc01bec9a",
"name" : "反向用例1",
"time" : {
"start" : 1721034129881,
"stop" : 1721034129904,
"duration" : 23
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "477b4db827f7f2a3",
"name" : "反向用例-用户名为空-密码正确",
"time" : {
"start" : 1721034112692,
"stop" : 1721034112875,
"duration" : 183
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9d2279f2826c38de",
"name" : "正向用例",
"time" : {
"start" : 1721034126323,
"stop" : 1721034126391,
"duration" : 68
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "c95022b8dd4a9ee2",
"name" : "反向用例-用户名过长-密码正确",
"time" : {
"start" : 1721034112953,
"stop" : 1721034112989,
"duration" : 36
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "dad13075f2ba67b4",
"name" : "正向用例",
"time" : {
"start" : 1721034126272,
"stop" : 1721034126313,
"duration" : 41
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5b3730d8e95f6233",
"name" : "正向用例",
"time" : {
"start" : 1721034133425,
"stop" : 1721034133455,
"duration" : 30
},
"status" : "failed",
"severity" : "normal"
} ]
\ No newline at end of file
{
"total" : 3,
"items" : [ {
"uid" : "d6c27516cfb7fd4d4410f19a31d4e57b",
"name" : "test_case.test_basic",
"statistic" : {
"failed" : 5,
"broken" : 0,
"skipped" : 0,
"passed" : 10,
"unknown" : 0,
"total" : 15
}
}, {
"uid" : "f807542b498ef7f359918df354af54f0",
"name" : "test_case.test_lao_zhang",
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 5,
"unknown" : 0,
"total" : 6
}
}, {
"uid" : "727cdc55e0284d10bada9eae3e5356f7",
"name" : "test_case.test_bpm_dependency",
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 5,
"unknown" : 0,
"total" : 5
}
} ]
}
\ No newline at end of file
{
"reportName" : "Allure Report",
"testRuns" : [ ],
"statistic" : {
"failed" : 6,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 26
},
"time" : {
"start" : 1721034112472,
"stop" : 1721034133455,
"duration" : 20983,
"minDuration" : 18,
"maxDuration" : 212,
"sumDuration" : 1303
}
}
\ No newline at end of file
{"uuid": "7e07e9ab-fad1-48fa-a5ce-aaa324c50403", "befores": [{"name": "title", "status": "passed", "start": 1721034600865, "stop": 1721034600865}], "start": 1721034600865, "stop": 1721034600886}
\ No newline at end of file
{"uuid": "45624adf-f1a2-498c-9a18-329ee056edcf", "befores": [{"name": "module_name", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601178}
\ No newline at end of file
{"uuid": "e9b101e4-7ebc-4b92-94d9-58e92a62307c", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590737}
\ No newline at end of file
{"uuid": "70a2cf25-8c24-4e58-bd06-7135912b0a36", "befores": [{"name": "level", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590804}
\ No newline at end of file
{"uuid": "88d8dfbc-e7af-42ad-a6ab-2eae9c7b7c47", "befores": [{"name": "module_name", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584084}
\ No newline at end of file
{"uuid": "0fb55982-14e7-4ff1-834f-dbf28dafe20e", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600716}
\ No newline at end of file
{"uuid": "ed359215-1071-4b08-be69-111c6469a626", "befores": [{"name": "case_title", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599660}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "PUT /api/demension/v1/dem/setDefaultDem?code=test_dem_xyz_123 HTTP/11" 200 None
\ No newline at end of file
{"uuid": "68c0da94-7f50-4a59-9611-881f50b18bfc", "befores": [{"name": "update_key", "status": "passed", "start": 1721034601138, "stop": 1721034601138}], "start": 1721034601138, "stop": 1721034601174}
\ No newline at end of file
{"uuid": "063cb7b7-fce4-4468-8cd0-5dc90f7ca0be", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597313}
\ No newline at end of file
{"uuid": "a8efb293-c9bb-40d1-9e59-d2f949879173", "befores": [{"name": "module_name", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600718}
\ No newline at end of file
{"uuid": "0e8126b2-c7e4-4730-99eb-3fecc88ab23d", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584002}
\ No newline at end of file
{"uuid": "20dcafa6-dc0f-4d89-8ab0-ff0447e817e3", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601033}
\ No newline at end of file
{"uuid": "c58df3c8-2a21-449f-954b-9c466a1f6f11", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601274}
\ No newline at end of file
{"uuid": "a198a46c-d738-490f-a024-7e7ef7f4c7d0", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597453, "stop": 1721034597453}], "start": 1721034597453, "stop": 1721034597489}
\ No newline at end of file
{"uuid": "86755d1f-0920-46bc-bd55-2c21ed580721", "befores": [{"name": "case_method", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584042}
\ No newline at end of file
{"uuid": "a0dc1654-2da7-42db-a31f-0a70aedd0e37", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597310}
\ No newline at end of file
{"uuid": "d9c401f1-7ccb-4dc1-aa46-33349dd1e790", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597267}
\ No newline at end of file
{"uuid": "3c0419a2-5b85-4319-a8c9-9d8c04f5f7bc", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584082}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "b29e2eac-b975-4026-ac3f-f3f8ab72ce5a", "befores": [{"name": "case_data", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604462}
\ No newline at end of file
{"uuid": "eb376116-9fbb-4113-89f0-ddf2354d7694", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583975}
\ No newline at end of file
{"uuid": "fdf05738-b544-421a-a840-f7e4ba78ee9b", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597446}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "67500b7f-316b-452f-ba16-4a5469d3903b", "befores": [{"name": "module_name", "status": "passed", "start": 1721034589630, "stop": 1721034589630}], "start": 1721034589630, "stop": 1721034589677}
\ No newline at end of file
{"uuid": "e82e147a-fb52-43d5-82de-4804816e2e91", "befores": [{"name": "api_name", "status": "passed", "start": 1721034585330, "stop": 1721034585330}], "start": 1721034585330, "stop": 1721034585370}
\ No newline at end of file
{"uuid": "965b47c9-d909-4fc4-a6c5-ba257c9ea22c", "befores": [{"name": "case_url", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584042}
\ No newline at end of file
post http://36.139.193.99:8088/api/demension/v1/dem/addDem json {'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'} {'message': '添加维度成功!'} delete DELETE FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; None
{"state":true,"message":"添加维度成功!","value":"","code":200}
断言成功
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzUsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzYsImlhdCI6MTcyMTAzNDUzNn0.DY-ZBzr8K_Bb2KVq-ZyL2z9N6qXw4Jday3dIFbQalfdU0ur0gO3yuvFSLlJb7J9VqPw13FGiGTn755SgvJJikA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzcsImlhdCI6MTcyMTAzNDUzN30.zkgRxYc1ZSTXBzUlR1fDosGafOqytm5L0ZR7nZa7QXfuBl-xiPMLsJbCd_AhLh7AgQzbDDwlUjxL0XijsDh7tA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
{"uuid": "edb34d96-ea19-48b7-9506-288a69edbba2", "befores": [{"name": "case_title", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601177}
\ No newline at end of file
{"uuid": "29d47181-6441-4ff4-bd39-df7198c3bf2c", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597536}
\ No newline at end of file
{"uuid": "ec42ee1d-ce0b-4720-9f0c-f12eaa4cb394", "befores": [{"name": "api_name", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583976}
\ No newline at end of file
{"uuid": "26db7201-ab24-471b-9f00-af49fb8a7d12", "befores": [{"name": "case_data", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583974}
\ No newline at end of file
{"uuid": "105877e6-3a78-49f7-875f-b7e38a7a6fe9", "befores": [{"name": "case_method", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604463}
\ No newline at end of file
{"uuid": "3b34aef9-5174-4d5a-86eb-b480d0af9918", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597269}
\ No newline at end of file
{"uuid": "926c93ab-bd87-495a-9567-a70830351e41", "befores": [{"name": "case_title", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587554}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812776305478443008"}
断言成功
{"uuid": "2e43c933-83eb-4ddc-8ffc-165c677509e0", "befores": [{"name": "case_url", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584318}
\ No newline at end of file
{"uuid": "17aa9e78-4191-498e-b855-055bceaa7cf4", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034590747, "stop": 1721034590748}], "start": 1721034590747, "stop": 1721034590803}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "4be0478d-282e-44d5-b0fe-2c3e9de5d227", "befores": [{"name": "update_key", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594018}
\ No newline at end of file
{"uuid": "38f8894a-b378-4a0c-9a1a-8bc76bc335e1", "befores": [{"name": "api_name", "status": "passed", "start": 1721034591833, "stop": 1721034591833}], "start": 1721034591833, "stop": 1721034591881}
\ No newline at end of file
{"name": "反向用例-用户名过长-密码正确", "status": "passed", "attachments": [{"name": "log", "source": "79268106-342f-4e1c-b025-e4a13bb6296d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "0d0d13d1-8b61-41ab-bde3-6c9156c5a6fe-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名过长-密码正确'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034584051, "stop": 1721034584079, "uuid": "212df0d3-e3db-4016-9ad3-8573102599a1", "historyId": "6a5ad61f25e888eed5239bf5b93834c2", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "3c944a2e-7d3b-409b-b684-f4e0bddcdd64", "befores": [{"name": "case_title", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583976}
\ No newline at end of file
{"uuid": "9feb8991-9821-4558-835a-e2c0d8ef639d", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034586385, "stop": 1721034586385}], "start": 1721034586385, "stop": 1721034586426}
\ No newline at end of file
{"uuid": "a7e92d34-5188-4bd0-acf5-4eb59baeb242", "befores": [{"name": "level", "status": "passed", "start": 1721034584009, "stop": 1721034584009}], "start": 1721034584009, "stop": 1721034584043}
\ No newline at end of file
{"uuid": "2090833a-213b-4fdd-92c4-fa364f5f4826", "befores": [{"name": "api_name", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601132}
\ No newline at end of file
{"uuid": "a2d8d83b-8bcc-4400-9472-fd72a6eebc7a", "befores": [{"name": "update_key", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602336}
\ No newline at end of file
{"uuid": "121dd048-cf7b-44c1-89cd-abdf428818cb", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594063}
\ No newline at end of file
{"name": "正向用例-用户名和密码正确", "status": "passed", "attachments": [{"name": "log", "source": "25276a2d-3724-4748-a229-30615bb2b3e2-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "dcd83c7c-2184-40d6-879a-31ed0b20808f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例-用户名和密码正确'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034583943, "stop": 1721034583971, "uuid": "be32b860-c7b5-41a5-b450-e6326a14a2b1", "historyId": "81b63d12303454254c2f6e7bbd67d858", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "563dbb5b-e356-479c-883c-abdbc4ac3b30", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599619, "stop": 1721034599658}
\ No newline at end of file
{"uuid": "aa661b29-c875-4deb-956b-8b1db46a1f43", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595107}
\ No newline at end of file
{"uuid": "2d57aa96-e886-469d-ade1-4be194e740ce", "befores": [{"name": "case_data", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595108}
\ No newline at end of file
{"uuid": "05b82572-6337-414a-b893-5b01cc64688a", "befores": [{"name": "title", "status": "passed", "start": 1721034600833, "stop": 1721034600833}], "start": 1721034600833, "stop": 1721034600860}
\ No newline at end of file
{"uuid": "95640c3c-d4a2-4467-bdfd-d1cd3a3f3a2f", "befores": [{"name": "update_key", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584039}
\ No newline at end of file
{"uuid": "4b05f4f6-164d-466b-86e4-6382a3d8e284", "befores": [{"name": "case_url", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600716}
\ No newline at end of file
{"uuid": "72194e98-1a1c-4b32-8c40-181d568fff32", "befores": [{"name": "api_name", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601178}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过长", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "3af2a59e-0d72-4b93-9848-798c682e9518-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "501a0fc4-265f-44d0-9051-131e3b90df5e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过长'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034587491, "stop": 1721034587531, "uuid": "255fc337-8782-439f-8079-63ffa3b00ffb", "historyId": "63bcb2c305b7f0bcb7fd2d55d671e0a6", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "631798cd-c06d-4b3d-87f8-b43b5f7db80f", "befores": [{"name": "api_name", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601221}
\ No newline at end of file
{"uuid": "a66da173-780a-4d8f-93e4-45bb90525dff", "befores": [{"name": "case_title", "status": "passed", "start": 1721034593969, "stop": 1721034593969}], "start": 1721034593969, "stop": 1721034594021}
\ No newline at end of file
{"uuid": "d83ee37c-ed3d-43ef-b42d-9779ffcb15a1", "befores": [{"name": "case_data", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584004}
\ No newline at end of file
{"uuid": "ad6ba93e-5e3c-4f81-bc66-ffefbbacfd6d", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597345}
\ No newline at end of file
{"uuid": "801f87dd-84c5-49e2-8186-424a394893d3", "befores": [{"name": "case_method", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586428}
\ No newline at end of file
{"uuid": "33a41a31-9e27-466e-b7e1-7eaf8066cf27", "befores": [{"name": "case_url", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591879}
\ No newline at end of file
{"uuid": "21589f9f-960a-4dfd-800f-a1fc94bc159a", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597413}
\ No newline at end of file
{"uuid": "ea9aa497-29d1-4c5a-b4e3-4317443718f5", "befores": [{"name": "case_method", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603398}
\ No newline at end of file
{"uuid": "2198512d-3aef-4b5b-849b-c3696c7eebbf", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594019}
\ No newline at end of file
{"uuid": "04fbd412-a8d2-4616-8046-9e418fcc2b7e", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585367}
\ No newline at end of file
{"uuid": "6feb0cf3-8414-4fbf-a14f-cdecfa38505b", "befores": [{"name": "case_url", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594020}
\ No newline at end of file
{"uuid": "3b5be063-d20a-47f9-9419-648050c68242", "befores": [{"name": "module_name", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595111}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776305788821504"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776310842957824"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776315267948544"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776319697133568"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "e190aa10-044a-4424-af7b-3e6546c8080d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "ae700d21-ffb0-4a57-a222-3af2840cfc2b-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'设置默认维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'PUT'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'test_dem_xyz_123'}"}, {"name": "expect_data", "value": "{'message': '设置默认维度成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034601041, "stop": 1721034601069, "uuid": "83015e5c-b1ed-4901-b700-156c9788a3c9", "historyId": "56957926302f06b75969c6b498f201d0", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "设置默认维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000203D7D16640>('message')\nE + where <built-in method get of dict object at 0x00000203D7D16640> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "83386d9f-3dfd-4905-b73a-efc20980ed1c-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "aa5bad3d-ac93-4e19-81eb-0b85de6010f2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'GET'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034594025, "stop": 1721034594053, "uuid": "47175090-6d9b-4a86-98c4-12137b193e32", "historyId": "0726b7ece66163239f4822447c1bd114", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "6c633d32-9a74-4387-8e02-022cc0e8d20b", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584081}
\ No newline at end of file
{"uuid": "bded017f-31ce-4f15-b866-292a8cdc480f", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597310}
\ No newline at end of file
{"uuid": "fc58f42f-cbc2-4cad-beb4-dd9a6bf6030f", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597415}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "0e0cb648-0668-4968-a277-18debabeb819-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "78efd5d3-c18c-4564-bb31-af80639ef3c7-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776360943919104'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034600672, "stop": 1721034600706, "uuid": "9097672b-78ef-4f27-afbb-ae213711410b", "historyId": "b1880520415454889e175a38974c597e", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "366a791b-51e8-463d-a1be-76fb6987e5c3", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597412}
\ No newline at end of file
{"uuid": "7e058c6a-4a05-4935-9e14-9da729219bc4", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597447}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
{"uuid": "3c76c8fd-08e3-4685-bc4a-67a44ff798b3", "befores": [{"name": "module_name", "status": "passed", "start": 1721034584009, "stop": 1721034584009}], "start": 1721034584009, "stop": 1721034584045}
\ No newline at end of file
{"uuid": "4cad9f4d-3eae-4599-a110-5ce7e63ce06c", "befores": [{"name": "api_name", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600717}
\ No newline at end of file
{"uuid": "d3128e54-0b89-4940-be87-057ee75cb365", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590737}
\ No newline at end of file
{"uuid": "fedb0062-a1cb-418d-90ba-a90a073a2ead", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597486}
\ No newline at end of file
{"uuid": "21bf0f88-79be-41f6-9be9-6940c130dd74", "befores": [{"name": "case_method", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594065}
\ No newline at end of file
{"uuid": "43c89021-4455-4169-acce-0a18dae78e16", "befores": [{"name": "api_name", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586429}
\ No newline at end of file
{"uuid": "af7403bc-6a5f-4fe2-a239-487d9cb70554", "befores": [{"name": "update_key", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601271}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data2-expect_data2-反向用例2] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?=abctest HTTP/11" 500 None
\ No newline at end of file
{"uuid": "ada2bad4-5fdc-4fc0-ae64-d4e96dcfb45f", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588611}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
\ No newline at end of file
{"uuid": "0ba3713f-df74-4c07-8cc5-7cd0eeafdfc7", "befores": [{"name": "case_method", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601131}
\ No newline at end of file
{"uuid": "45bc09f4-f1ce-4be0-8bde-c41800cb0973", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601070}
\ No newline at end of file
{"uuid": "ea4041af-a2be-4678-aaec-fdb3181f49a5", "befores": [{"name": "case_method", "status": "passed", "start": 1721034588563, "stop": 1721034588563}], "start": 1721034588563, "stop": 1721034588612}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "5eb04c5f-d43f-4e1e-8381-6c92de486cdf-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e641a3b0-ef48-4160-a60b-a610e5fd1447-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功!'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "sql_data", "value": "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1721034601078, "stop": 1721034601127, "uuid": "db2795e1-bd42-4f36-87a7-f522010c730f", "historyId": "01564deace1bae4511797e62938a89a4", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "40b68a60-06ab-450e-b4b7-13d2ccd69d2f", "befores": [{"name": "module_name", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590805}
\ No newline at end of file
{"uuid": "6361a0cb-2b20-4bf6-812f-a87b686437e1", "befores": [{"name": "api_name", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584122}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x00000203D7E9E180>('state')\nE + where <built-in method get of dict object at 0x00000203D7E9E180> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDUzNH0.KulD_YVLlpPYa59XmHg4iD8jnK0cot2R_44MgEN5Dv2vcV_D9hnDXB_ymJW0yO6GmWgXnQLuav0GrMPoTC-h8w', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...QsImlhdCI6MTcyMTAzNDUzNH0.KulD_YVLlpPYa59XmHg4iD8jnK0cot2R_44MgEN5Dv2vcV_D9hnDXB_ymJW0yO6GmWgXnQLuav0GrMPoTC-h8w', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "512ddd98-871f-4c8b-a077-ae722021f0a0-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "43a7b84d-40c1-4ca5-88ac-61e977658b38-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过短'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034592905, "stop": 1721034592936, "uuid": "c95e927f-7f64-4fc2-a9e2-7e41e217536e", "historyId": "423b926d9c9c8e8a56af3847b1819589", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "3e527e50-2139-49b3-8d50-b9c5ec27e390", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587482}
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/org/deleteOrg form test_org {'state': True, 'message': '删除组织成功!'} None None None
{"state":true,"message":"删除组织成功!","value":"","code":200}
断言成功
{"uuid": "286f3235-b506-4ae6-a08f-b51ea4c80275", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584042}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/deleteOrg HTTP/11" 200 None
\ No newline at end of file
{"uuid": "7c8ef5df-7294-4976-86c9-8018325e213f", "befores": [{"name": "update_key", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585367}
\ No newline at end of file
{"uuid": "04fd8bb2-f5d3-4e4a-8a76-4cdc0c0218ef", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597309}
\ No newline at end of file
{"uuid": "f3787956-722b-4283-b3e8-a5c2444624c8", "befores": [{"name": "api_name", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587556}
\ No newline at end of file
{"uuid": "a504e0e3-fb7b-4ad4-ab8a-fb0620c61282", "befores": [{"name": "api_name", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584319}
\ No newline at end of file
{"uuid": "00194254-afa5-485a-ab38-e4ad78045a61", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584127, "stop": 1721034584308}
\ No newline at end of file
{"uuid": "276ad52a-bea9-42cf-983f-3ae519bdb028", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597316, "stop": 1721034597316}], "start": 1721034597316, "stop": 1721034597347}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776386449481728"}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "7ee83850-dde1-4ebe-bda5-a3485d26e92d", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597344}
\ No newline at end of file
{"uuid": "6b8aa798-9c86-48ea-82b7-938df9055011", "befores": [{"name": "api_name", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592950}
\ No newline at end of file
{"uuid": "43c2a623-235e-4f38-9ae0-13c2f365c83b", "befores": [{"name": "case_title", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601275}
\ No newline at end of file
{"uuid": "1e6125a9-93bd-4cbd-93a7-415eb067285f", "befores": [{"name": "update_key", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604459}
\ No newline at end of file
{"uuid": "5b594ade-2cc8-4e43-b35b-95cd28aa9f82", "befores": [{"name": "level", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584122}
\ No newline at end of file
{"uuid": "731facda-f902-45cb-978b-5d1d8df4779e", "befores": [{"name": "update_key", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601217}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过长", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "05657116-b5db-4e58-8f11-cb3762d80ffb-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "dd231a6c-d6e9-4cf2-978c-6f801e4be7b0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过长'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034588564, "stop": 1721034588602, "uuid": "b202886c-b54b-4cda-b43b-25ddf48d7c35", "historyId": "63bcb2c305b7f0bcb7fd2d55d671e0a6", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "d88f3270-e21c-44cf-a8e5-817be25104e6", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597411}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
\ No newline at end of file
{"uuid": "e39eaded-fe67-48b5-b20b-0cf74e95f011", "befores": [{"name": "level", "status": "passed", "start": 1721034587436, "stop": 1721034587436}], "start": 1721034587436, "stop": 1721034587485}
\ No newline at end of file
{"uuid": "8ab5ab1e-51a7-4bfe-a4c6-9545d9349ef3", "befores": [{"name": "level", "status": "passed", "start": 1721034597453, "stop": 1721034597453}], "start": 1721034597453, "stop": 1721034597488}
\ No newline at end of file
{"uuid": "e081b3b2-2cd8-44e2-ad1c-5c899a40de8a", "befores": [{"name": "case_title", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594065}
\ No newline at end of file
{"uuid": "6e4a9774-07d2-40c1-913e-0f5208ec8d68", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597268}
\ No newline at end of file
{"uuid": "e29ddf6a-cd60-43b3-8d11-64e79150c3e7", "befores": [{"name": "update_key", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589673}
\ No newline at end of file
{"uuid": "c004ac49-869a-4a0d-97a0-379fd09ea26b", "befores": [{"name": "update_key", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601128}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776386449481728"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":false,"message":"","code":200,"logId":"1812776390916415488"}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
{"uuid": "0392bfd1-1d60-43d4-9776-8056b3888b8b", "befores": [{"name": "case_data", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601034}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=test_org HTTP/11" 200 None
\ No newline at end of file
{"uuid": "6c35adb8-961c-4007-a5bb-074a36ba4526", "befores": [{"name": "level", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596224}
\ No newline at end of file
{"uuid": "9c522ff8-956a-416c-b45c-23366545b888", "befores": [{"name": "api_name", "status": "passed", "start": 1721034584009, "stop": 1721034584009}], "start": 1721034584009, "stop": 1721034584043}
\ No newline at end of file
{"uuid": "c9f75be1-205f-4580-b604-4193d110cd63", "befores": [{"name": "update_key", "status": "passed", "start": 1721034583942, "stop": 1721034583943}], "start": 1721034583942, "stop": 1721034583972}
\ No newline at end of file
{"uuid": "6d261bcd-d86e-4f10-9a73-f306c280186f", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597266}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "627e6627-d9c8-4ba9-b127-eaf9563d1a86", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600714}
\ No newline at end of file
{"uuid": "a43c9cbb-013f-4be5-b66a-85f7440b4908", "befores": [{"name": "module_name", "status": "passed", "start": 1721034600988, "stop": 1721034600988}], "start": 1721034600988, "stop": 1721034601036}
\ No newline at end of file
{"uuid": "68399577-faa0-4f55-ab00-ac566cfc1987", "befores": [{"name": "level", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597450}
\ No newline at end of file
{"uuid": "01254f59-7d0f-4423-a05e-22bfe9faf899", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034590748, "stop": 1721034590748}], "start": 1721034590748, "stop": 1721034590801}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "34555767-2465-48ed-b038-d40624072b1f", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034596130, "stop": 1721034596130}], "start": 1721034596130, "stop": 1721034596222}
\ No newline at end of file
{"uuid": "c83e2ab1-ef1d-4b54-8a96-10c2063dd9e9", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597539}
\ No newline at end of file
{"uuid": "56ad07d9-3f3c-40b0-815e-9dcd1355d755", "befores": [{"name": "level", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601221}
\ No newline at end of file
{"uuid": "0aef9e2b-1204-4110-b71b-ddf6e1b55474", "befores": [{"name": "case_data", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588611}
\ No newline at end of file
{"uuid": "7f55d121-38a5-4754-90a2-4e00431de2d7", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604460}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "d6cba54a-e2d7-4a73-9d53-5a843950800d-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "53efbbe8-b8af-4e22-9911-681ebc5bd8bf-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/org/addOrg'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'message': '添加组织成功!'}"}, {"name": "sql_type", "value": "'select|delete'"}, {"name": "sql_data", "value": "{'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', 'delete': 'delete from uc_org where CODE_=\"test_org\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1721034597352, "stop": 1721034597411, "uuid": "8d9d3a63-ab82-4c4a-92fd-0388dc834528", "historyId": "30128ddf4d022e0d195be80a40893eb8", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "d2fb638f-e3ae-471c-9bbb-c1cce6276edd", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597485}
\ No newline at end of file
{"uuid": "893e200f-1b1c-42c6-b1c4-68200231d6e2", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034601138, "stop": 1721034601138}], "start": 1721034601138, "stop": 1721034601175}
\ No newline at end of file
{"uuid": "710c6b3c-7e5d-4571-90e9-96c52d7785a5", "befores": [{"name": "level", "status": "passed", "start": 1721034589630, "stop": 1721034589630}], "start": 1721034589630, "stop": 1721034589677}
\ No newline at end of file
{"uuid": "d76a8ecc-8ff4-4b45-919b-315f24ee29aa", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597346}
\ No newline at end of file
{"uuid": "ccae102a-8025-42df-a443-b5b2dbdd0cdc", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594019}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过长", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "078f55c0-2fa7-4058-9828-a343a5450ea8-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e974a8d6-17fb-4b7d-952c-e289b3896e63-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过长'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034590698, "stop": 1721034590728, "uuid": "083f3bfe-2091-4f72-9bf0-d67bcd502c59", "historyId": "63bcb2c305b7f0bcb7fd2d55d671e0a6", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "64e65e0f-7284-4ae9-871a-5ed1d56a4b31", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597273, "stop": 1721034597273}], "start": 1721034597273, "stop": 1721034597313}
\ No newline at end of file
{"uuid": "f5beeae3-f15f-45bb-a389-7292e34d713d", "befores": [{"name": "module_name", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603399}
\ No newline at end of file
{"uuid": "d79272f3-6268-4234-a67d-58bbd5a94c7e", "befores": [{"name": "case_data", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601176}
\ No newline at end of file
{"uuid": "6a34e349-7108-4c08-b946-649ab78c9a72", "befores": [{"name": "update_key", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584001}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "e0fd5b80-b51e-4f62-9d96-0b652c15e7ec", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597446}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzIsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzMsImlhdCI6MTcyMTAzNDUzM30.SqAWrztyPxfay5i2OdcjSuCtztadhco-CGEHS4gYd7ZjGPPxwX6Si0OLn25FzD5plH2WFib6N7NdqQEnx0Cv9Q","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzQsImlhdCI6MTcyMTAzNDUzNH0.KulD_YVLlpPYa59XmHg4iD8jnK0cot2R_44MgEN5Dv2vcV_D9hnDXB_ymJW0yO6GmWgXnQLuav0GrMPoTC-h8w","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
{"uuid": "2ee05ef9-d9b7-411e-99d2-0650b460666d", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597446}
\ No newline at end of file
{"uuid": "d2c41e30-3e21-4207-8581-eb7adc7f43ed", "befores": [{"name": "update_key", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595106}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
{"uuid": "dbe4b2cc-8fd2-4031-adb9-6eb8a5be09ab", "befores": [{"name": "module_name", "status": "passed", "start": 1721034602303, "stop": 1721034602304}], "start": 1721034602303, "stop": 1721034602341}
\ No newline at end of file
{"uuid": "9e91a456-88f4-4961-8a02-d2042ab218fe", "befores": [{"name": "case_url", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592948}
\ No newline at end of file
{"uuid": "832ce50f-afac-4c18-80c1-c60237e20917", "befores": [{"name": "case_title", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601132}
\ No newline at end of file
{"uuid": "b3b1bab7-750e-428d-929f-05b01e93a930", "befores": [{"name": "case_method", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584005}
\ No newline at end of file
{"uuid": "989d8316-4564-460e-a451-4c47fe7c117d", "befores": [{"name": "case_url", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584005}
\ No newline at end of file
{"uuid": "8bbd4bfc-04b0-4547-890f-866f1c926a1c", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034590748, "stop": 1721034590748}], "start": 1721034590748, "stop": 1721034590800}
\ No newline at end of file
{"uuid": "494fcd81-b698-4137-9968-ff5ba202cea1", "befores": [{"name": "update_key", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599619, "stop": 1721034599657}
\ No newline at end of file
{"uuid": "f0e7d75f-ba5e-4eca-8a87-84cc8f3f1354", "befores": [{"name": "case_data", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601130}
\ No newline at end of file
{"uuid": "7f8933d3-0e91-430a-84f3-c4f6c584047a", "befores": [{"name": "case_data", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599619, "stop": 1721034599659}
\ No newline at end of file
{"uuid": "168d81dc-5772-461c-bb68-8954609f00ce", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597309}
\ No newline at end of file
{"uuid": "722765a8-49ab-499d-9362-2ac954548b82", "befores": [{"name": "case_data", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591879}
\ No newline at end of file
{"uuid": "32bed4bf-886b-4b09-a8a4-4a7a86b0cd23", "befores": [{"name": "case_url", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604462}
\ No newline at end of file
{"uuid": "c141356d-719f-4ac5-98fe-805e2546b748", "befores": [{"name": "case_method", "status": "passed", "start": 1721034587436, "stop": 1721034587436}], "start": 1721034587436, "stop": 1721034587484}
\ No newline at end of file
{"uuid": "9947bf13-9840-43b9-a8c4-2d3423a82377", "befores": [{"name": "case_title", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595109}
\ No newline at end of file
{"uuid": "12956b2e-1bb5-4b97-a10f-aa8aaa393fcf", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601273}
\ No newline at end of file
{"uuid": "c4676e12-5e9b-4aab-b3f9-f09fc94d16d9", "befores": [{"name": "case_data", "status": "passed", "start": 1721034590748, "stop": 1721034590748}], "start": 1721034590748, "stop": 1721034590802}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=test_org HTTP/11" 200 None
\ No newline at end of file
{"uuid": "6c2aea31-b9cc-48db-8503-a7dcbbe6c08e", "befores": [{"name": "case_method", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591880}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "2520ac7f-ec42-493b-bc50-719158e6ea34", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597416}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "2a190973-a9ce-42e7-af47-c32488473b56-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "5a57f1ae-1835-4d0f-97a0-b110fd7f3010-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"}, {"name": "case_mime", "value": "'form'"}, {"name": "case_data", "value": "'test_org'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034601183, "stop": 1721034601217, "uuid": "f93fdabe-6535-472f-8b95-50898fb6c599", "historyId": "d62e434428362512a9058f68faafe2f2", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776386449481728\"}", "trace": "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776386449481728\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError"}, "attachments": [{"name": "log", "source": "2b314277-65fa-4391-bb7c-40a9029fca7e-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "67f89ec8-ec00-4e38-8d1d-3614b440f267-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776376546729984'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034603353, "stop": 1721034603386, "uuid": "96a66465-e203-4d6d-bdcc-a9d8313f0f36", "historyId": "f0328bee4933587079c3de404b5dc1cd", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "157cbea1-f8b8-4683-9582-128fa89d7915", "befores": [{"name": "module_name", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583977}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776319948791808"}
{"uuid": "937fc1b3-c9f0-4c53-b10e-6a59c1c135be", "befores": [{"name": "module_name", "status": "passed", "start": 1721034601224, "stop": 1721034601225}], "start": 1721034601224, "stop": 1721034601276}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "379b26a6-ea73-4f5f-939b-b40b602f73de", "befores": [{"name": "module_name", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592951}
\ No newline at end of file
{"uuid": "e06e2df4-0e93-4540-97f6-4d5eeb805469", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597453, "stop": 1721034597453}], "start": 1721034597453, "stop": 1721034597489}
\ No newline at end of file
{"uuid": "ccbabdac-6a0f-4eec-8874-ff3fa5f0c4c0", "befores": [{"name": "case_method", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585369}
\ No newline at end of file
{"uuid": "2318c274-9160-41af-895a-0ef9f4b2061c", "befores": [{"name": "case_method", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595109}
\ No newline at end of file
{"uuid": "43c02116-6e87-4bba-bf21-591863790278", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600715}
\ No newline at end of file
{"uuid": "2524a398-f56e-49f6-a393-35cf93e58807", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583972}
\ No newline at end of file
{"uuid": "caf5a1b6-e660-4137-8f89-ae34f9217229", "befores": [{"name": "case_title", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604463}
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/org/addOrg json {'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'} {'message': '添加组织成功!'} select|delete {'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123";', 'delete': 'delete from uc_org where CODE_="test_org";'} demId
{"state":true,"message":"添加组织成功!","value":"","code":200}
断言成功
{"uuid": "4b05e55c-d6ca-4050-ace0-24629499ced5", "befores": [{"name": "module_name", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587489, "stop": 1721034587557}
\ No newline at end of file
{"uuid": "63d2cc1e-713c-419e-a098-0311004b554d", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597447}
\ No newline at end of file
{"uuid": "6e37ef6e-0a8a-4482-a6e0-42a920354257", "befores": [{"name": "api_name", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603399}
\ No newline at end of file
{"uuid": "76c08dda-723b-4a34-bcc0-6ed30b5c6b87", "befores": [{"name": "level", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600717}
\ No newline at end of file
{"uuid": "9be3193a-773b-499f-b0e8-9e603f2f6c38", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597413}
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams query|json {'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]} {'state': True, 'message': '保存组织参数成功!'} None None None
{"state":true,"message":"保存组织参数成功!","value":"","code":200}
断言成功
{"uuid": "5bca58cb-0599-42d7-8fcd-3fb705961b47", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601217}
\ No newline at end of file
{"uuid": "8255ea21-1c82-4018-a2b3-f7b140148bd8", "befores": [{"name": "case_url", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588612}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "5996b11e-997a-466d-8294-1c1e4a0dcd21-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "1c2e4fae-2aad-4c67-af62-b802f22f7485-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码为空'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034587438, "stop": 1721034587471, "uuid": "2121d119-ebb0-4491-aca1-407e43cd6363", "historyId": "f640363898931f48a2631389cf661c1a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "3ab3cbd0-ac9f-4782-a791-8188784d4d02", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598603}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "6712bb46-d76e-498c-8549-9b72de6ad076", "befores": [{"name": "update_key", "status": "passed", "start": 1721034586385, "stop": 1721034586385}], "start": 1721034586385, "stop": 1721034586425}
\ No newline at end of file
{"uuid": "d165366e-4f58-4f75-9970-36b172d5d65a", "befores": [{"name": "module_name", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590742}
\ No newline at end of file
post http://36.139.193.99:8088/api/org/v1/org/deleteOrg form test_org {'state': True, 'message': '删除组织成功!'} None None None
{"state":true,"message":"删除组织成功!","value":"","code":200}
断言成功
{"uuid": "e93cc952-9570-4fa5-9cd5-c912e2600a4c", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586426}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "3f48a777-8b16-4eb1-b35f-5c22f835e626", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601218}
\ No newline at end of file
{"uuid": "8022cb08-af04-4291-9176-41f3ba05265d", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589674}
\ No newline at end of file
{"uuid": "c827d063-2eb0-4d67-8ba8-15584d52d032", "befores": [{"name": "case_method", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601072}
\ No newline at end of file
{"uuid": "a1bb48ca-45ef-450b-b5b8-062bf5de5646", "befores": [{"name": "level", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597313}
\ No newline at end of file
{"uuid": "ed26c413-9d30-4501-ad53-9b729bbbbff7", "befores": [{"name": "case_method", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592948}
\ No newline at end of file
{"uuid": "31e096fa-6e0a-44bd-8731-e1d4254376be", "befores": [{"name": "api_name", "status": "passed", "start": 1721034589630, "stop": 1721034589630}], "start": 1721034589630, "stop": 1721034589677}
\ No newline at end of file
{"uuid": "d3bf2260-8c4e-4046-b764-a9ae0642ff3e", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592948}
\ No newline at end of file
{"uuid": "9beb2bbe-485b-4064-bf04-b0236d0f03ae", "befores": [{"name": "update_key", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584080}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/addOrg HTTP/11" 200 None
\ No newline at end of file
{"uuid": "7f7f8eec-96f1-4b0f-8e9e-8d9981932f51", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597488}
\ No newline at end of file
{"uuid": "116091fc-1d2a-4936-b470-fcbb84fbb987", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601273}
\ No newline at end of file
{"uuid": "a12af9bc-96ef-4a3c-ad41-21a896f4ca5c", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597538}
\ No newline at end of file
{"uuid": "a24a48c0-174e-4060-af77-5ad949c220db", "befores": [{"name": "update_key", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584118}
\ No newline at end of file
{"uuid": "76a24ae4-16af-4423-8ba4-14cf25c936ae", "befores": [{"name": "case_url", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599659}
\ No newline at end of file
{"uuid": "112615bf-6e5c-4e2b-ac1f-f8ce6bc30fab", "befores": [{"name": "module_name", "status": "passed", "start": 1721034585330, "stop": 1721034585330}], "start": 1721034585330, "stop": 1721034585371}
\ No newline at end of file
{"uuid": "de938f83-32a9-4182-a394-51dad8e99eab", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584042}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "ce29b1e8-45c9-400c-ae04-7dcf64415b6c-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "0128d11f-35e9-43bb-a748-95af45b18bde-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_data", "value": "{'code': '需要更新'}"}, {"name": "expect_data", "value": "{'isDelete': '0'}"}, {"name": "title", "value": "'正向用例'"}], "start": 1721034600834, "stop": 1721034600859, "uuid": "69dd3641-b2ec-4603-923a-54ee0a1f5ec1", "historyId": "80639afd76541f1077685be59fcb80a1", "testCaseId": "2d43949fe9fc94a14d91b8791ac4ed5c", "fullName": "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg", "labels": [{"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "epic", "value": "bpm-场景测试"}, {"name": "feature", "value": "维度管理"}, {"name": "tag", "value": "dependency(depends=['TestBPM::test_add_dem'])"}, {"name": "parentSuite", "value": "test_case.test_bpm_dependency"}, {"name": "suite", "value": "test_pytest_decorator"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm_dependency.test_pytest_decorator"}]}
\ No newline at end of file
{"uuid": "6b02203b-b98f-48ac-bb0a-dbb049d9710d", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588612}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000203D7E81280>('message')\nE + where <built-in method get of dict object at 0x00000203D7E81280> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDUzN30.zkgRxYc1ZSTXBzUlR1fDosGafOqytm5L0ZR7nZa7QXfuBl-xiPMLsJbCd_AhLh7AgQzbDDwlUjxL0XijsDh7tA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...csImlhdCI6MTcyMTAzNDUzN30.zkgRxYc1ZSTXBzUlR1fDosGafOqytm5L0ZR7nZa7QXfuBl-xiPMLsJbCd_AhLh7AgQzbDDwlUjxL0XijsDh7tA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "7163cc3f-c055-42c2-92b0-37a221e1fd1f-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "09a99ce4-5f6c-473a-922c-abf15cd41421-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'GET'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034596130, "stop": 1721034596212, "uuid": "4c3b86f1-9ccd-4989-b5e2-197431c87d11", "historyId": "0726b7ece66163239f4822447c1bd114", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "a9b02de4-ed3f-4343-99d9-52bcfe52ea1c", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601218}
\ No newline at end of file
{"uuid": "d4c55ed6-58c0-4160-af4b-83671334b630", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591878}
\ No newline at end of file
{"uuid": "d81836ac-9318-40b0-a4b6-2eab47e0bd6e", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034601137, "stop": 1721034601138}], "start": 1721034601137, "stop": 1721034601176}
\ No newline at end of file
{"uuid": "0f6581ef-9c7f-4b36-8bb9-7927385960b9", "befores": [{"name": "update_key", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598602}
\ No newline at end of file
{"uuid": "b47caf25-605b-40c0-975e-eb2a0b44f141", "befores": [{"name": "case_method", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590804}
\ No newline at end of file
{"uuid": "a94698a7-4187-4545-ad3e-a6c205bfb53a", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603396}
\ No newline at end of file
{"uuid": "c7b20645-d403-41dd-927c-a342011de611", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587542}
\ No newline at end of file
{"uuid": "7c7f5918-0899-4a10-90de-86186264208a", "befores": [{"name": "update_key", "status": "passed", "start": 1721034596130, "stop": 1721034596130}], "start": 1721034596130, "stop": 1721034596221}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776386449481728"}
{"uuid": "8dd12d29-55ee-4245-afc3-1c2a6c64732f", "befores": [{"name": "case_method", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601177}
\ No newline at end of file
{"uuid": "61e6a7a8-2d9f-4e20-b7e5-c98e51fc96e8", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588611}
\ No newline at end of file
{"uuid": "ec43624e-a444-410e-b1b5-324293ba07cb", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597487}
\ No newline at end of file
{"uuid": "4db47ba3-2cb5-47ed-b173-1bd8cc3f3914", "befores": [{"name": "module_name", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596225}
\ No newline at end of file
{"uuid": "0cb7784e-9a72-4b16-9f40-16ea674777a0", "befores": [{"name": "case_title", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590740}
\ No newline at end of file
{"uuid": "bf015fe6-7edb-48b5-8c6f-6b5aa23e91c9", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583972}
\ No newline at end of file
{"uuid": "c7a24ebf-1b21-4e64-b3e6-3bc670290f0a", "befores": [{"name": "case_url", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587543}
\ No newline at end of file
{"uuid": "6335bf8e-ef20-487f-8ef7-96b250878d37", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597311}
\ No newline at end of file
{"uuid": "9e0629c7-a0d3-4a07-a053-b9076d4cda13", "befores": [{"name": "api_name", "status": "passed", "start": 1721034593969, "stop": 1721034593969}], "start": 1721034593969, "stop": 1721034594022}
\ No newline at end of file
{"uuid": "b003b44b-be0b-4afa-804e-e2062bd8bcba", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585368}
\ No newline at end of file
{"uuid": "df3546ea-cc01-4d80-9a4f-210b227978a3", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602337}
\ No newline at end of file
{"uuid": "59622aff-1e10-477d-8b18-6335a4871dad", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592946}
\ No newline at end of file
{"uuid": "3dacd884-0c98-4b47-ab9f-bf88322f5515", "befores": [{"name": "level", "status": "passed", "start": 1721034600988, "stop": 1721034600990}], "start": 1721034600988, "stop": 1721034601036}
\ No newline at end of file
{"uuid": "ff399d7e-7079-4803-9b3a-7d451290975d", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034600865, "stop": 1721034600865}], "start": 1721034600865, "stop": 1721034600887}
\ No newline at end of file
{"uuid": "9d7d2e80-069a-4b01-abdf-814013a8c0f8", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597445}
\ No newline at end of file
{"uuid": "375440e5-3e4a-4e48-8488-1f1dee433c8a", "befores": [{"name": "api_name", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604464}
\ No newline at end of file
{"uuid": "1cc28e78-ccb0-4c9e-bd47-84214421be2b", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584120}
\ No newline at end of file
{"uuid": "a45ad40f-d43b-4a1b-8375-f9dba2077559", "befores": [{"name": "api_name", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584084}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "71d1ccd6-4916-430e-b83a-0503907d7820-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "96e72e62-f316-43a8-acbb-bd94ebe63d41-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码为空'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034585331, "stop": 1721034585359, "uuid": "c120320f-783e-4ad2-9247-9713edecf4e1", "historyId": "f640363898931f48a2631389cf661c1a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "06149751-1ba0-40df-a59b-73207cbb35fa", "befores": [{"name": "case_url", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601274}
\ No newline at end of file
{"uuid": "a93fcd54-1948-4637-b661-32c04e50a56e", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595108}
\ No newline at end of file
{"uuid": "d88366d4-dc36-49ce-9983-513364ee0616", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597344}
\ No newline at end of file
{"uuid": "d3aec233-6595-45cc-847b-0f7060b57b7c", "befores": [{"name": "module_name", "status": "passed", "start": 1721034598554, "stop": 1721034598554}], "start": 1721034598554, "stop": 1721034598607}
\ No newline at end of file
{"uuid": "4505cf95-9c5b-4885-8ab6-11df5768dda6", "befores": [{"name": "level", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583976}
\ No newline at end of file
{"uuid": "450b43e7-5500-42ac-99ac-1fb120dc642f", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591879}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "2ebebf6a-eab3-408e-9865-9bc1daa30484", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597412}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "51c817b1-76dc-4f68-8729-faa0725f7643", "befores": [{"name": "case_url", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601176}
\ No newline at end of file
{"uuid": "e1109e22-232c-4f9e-a48a-8a8b55c8a33e", "befores": [{"name": "module_name", "status": "passed", "start": 1721034593969, "stop": 1721034593969}], "start": 1721034593969, "stop": 1721034594022}
\ No newline at end of file
{"uuid": "a10d1990-79d9-4e38-96b7-d28e4a6fc9d8", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602337}
\ No newline at end of file
{"uuid": "400a5a95-541b-4466-b452-1b83a4c2f27e", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601130}
\ No newline at end of file
{"uuid": "f946733c-3dba-47cd-8953-58e832727165", "befores": [{"name": "case_method", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602339}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
{"uuid": "71dd8db0-8036-4300-b424-1f8952ebd6e0", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587541}
\ No newline at end of file
{"uuid": "44484cb1-20f4-4df6-a7c5-aeb65dc724ce", "befores": [{"name": "case_method", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583975}
\ No newline at end of file
{"uuid": "fc5e3033-9350-4a39-ad06-25cc7c0e6649", "befores": [{"name": "case_url", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598605}
\ No newline at end of file
{"uuid": "807042dd-dc8c-4701-b0bb-a3a1799bbad9", "befores": [{"name": "module_name", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584122}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/deleteOrg HTTP/11" 200 None
\ No newline at end of file
{"uuid": "284468c8-9ece-4dba-9490-9e389c580630", "befores": [{"name": "case_url", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595109}
\ No newline at end of file
{"uuid": "ce869ee2-7899-4117-8eb8-039736f4f121", "befores": [{"name": "case_data", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584082}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776366333599744"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776370771173376"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776375204552704"}
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
{"uuid": "e06630fe-d89b-4bab-a100-3f2d19057bff", "befores": [{"name": "case_title", "status": "passed", "start": 1721034584009, "stop": 1721034584009}], "start": 1721034584009, "stop": 1721034584043}
\ No newline at end of file
{"uuid": "6de1c564-3364-43ae-b087-65526cec1e51", "befores": [{"name": "level", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592950}
\ No newline at end of file
{"name": "反向用例2", "status": "passed", "attachments": [{"name": "log", "source": "24275316-2632-4484-bf85-e0e6bf0c68bc-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "b73bcf77-a728-4509-a37b-f38ed600900e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_data", "value": "{'': 'abctest'}"}, {"name": "expect_data", "value": "{'message': \"Required String parameter 'code' is not present\"}"}, {"name": "title", "value": "'反向用例2'"}], "start": 1721034600893, "stop": 1721034600911, "uuid": "6e1209cc-17a3-4dd0-9d3f-139f0ea6e492", "historyId": "b4daa31cff4b552b412448af5e4ed813", "testCaseId": "2d43949fe9fc94a14d91b8791ac4ed5c", "fullName": "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg", "labels": [{"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "epic", "value": "bpm-场景测试"}, {"name": "feature", "value": "维度管理"}, {"name": "tag", "value": "dependency(depends=['TestBPM::test_add_dem'])"}, {"name": "parentSuite", "value": "test_case.test_bpm_dependency"}, {"name": "suite", "value": "test_pytest_decorator"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm_dependency.test_pytest_decorator"}]}
\ No newline at end of file
{"uuid": "11c6fc80-d74d-4343-972d-d2564c11402b", "befores": [{"name": "api_name", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594066}
\ No newline at end of file
{"uuid": "6a2d22ea-2f23-4443-beff-0bc5c9e4a5c9", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597536}
\ No newline at end of file
{"uuid": "8c07e8b3-0064-45af-961b-d5782c5c896b", "befores": [{"name": "case_title", "status": "passed", "start": 1721034598554, "stop": 1721034598554}], "start": 1721034598554, "stop": 1721034598606}
\ No newline at end of file
{"uuid": "aabbc96f-923c-4bdc-b664-25e1e14f6cce", "befores": [{"name": "case_data", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598605}
\ No newline at end of file
{"uuid": "7554886f-2074-4cfe-86f6-4d8a552756c2", "befores": [{"name": "case_method", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601034}
\ No newline at end of file
{"uuid": "2e98e375-def3-4748-bed2-b40f2b22b936", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597413}
\ No newline at end of file
{"uuid": "28d10b01-874b-41f7-bbd8-96c6fa90428b", "befores": [{"name": "update_key", "status": "passed", "start": 1721034590748, "stop": 1721034590748}], "start": 1721034590748, "stop": 1721034590800}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776390916415488\"}", "trace": "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776390916415488\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError"}, "attachments": [{"name": "log", "source": "34a2e03b-b4f1-428b-ac4d-7462a541b351-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "b0d82455-2e50-4a75-ab60-aea02762a1c4-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776376546729984'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034604419, "stop": 1721034604451, "uuid": "2f7d34d5-ea59-4b2c-ae3e-32016110fa98", "historyId": "f0328bee4933587079c3de404b5dc1cd", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "8c4401bf-14ce-42d9-832c-cd7c85889cba", "befores": [{"name": "level", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590741}
\ No newline at end of file
{"uuid": "6d9b9928-0407-4fa3-9d58-e34b9d8f6752", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585368}
\ No newline at end of file
{"uuid": "99e68411-378e-44fe-aef7-9a6f96e83eff", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597346}
\ No newline at end of file
{"uuid": "83fc7a64-0dcd-4123-a3d4-f9e4829fec3a", "befores": [{"name": "case_url", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585369}
\ No newline at end of file
{"uuid": "9ee7cb24-511f-4462-bd0c-1c27df24eb29", "befores": [{"name": "level", "status": "passed", "start": 1721034597494, "stop": 1721034597495}], "start": 1721034597494, "stop": 1721034597540}
\ No newline at end of file
{"uuid": "a65d0f27-807d-4e2d-bd22-3e0aac6b051c", "befores": [{"name": "case_url", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589675}
\ No newline at end of file
{"uuid": "ca85e36d-8ed5-4f4b-ab88-86d1377ab224", "befores": [{"name": "update_key", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592945}
\ No newline at end of file
{"uuid": "cefcc86d-c010-42f5-9bc6-8cfdcc24b48b", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601130}
\ No newline at end of file
{"name": "bpm-场景测试-登录-正向", "status": "passed", "attachments": [{"name": "log", "source": "ccb86f47-dc55-4775-806c-748299d85a2b-attachment.txt", "type": "text/plain"}], "start": 1721034600723, "stop": 1721034600770, "uuid": "f2f6862c-5f82-49e9-93c7-f193980567c5", "historyId": "4569b0471702313459c9b42c94979bb4", "testCaseId": "4569b0471702313459c9b42c94979bb4", "fullName": "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_login", "labels": [{"name": "epic", "value": "bpm-场景测试"}, {"name": "story", "value": "登录系统"}, {"name": "feature", "value": "认证接口"}, {"name": "tag", "value": "dependency"}, {"name": "parentSuite", "value": "test_case.test_bpm_dependency"}, {"name": "suite", "value": "test_pytest_decorator"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm_dependency.test_pytest_decorator"}]}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "cd252c44-ba84-4c45-8158-923fdb22b9f1", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595108}
\ No newline at end of file
{"uuid": "88fa3e87-fca8-4192-9757-9ad3a9d97124", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591878}
\ No newline at end of file
{"uuid": "36b538c2-32c6-4810-b8f1-1e5c6142113f", "befores": [{"name": "level", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584083}
\ No newline at end of file
{"uuid": "49e73062-2002-49fe-8c15-1c2216c9e247", "befores": [{"name": "case_title", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590804}
\ No newline at end of file
{"uuid": "72778cb5-b20b-4a04-800b-002fa4baa549", "befores": [{"name": "api_name", "status": "passed", "start": 1721034587436, "stop": 1721034587436}], "start": 1721034587436, "stop": 1721034587485}
\ No newline at end of file
{"uuid": "bb034aa9-8c35-422c-9824-de16b9d12a89", "befores": [{"name": "case_data", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584120}
\ No newline at end of file
{"uuid": "f8f61cc6-7616-456d-9c2f-4b7439b698c3", "befores": [{"name": "level", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603398}
\ No newline at end of file
{"uuid": "5c0c7c01-dd14-448d-9bdf-7f7e8a4ac880", "befores": [{"name": "case_title", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584121}
\ No newline at end of file
{"uuid": "d2ffece9-a152-4e3c-8edb-cf70a790165f", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584120}
\ No newline at end of file
{"uuid": "2d3abd79-e3c0-47e3-8278-ad72870e5a58", "befores": [{"name": "case_method", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597449}
\ No newline at end of file
{"uuid": "feb0852a-4158-474a-aa1b-8fa9d1294073", "befores": [{"name": "module_name", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594066}
\ No newline at end of file
{"uuid": "37245962-881f-4c11-a2d4-d23017595439", "befores": [{"name": "update_key", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601069}
\ No newline at end of file
{"uuid": "f8a2a1cd-6c17-47bb-a666-c2e99b6c7d14", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585369}
\ No newline at end of file
{"uuid": "203c28f8-ca97-440a-b420-3b14a3a49fbc", "befores": [{"name": "case_url", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601034}
\ No newline at end of file
{"uuid": "ca6e7857-b560-4647-a6d3-fceb4c197047", "befores": [{"name": "case_data", "status": "passed", "start": 1721034586385, "stop": 1721034586385}], "start": 1721034586385, "stop": 1721034586426}
\ No newline at end of file
{"uuid": "f304d5cd-f896-4884-adbd-a80b96c25e02", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584081}
\ No newline at end of file
{"uuid": "4c669b5b-033a-42b0-a4a8-49201925d987", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584125, "stop": 1721034584318}
\ No newline at end of file
{"uuid": "2a90f665-44cf-456f-a4fd-7ee6097ad856", "befores": [{"name": "api_name", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601276}
\ No newline at end of file
{"uuid": "d3a6516b-e689-44c2-bd51-3a3fa28cb31d", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601033}
\ No newline at end of file
{"uuid": "ffc84855-00cb-4348-b9cc-e3f8a744b9c2", "befores": [{"name": "case_method", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600716}
\ No newline at end of file
{"uuid": "ccb40ee2-1e62-46c2-97f1-121952ff0774", "befores": [{"name": "case_method", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589676}
\ No newline at end of file
{"uuid": "5fbab0ee-9425-4a9a-b050-5db52a45a38c", "befores": [{"name": "case_url", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594064}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "1c4986bb-0226-4c15-a2ee-032581d4c410-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "9d093b5f-f707-4c5a-8e27-fcb5962559ee-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码为空'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034584127, "stop": 1721034584153, "uuid": "03af75e1-fd96-40dd-b9fd-b2742831f454", "historyId": "f640363898931f48a2631389cf661c1a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x00000203D7DEBC00>('state')\nE + where <built-in method get of dict object at 0x00000203D7DEBC00> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...UsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "4e8119c8-3164-41f3-a95a-c55ca852c895-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "de81a7df-31d2-451a-a343-f545c4b690df-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过短'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034593970, "stop": 1721034594009, "uuid": "25a13bdd-a691-426d-926b-3f6689bba9a2", "historyId": "423b926d9c9c8e8a56af3847b1819589", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "6111fd48-d4a2-4162-a32d-371016eebd83", "befores": [{"name": "update_key", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587481}
\ No newline at end of file
{"uuid": "1299db30-a8cc-4215-8604-026f4ddaae26", "befores": [{"name": "case_data", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584127, "stop": 1721034584317}
\ No newline at end of file
{"uuid": "906713e2-d700-427c-9c58-c5346c46a7af", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597311}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776382011908096\"}", "trace": "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":false,\"message\":\"\",\"code\":200,\"logId\":\"1812776382011908096\"}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError"}, "attachments": [{"name": "log", "source": "2f03a15c-c464-4b27-a9ca-84d126b8ce5f-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "7574fc44-8718-49dc-933d-1a99ada41894-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776376546729984'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034602305, "stop": 1721034602326, "uuid": "efa56a97-4ba0-424c-b866-abe445d2054c", "historyId": "f0328bee4933587079c3de404b5dc1cd", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "f9eca4c3-5e8f-439e-8f9d-e6ec7703aeab", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599619, "stop": 1721034599658}
\ No newline at end of file
{"uuid": "30acc4cc-76f0-4e26-85fc-984058aaff32", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594064}
\ No newline at end of file
{"uuid": "6b189653-1ee7-4bf5-813a-db892503f5cf", "befores": [{"name": "case_data", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603396}
\ No newline at end of file
{"uuid": "7ba3d108-c3d9-44a3-96cb-bb9e77ca0601", "befores": [{"name": "level", "status": "passed", "start": 1721034585330, "stop": 1721034585331}], "start": 1721034585330, "stop": 1721034585370}
\ No newline at end of file
{"uuid": "41e4130d-fcd9-491e-aa88-0feec38670ab", "befores": [{"name": "module_name", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601221}
\ No newline at end of file
{"uuid": "d150a678-fd6a-4f36-a1c6-755bd16a837a", "befores": [{"name": "case_data", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589675}
\ No newline at end of file
{"uuid": "98b7dd9c-5e6e-416d-81d2-a16a159962f8", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598605}
\ No newline at end of file
{"uuid": "f1b811d3-8a4e-47c7-b4d3-77317dd5c63b", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599618, "stop": 1721034599659}
\ No newline at end of file
{"uuid": "d93e2e5d-870d-4e79-93a0-a7bbc1624ad3", "befores": [{"name": "case_data", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601274}
\ No newline at end of file
{"uuid": "ef9bec1a-7b18-4f8a-8e80-fe352714729d", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584040}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "3841441a-5563-467f-ba12-aaf9d5c1c50f-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "c58087a7-9a68-4a5c-8636-d0c2ed3ff1a1-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776360943919104'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034599619, "stop": 1721034599649, "uuid": "be4ed7ca-abac-4fab-b918-1e3927022be7", "historyId": "b1880520415454889e175a38974c597e", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776305788821504"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776310842957824"}
PUT http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem query {'code': 'test_dem_xyz_123'} {'message': '设置默认维度成功!'} None None None
{"state":true,"message":"设置默认维度成功!","value":"","code":200}
断言成功
post http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams query|json {'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]} {'state': True, 'message': '保存组织参数成功!'} None None None
{"state":true,"message":"保存组织参数成功!","value":"","code":200}
断言成功
{"uuid": "ac72ae73-1b92-4891-8ed8-80d9d0849029", "befores": [{"name": "level", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584006}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812776305310670848"}
断言成功
{"uuid": "d7a11b20-5fe7-4c47-a6a4-cfd22f00cb97", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604460}
\ No newline at end of file
{"uuid": "ea5f8f3a-57c0-4f71-9465-113ebfe81721", "befores": [{"name": "level", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584319}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}", "trace": "self = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_lao_zhang\\test_case.py:62: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_lao_zhang.test_case.TestBPM object at 0x00000203D7D7C0D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7E8DA00>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7EEB9D0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776376546729984'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-张三\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n # log.error(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\n # raise AssertionError(\"断言失败,描述失败的原因\")\n> raise AssertionError(f\"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}\")\nE AssertionError: 断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{\"state\":true,\"message\":\"删除维度成功!\",\"value\":\"\",\"code\":200}\n\ntest_case\\test_lao_zhang\\test_case.py:66: AssertionError"}, "attachments": [{"name": "log", "source": "bc77df80-b032-412c-adf2-3f929c1598f3-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "6706b992-195e-4176-b375-34e630870cfe-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034601226, "stop": 1721034601261, "uuid": "4538665b-b0ff-4a86-8398-4c997083e688", "historyId": "f0328bee4933587079c3de404b5dc1cd", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "44a34f8b-9f8c-404c-8d49-1b81c94e9b20", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591879}
\ No newline at end of file
{"uuid": "f1c34de9-237e-4ac1-83a6-cf4a7a28eaa6", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587481}
\ No newline at end of file
{"uuid": "21b8cc32-124a-4f32-b52f-cf2412378b9c", "befores": [{"name": "case_data", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594064}
\ No newline at end of file
{"uuid": "4b4e345d-e5ab-4cf5-bc8a-0f8f1ad30cb4", "befores": [{"name": "case_method", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601220}
\ No newline at end of file
{"uuid": "7ca8a573-936c-4132-8010-52ea0236e5e6", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034601138, "stop": 1721034601138}], "start": 1721034601138, "stop": 1721034601175}
\ No newline at end of file
{"uuid": "cee4154e-795c-4883-ad82-18b0bb2fa02b", "befores": [{"name": "case_data", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587542}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776305788821504"}
{"uuid": "4f6eff25-7ddb-4f3f-911d-3d736b693e33", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597269}
\ No newline at end of file
{"uuid": "3e7e891b-9968-4903-9642-2be477e8d940", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597413}
\ No newline at end of file
{"name": "反向用例-用户名为特殊字符-密码正确", "status": "passed", "attachments": [{"name": "log", "source": "ba4a1423-20e0-400e-9faa-4b53d38fb042-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "d2a97cc1-96f6-45ac-9937-f51b07684d34-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名为特殊字符-密码正确'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034584090, "stop": 1721034584118, "uuid": "b9670b8d-3df3-4e65-b3af-18336985f6be", "historyId": "84712d074d431df54c5e53fe70699f96", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "cdf79853-fc09-4baa-b821-6cb785deb960", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601033}
\ No newline at end of file
{"uuid": "6a6a4c31-5fa3-460f-a52f-c7de630c88d5", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584004}
\ No newline at end of file
{"uuid": "185c9aab-4915-4bcf-b593-561d670e877d", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601220}
\ No newline at end of file
{"uuid": "f414876a-3cc4-43b7-8abd-cb5d0760c718", "befores": [{"name": "module_name", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604464}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776360943919104 HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "8862b5b6-492f-495e-8c41-b9ac1ed430fa", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597485}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000203D7EAED40>('message')\nE + where <built-in method get of dict object at 0x00000203D7EAED40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDUzNn0.DY-ZBzr8K_Bb2KVq-ZyL2z9N6qXw4Jday3dIFbQalfdU0ur0gO3yuvFSLlJb7J9VqPw13FGiGTn755SgvJJikA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...YsImlhdCI6MTcyMTAzNDUzNn0.DY-ZBzr8K_Bb2KVq-ZyL2z9N6qXw4Jday3dIFbQalfdU0ur0gO3yuvFSLlJb7J9VqPw13FGiGTn755SgvJJikA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "d21e7db7-3ac9-4caf-8ff7-a31ca47ae3d3-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "fad84ff8-731c-410a-b3f4-5a1123822065-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'GET'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034595076, "stop": 1721034595097, "uuid": "10efdd30-6897-42c1-8b71-3d1a162fcdbe", "historyId": "0726b7ece66163239f4822447c1bd114", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "8dd724a8-2060-4246-9d89-c98943c3436c", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603395}
\ No newline at end of file
{"uuid": "5ac1603f-0721-4050-a300-f4383f94c72a", "befores": [{"name": "case_data", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596223}
\ No newline at end of file
{"uuid": "651ded3b-100a-4429-95ad-c26f55f414ff", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597269}
\ No newline at end of file
{"uuid": "40fb1799-7f3a-47ee-8973-405dadb0803c", "befores": [{"name": "api_name", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599662}
\ No newline at end of file
{"uuid": "ed9538a4-a91a-4551-b16f-0cc34ba13c9d", "befores": [{"name": "case_method", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598554, "stop": 1721034598606}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
{"uuid": "6650c9f2-9cb5-4059-8928-3f7229864fc0", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597344}
\ No newline at end of file
{"uuid": "4e51594e-938d-4064-817f-5ee807d0b636", "befores": [{"name": "case_title", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592950}
\ No newline at end of file
{"uuid": "dacdb7bc-e900-4d82-b1b0-b1f9c636e7c2", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598604}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776305788821504"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776310842957824"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': ''} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776315267948544"}
{"uuid": "9c6cd214-6d23-4449-9038-d69c211bc7d7", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597538}
\ No newline at end of file
{"uuid": "2c5d556d-597b-4516-8e35-282cf63ac4f7", "befores": [{"name": "case_data", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601218}
\ No newline at end of file
{"uuid": "e3aa4a6c-a648-43f3-9b8f-61036fc8c278", "befores": [{"name": "level", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601177}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == '删除维度成功!'\nE \nE - 删除维度成功!\nE ? -\nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "4146a0e6-d7cf-4be1-9328-0f33a597d5b4-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "21c58e08-4fc7-470c-ad54-6d98edd8f731-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '需要更新'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034597495, "stop": 1721034597526, "uuid": "8b96b081-1ba0-4ccf-8c2f-0ae89cdaca21", "historyId": "b1880520415454889e175a38974c597e", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "56118773-c4be-46a1-9002-2e63034b54c9", "befores": [{"name": "case_title", "status": "passed", "start": 1721034588563, "stop": 1721034588563}], "start": 1721034588563, "stop": 1721034588613}
\ No newline at end of file
{"uuid": "b164df6a-09d3-4118-ad0f-540755b43d05", "befores": [{"name": "case_data", "status": "passed", "start": 1721034600865, "stop": 1721034600865}], "start": 1721034600865, "stop": 1721034600887}
\ No newline at end of file
{"uuid": "4e8d5edb-5f84-41f3-b525-0b259505382a", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597413}
\ No newline at end of file
{"uuid": "385fb83a-dc16-4404-a1eb-cc15622eeb8a", "befores": [{"name": "api_name", "status": "passed", "start": 1721034601040, "stop": 1721034601041}], "start": 1721034601040, "stop": 1721034601073}
\ No newline at end of file
{"uuid": "7470e1e8-52bd-450f-a941-ed068372a162", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601129}
\ No newline at end of file
{"uuid": "fa84ce32-f088-4442-a8cc-7b6614624262", "befores": [{"name": "level", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587555}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data1-expect_data1-反向用例1] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?code= HTTP/11" 500 None
\ No newline at end of file
{"uuid": "693de477-e82b-4ce9-ac27-b8bdf1856230", "befores": [{"name": "case_title", "status": "passed", "start": 1721034591833, "stop": 1721034591834}], "start": 1721034591833, "stop": 1721034591880}
\ No newline at end of file
{"uuid": "f9939f6f-bb07-4a04-9f79-4adcc4050d12", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584119}
\ No newline at end of file
{"uuid": "726ee19f-46da-440b-b75d-91cff49d444e", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584004}
\ No newline at end of file
{"uuid": "56e01571-e38d-4374-814d-73ce99c0c49d", "befores": [{"name": "level", "status": "passed", "start": 1721034593969, "stop": 1721034593969}], "start": 1721034593969, "stop": 1721034594021}
\ No newline at end of file
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzUsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
{"uuid": "52030bf5-37df-4ae0-b06b-0875fe5ba60a", "befores": [{"name": "case_method", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584083}
\ No newline at end of file
{"uuid": "0a4304c2-1693-4db1-b2dc-1d5dec8d9dac", "befores": [{"name": "case_url", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586428}
\ No newline at end of file
{"uuid": "91d70ee5-fae7-4518-bc10-23d2c5e6994f", "befores": [{"name": "case_method", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587543}
\ No newline at end of file
{"uuid": "5b598a6b-f1ff-40b2-be9a-46ac39469590", "befores": [{"name": "api_name", "status": "passed", "start": 1721034598554, "stop": 1721034598554}], "start": 1721034598554, "stop": 1721034598607}
\ No newline at end of file
{"uuid": "bf7448d6-dc40-47f7-a362-36873b2e163d", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597449}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '刷新成功' == None\nE + where None = <built-in method get of dict object at 0x00000203D7ECDE40>('message')\nE + where <built-in method get of dict object at 0x00000203D7ECDE40> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...gsImlhdCI6MTcyMTAzNDUzOH0.U7gcrqu0zhrKsKGgIeNUm_zV57END02ZC0iYMOjkdSbOx5N8SyAT-xqH1VzcOqUznv0IMvn5QC6G6ZhoT5JJIA', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...gsImlhdCI6MTcyMTAzNDUzOH0.U7gcrqu0zhrKsKGgIeNUm_zV57END02ZC0iYMOjkdSbOx5N8SyAT-xqH1VzcOqUznv0IMvn5QC6G6ZhoT5JJIA', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79190>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '刷新token', level = '高'\ncase_title = '正向用例', case_method = 'GET', case_url = 'http://36.139.193.99:8088/refresh', case_mime = None, case_data = None\nexpect_data = {'message': '刷新成功'}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "2b6fb794-db6e-47e5-b773-36dc70031a62-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "b3d20605-9315-4fa9-a8db-5dc3bdcb4434-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'GET'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/refresh'"}, {"name": "case_mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034597236, "stop": 1721034597257, "uuid": "a90245f1-8d9d-4861-b729-f20edeaaacd4", "historyId": "0726b7ece66163239f4822447c1bd114", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "刷新token"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "39c031ee-0361-418e-95a0-a61da0921b70", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597415}
\ No newline at end of file
{"uuid": "3393f18b-e97e-4ece-ad84-d35af148c17f", "befores": [{"name": "case_url", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601220}
\ No newline at end of file
PUT http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem query {'code': 'test_dem_xyz_123'} {'message': '设置默认维度成功!'} None None None
{"state":true,"message":"设置默认维度成功!","value":"","code":200}
断言成功
{"uuid": "c79a3c5c-2496-41b1-8e3c-4d076583a4fd", "befores": [{"name": "level", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601275}
\ No newline at end of file
{"uuid": "09cb51e7-c0e3-45e5-ba39-c79551aba659", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034596130, "stop": 1721034596130}], "start": 1721034596130, "stop": 1721034596222}
\ No newline at end of file
{"uuid": "07f7ce93-f634-4173-8f26-9331fafe7381", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034598555, "stop": 1721034598555}], "start": 1721034598555, "stop": 1721034598604}
\ No newline at end of file
{"uuid": "83a8c179-ede7-43fb-a34a-168c244eae29", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587541}
\ No newline at end of file
{"uuid": "be36015e-9a9b-482e-b3dd-e10a8428525f", "befores": [{"name": "module_name", "status": "passed", "start": 1721034601075, "stop": 1721034601077}], "start": 1721034601075, "stop": 1721034601133}
\ No newline at end of file
{"uuid": "4ca20a63-af52-4504-ab3b-0ef1a9b9e649", "befores": [{"name": "level", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599660}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776382011908096"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776386449481728"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776376546729984'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776390916415488"}
{"uuid": "6addb0d1-157e-44ca-a158-7f8e2038fecc", "befores": [{"name": "module_name", "status": "passed", "start": 1721034587436, "stop": 1721034587436}], "start": 1721034587436, "stop": 1721034587486}
\ No newline at end of file
{"uuid": "967475bf-29d4-438a-8abd-64aae1c4a325", "befores": [{"name": "case_url", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596223}
\ No newline at end of file
{"uuid": "ad88868f-2590-4a02-a8d2-46c8a2b8092e", "befores": [{"name": "case_title", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584318}
\ No newline at end of file
{"uuid": "37ef68c5-bda1-49e7-bb1c-d1f981344c11", "befores": [{"name": "module_name", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586429}
\ No newline at end of file
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzUsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzYsImlhdCI6MTcyMTAzNDUzNn0.DY-ZBzr8K_Bb2KVq-ZyL2z9N6qXw4Jday3dIFbQalfdU0ur0gO3yuvFSLlJb7J9VqPw13FGiGTn755SgvJJikA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzcsImlhdCI6MTcyMTAzNDUzN30.zkgRxYc1ZSTXBzUlR1fDosGafOqytm5L0ZR7nZa7QXfuBl-xiPMLsJbCd_AhLh7AgQzbDDwlUjxL0XijsDh7tA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzgsImlhdCI6MTcyMTAzNDUzOH0.U7gcrqu0zhrKsKGgIeNUm_zV57END02ZC0iYMOjkdSbOx5N8SyAT-xqH1VzcOqUznv0IMvn5QC6G6ZhoT5JJIA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
{"uuid": "f2137a29-11b5-4bd2-8ac0-61c06299eac8", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597342}
\ No newline at end of file
{"uuid": "15fa07f8-bc75-4dc8-a03a-c1fc76da4f3b", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597494, "stop": 1721034597494}], "start": 1721034597494, "stop": 1721034597540}
\ No newline at end of file
{"uuid": "b487ca61-8ac3-4e35-87ff-9a8cd56e3894", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595107}
\ No newline at end of file
{"uuid": "162162e7-4898-4dae-98e1-81a5cc48ad36", "befores": [{"name": "update_key", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594062}
\ No newline at end of file
{"uuid": "e92925ac-c7fe-44c9-846a-e7806329b0b0", "befores": [{"name": "level", "status": "passed", "start": 1721034598554, "stop": 1721034598554}], "start": 1721034598554, "stop": 1721034598606}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
\ No newline at end of file
{"uuid": "ea920c5b-9fcd-46b7-be70-196123b56b92", "befores": [{"name": "level", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595109}
\ No newline at end of file
{"uuid": "a2955ecc-0e8d-43ff-aa15-6d8924732be1", "befores": [{"name": "case_method", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584318}
\ No newline at end of file
{"uuid": "f17325de-2a12-4bbc-b8a1-84c07a6b448f", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597487}
\ No newline at end of file
{"uuid": "9623533a-c5c6-44d8-90df-ea1dd35e97e9", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583974}
\ No newline at end of file
{"uuid": "20c81891-48f0-4fbf-9d59-cf651c0d173f", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597486}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_add_dem in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_login succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1812776376546729984 HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19报错,错误为:断言失败, 用例数据为:{'ids': '1812776376546729984'}, 期望数据为:{'message': '删除维度成功'}, 服务器返回的数据为:{"state":true,"message":"删除维度成功!","value":"","code":200}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzIsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
{"uuid": "4f68e265-8572-494f-8e64-2cf661aac4bf", "befores": [{"name": "case_url", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601131}
\ No newline at end of file
{"uuid": "5d514700-a5e8-4cd7-9e42-6ab32df07a66", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597316, "stop": 1721034597316}], "start": 1721034597316, "stop": 1721034597347}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过长", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63FD0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过长', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '1', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "42694659-b8cf-49d7-bde0-a1a701c0b46f-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "e63d6011-a312-4f7c-9a66-f0452a1b2bee-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过长'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034589631, "stop": 1721034589665, "uuid": "fd5e42f7-b98a-4152-8da8-295efd258d0b", "historyId": "63bcb2c305b7f0bcb7fd2d55d671e0a6", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "3ecbf130-b3d8-4a35-a242-2a4c5d771533", "befores": [{"name": "case_data", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594020}
\ No newline at end of file
{"uuid": "d966a275-3a87-4293-908d-63af9c8cb746", "befores": [{"name": "module_name", "status": "passed", "start": 1721034591833, "stop": 1721034591833}], "start": 1721034591833, "stop": 1721034591881}
\ No newline at end of file
{"uuid": "6e169548-0dcc-4888-a8bb-5d6fcfc1d91e", "befores": [{"name": "case_data", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584042}
\ No newline at end of file
{"uuid": "536af7ff-a574-4a0b-905a-ed89e138623d", "befores": [{"name": "case_title", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585370}
\ No newline at end of file
{"uuid": "950f32df-12e5-45d2-9f3e-9c8dbb828c22", "befores": [{"name": "update_key", "status": "passed", "start": 1721034591834, "stop": 1721034591834}], "start": 1721034591834, "stop": 1721034591877}
\ No newline at end of file
{"uuid": "e3afd8aa-253f-4fdd-a8b1-ba996a627ee9", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597265}
\ No newline at end of file
{"uuid": "08e4d1a6-b52b-4953-b462-9c2a845026e6", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602338}
\ No newline at end of file
{"uuid": "e19b9cef-cf10-4fe6-8ba9-8e9c97155222", "befores": [{"name": "update_key", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601031}
\ No newline at end of file
{"uuid": "b2420512-e634-4980-a2e8-1397afd0e6d0", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597447}
\ No newline at end of file
{"uuid": "f46c9e54-0667-4820-aea1-99ccdbfa840e", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587481}
\ No newline at end of file
{"name": "bpm-场景测试-添加维度-正向", "status": "passed", "attachments": [{"name": "log", "source": "bbb52858-4614-48b0-ba21-f58f5a185cf9-attachment.txt", "type": "text/plain"}], "start": 1721034600781, "stop": 1721034600828, "uuid": "aac81012-fc8b-4e5c-bba6-588dd9c6e9e0", "historyId": "128da70acc78e495205cae38c86a3095", "testCaseId": "128da70acc78e495205cae38c86a3095", "fullName": "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_add_dem", "labels": [{"name": "epic", "value": "bpm-场景测试"}, {"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "tag", "value": "dependency(depends=['TestBPM::test_login'])"}, {"name": "parentSuite", "value": "test_case.test_bpm_dependency"}, {"name": "suite", "value": "test_pytest_decorator"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm_dependency.test_pytest_decorator"}]}
\ No newline at end of file
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776366333599744"}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776370771173376"}
{"uuid": "65f7a18a-b535-4a21-952a-bb6b834688ee", "befores": [{"name": "case_title", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603398}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x00000203D7DEB800>('state')\nE + where <built-in method get of dict object at 0x00000203D7DEB800> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDUzM30.SqAWrztyPxfay5i2OdcjSuCtztadhco-CGEHS4gYd7ZjGPPxwX6Si0OLn25FzD5plH2WFib6N7NdqQEnx0Cv9Q', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...MsImlhdCI6MTcyMTAzNDUzM30.SqAWrztyPxfay5i2OdcjSuCtztadhco-CGEHS4gYd7ZjGPPxwX6Si0OLn25FzD5plH2WFib6N7NdqQEnx0Cv9Q', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "ff1a2854-5d41-4fc8-9edf-338055c24243-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "ead68264-4cb1-4ab9-b557-6561aef8b646-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过短'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034591834, "stop": 1721034591869, "uuid": "52c52622-860d-44d6-90ce-2bde77d3294e", "historyId": "423b926d9c9c8e8a56af3847b1819589", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "9b42f213-aa40-416d-94b4-3f13ef2d15dc", "befores": [{"name": "case_title", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584005}
\ No newline at end of file
{"uuid": "94a5f3ec-9526-4ea1-a8af-1baf16705243", "befores": [{"name": "case_data", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590737}
\ No newline at end of file
{"uuid": "c8377853-0a95-4940-8e02-fe2c54c362a8", "befores": [{"name": "case_url", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584121}
\ No newline at end of file
{"uuid": "c932cea6-3073-4d71-bdac-221501179460", "befores": [{"name": "case_url", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590803}
\ No newline at end of file
{"uuid": "817a41dc-da1f-4436-ab4d-59d65efd6ef3", "befores": [{"name": "case_method", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590740}
\ No newline at end of file
{"uuid": "d12ac831-ad6c-4655-8e66-49237fe7608a", "befores": [{"name": "api_name", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597451}
\ No newline at end of file
{"uuid": "893c84e6-fdb6-4220-b52d-b247e001421d", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597494, "stop": 1721034597494}], "start": 1721034597494, "stop": 1721034597540}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "0218b602-3581-482e-9c01-0628f1574ccf-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "9802445a-3247-4e90-97d7-416609fb954f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'设置默认维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'PUT'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/setDefaultDem'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'test_dem_xyz_123'}"}, {"name": "expect_data", "value": "{'message': '设置默认维度成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034597317, "stop": 1721034597342, "uuid": "1ab7a0e1-62ae-411f-b04b-d3ca2c436e5a", "historyId": "ab9675ee712bd87eed823fadbd2abe6a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "设置默认维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "f58b0e40-deb1-494a-ac24-e7f95370b994", "befores": [{"name": "api_name", "status": "passed", "start": 1721034600988, "stop": 1721034600988}], "start": 1721034600988, "stop": 1721034601036}
\ No newline at end of file
{"uuid": "e9550fcc-9616-4d4d-9e1c-de91e1bb701d", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596223}
\ No newline at end of file
{"uuid": "9ed18b42-cf62-46db-a6f5-83b7c582d193", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597266}
\ No newline at end of file
{"uuid": "6dafb5bb-9272-43a3-baa1-f26b31d23374", "befores": [{"name": "case_data", "status": "passed", "start": 1721034585331, "stop": 1721034585331}], "start": 1721034585331, "stop": 1721034585368}
\ No newline at end of file
{"uuid": "4fefe6cf-5c36-488b-b2a0-4014640af91f", "befores": [{"name": "case_title", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584083}
\ No newline at end of file
{"uuid": "0218ba04-0f10-4fd2-b61c-80a3665bf9d0", "befores": [{"name": "case_method", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596224}
\ No newline at end of file
{"uuid": "79fffbae-3346-4e01-940e-563283c21e25", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034600833, "stop": 1721034600833}], "start": 1721034600833, "stop": 1721034600860}
\ No newline at end of file
{"uuid": "bb059f35-7e3d-4904-9ec2-90619f01adbf", "befores": [{"name": "case_data", "status": "passed", "start": 1721034600891, "stop": 1721034600891}], "start": 1721034600891, "stop": 1721034600913}
\ No newline at end of file
{"uuid": "0437c6d0-7d47-4f86-8c82-2a7cc6ee920a", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589674}
\ No newline at end of file
{"uuid": "70116bc4-2c45-43d3-be06-fb95755dd43f", "befores": [{"name": "module_name", "status": "passed", "start": 1721034588563, "stop": 1721034588563}], "start": 1721034588563, "stop": 1721034588613}
\ No newline at end of file
{"uuid": "6f6b5d9b-61bc-4a01-a714-3eda4a115b60", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597310}
\ No newline at end of file
{"uuid": "0157128e-05be-4d98-a88a-8a83feb566eb", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597316, "stop": 1721034597316}], "start": 1721034597316, "stop": 1721034597346}
\ No newline at end of file
{"uuid": "1d832fc6-d826-4243-a947-54fbb6bcbd24", "befores": [{"name": "update_key", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590736}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "d7ebe364-60f0-4a79-ba01-f89b36ac2c90-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "dfa3702a-cb02-4624-8e9a-901d28d15c91-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "None"}], "start": 1721034600991, "stop": 1721034601031, "uuid": "a00cec9e-4128-45c0-abdf-685cafd7eda5", "historyId": "66a9541ee6ddd173bc3735e2e4285b95", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "8761875b-1a45-40b4-89e0-f63d778511a6", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034584010, "stop": 1721034584010}], "start": 1721034584010, "stop": 1721034584040}
\ No newline at end of file
{"uuid": "bc3fe896-c90c-4b17-9632-d35f688fddbd", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590737}
\ No newline at end of file
{"uuid": "06fa0452-ffe0-4eb6-944b-f30234718765", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597268}
\ No newline at end of file
{"uuid": "b2c7bef8-bf66-4950-8da9-273bcea39d45", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597311}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg[case_data0-expect_data0-正向用例] in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... TestBPM::test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /api/demension/v1/dem/getDem?code=BlMIcVhzeOHa HTTP/11" 200 None
\ No newline at end of file
{"uuid": "0cd3f27e-b14e-4866-8880-6cc8e49d0b52", "befores": [{"name": "case_url", "status": "passed", "start": 1721034587436, "stop": 1721034587437}], "start": 1721034587436, "stop": 1721034587482}
\ No newline at end of file
{"uuid": "c828f1ac-f62d-4fca-8936-7159335a052c", "befores": [{"name": "case_url", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590739}
\ No newline at end of file
{"uuid": "468108e6-3cab-46b7-87fa-536292016f97", "befores": [{"name": "level", "status": "passed", "start": 1721034597351, "stop": 1721034597351}], "start": 1721034597351, "stop": 1721034597415}
\ No newline at end of file
{"uuid": "3a498611-42ba-42e1-8ffe-4d44900883e6", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597453, "stop": 1721034597454}], "start": 1721034597453, "stop": 1721034597488}
\ No newline at end of file
{"uuid": "d08cf9ff-1daa-47b7-9b66-dd1ce1865c77", "befores": [{"name": "case_url", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597539}
\ No newline at end of file
{"uuid": "72c99417-7c2d-4082-9714-bddf3b7acfaa", "befores": [{"name": "level", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601072}
\ No newline at end of file
{"uuid": "b1b94ce6-cbc7-4d2c-a574-7561af715018", "befores": [{"name": "module_name", "status": "passed", "start": 1721034584125, "stop": 1721034584125}], "start": 1721034584125, "stop": 1721034584321}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "GET /refresh HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': '♡♣♤♥♦♧♨♩ε', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812776305646215168"}
断言成功
{"uuid": "7d87efe3-c612-4fb0-97df-c1aab7f7ec2c", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601129}
\ No newline at end of file
{"uuid": "6645a9b3-9bd1-46a1-8d57-bb2ff6d9a3c5", "befores": [{"name": "case_title", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596224}
\ No newline at end of file
{"uuid": "14f88d56-217d-4536-bc38-96ae943f0956", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602338}
\ No newline at end of file
{"uuid": "43f725fb-9bd4-4e79-85f0-a7366c351edf", "befores": [{"name": "case_url", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601071}
\ No newline at end of file
{"uuid": "2f624416-7e82-4de6-9d8f-9750cc619acb", "befores": [{"name": "case_title", "status": "passed", "start": 1721034587436, "stop": 1721034587436}], "start": 1721034587436, "stop": 1721034587484}
\ No newline at end of file
{"uuid": "4ec69b39-6e9a-4d7f-8683-2f2265cb559b", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587542}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账户错误或该租户未启用","code":200,"logId":"1812776305151287296"}
断言成功
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/org/v1/org/addOrg HTTP/11" 200 None
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 500 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"name": "反向用例1", "status": "passed", "attachments": [{"name": "log", "source": "a5a1bc6c-f854-4e37-8b8e-17339edadf55-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "ccc65a35-3f19-4473-8132-b54adf00ebee-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "case_data", "value": "{'code': ''}"}, {"name": "expect_data", "value": "{'message': '必填:code维度编码必填!'}"}, {"name": "title", "value": "'反向用例1'"}], "start": 1721034600866, "stop": 1721034600886, "uuid": "a003f455-de2b-44cb-b743-074120e943d1", "historyId": "8b5c6ab7c7d5d427ca8434dcfe2f2220", "testCaseId": "2d43949fe9fc94a14d91b8791ac4ed5c", "fullName": "test_case.test_bpm_dependency.test_pytest_decorator.TestBPM#test_get_dem_msg", "labels": [{"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "epic", "value": "bpm-场景测试"}, {"name": "feature", "value": "维度管理"}, {"name": "tag", "value": "dependency(depends=['TestBPM::test_add_dem'])"}, {"name": "parentSuite", "value": "test_case.test_bpm_dependency"}, {"name": "suite", "value": "test_pytest_decorator"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_bpm_dependency.test_pytest_decorator"}]}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:243 Starting new HTTP connection (1): 36.139.193.99:8088
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /api/demension/v1/dem/addDem HTTP/11" 200 None
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "4e3c3ccf-20e2-4565-b461-0b1026d996c5-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "5787a99a-4aa0-4c37-8a19-9a04f198fc53-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'保存组织参数'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"}, {"name": "case_mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034601138, "stop": 1721034601174, "uuid": "882294a5-7052-4113-8092-cb9112f399a2", "historyId": "a846fa27705c7e18d3cf0d1b13ce62eb", "testCaseId": "b91673cbc3de68b5b5a4aeead5d4b8aa", "fullName": "test_case.test_lao_zhang.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "保存组织参数"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-张三"}, {"name": "parentSuite", "value": "test_case.test_lao_zhang"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_lao_zhang.test_case"}]}
\ No newline at end of file
{"uuid": "d1a39caf-1379-4c41-9c4d-734f1073703d", "befores": [{"name": "level", "status": "passed", "start": 1721034597316, "stop": 1721034597316}], "start": 1721034597316, "stop": 1721034597347}
\ No newline at end of file
{"uuid": "2bdb2871-c08b-4f61-8be3-581765fb05b2", "befores": [{"name": "case_data", "status": "passed", "start": 1721034600833, "stop": 1721034600833}], "start": 1721034600833, "stop": 1721034600861}
\ No newline at end of file
{"uuid": "9637484e-dce1-47bd-b3c8-731dda2c8727", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589675}
\ No newline at end of file
{"uuid": "bfdf5e4e-b379-482a-8c23-7e212b7c797d", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034599619, "stop": 1721034599619}], "start": 1721034599619, "stop": 1721034599658}
\ No newline at end of file
{"uuid": "1bc67f47-52e2-4ec5-a827-dd2c12d497b5", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590739}
\ No newline at end of file
{"uuid": "e34a819f-4725-4ae1-b1be-dc1d871468b6", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592947}
\ No newline at end of file
{"uuid": "1b7db2ae-31e8-44a0-8702-487a9f2e8d13", "befores": [{"name": "case_title", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600717}
\ No newline at end of file
{"uuid": "2c36768b-fd98-49a7-bb7d-5053767de90f", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597538}
\ No newline at end of file
{"uuid": "90a66093-9e46-4768-a871-92bb2e8d44fc", "befores": [{"name": "case_title", "status": "passed", "start": 1721034601181, "stop": 1721034601181}], "start": 1721034601181, "stop": 1721034601221}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "47032406-43d6-4bd9-b429-520af9046e6e-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "098ef29e-ac40-4bd9-bc3e-00cb25ec4127-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "level", "value": "'高'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/addDem'"}, {"name": "case_mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功!'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "None"}], "start": 1721034597274, "stop": 1721034597308, "uuid": "438573b2-fae0-4c48-9aba-49070f351893", "historyId": "ccc47dd491dda4f012668830aede7239", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "7735d89e-c035-468b-9b25-9880d58b73e9-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "29544c66-0704-4c7b-b4b3-70974445c5de-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/org/deleteOrg'"}, {"name": "case_mime", "value": "'form'"}, {"name": "case_data", "value": "'test_org'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034597454, "stop": 1721034597484, "uuid": "a63aa4db-cb40-485f-b656-b552114f3f73", "historyId": "817beae3f290f38d2fbd5f74a7b72a55", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码为空", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '账户错误或该租户未启用' == '账号或密码错误'\nE \nE - 账号或密码错误\nE + 账户错误或该租户未启用\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D63D60>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码为空', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': '', 'username': 'admin'}, expect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None\nupdate_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "d6df0d43-5dfd-4f9e-ad6c-2f3f677fe9d9-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "a3b9337d-9f62-4ae9-9c43-db2a7f940f18-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码为空'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_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": 1721034586385, "stop": 1721034586417, "uuid": "a54bafcf-68e9-45a5-af0c-71a1751ed3b3", "historyId": "f640363898931f48a2631389cf661c1a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'username': '超级管理员', 'account': 'admin', 'userId': '1', 'expiration': 86400} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MjUsImlhdCI6MTcyMTAzNDUyNX0.I7FZxXjzADTsZvZVtg3ZyzvkOzRmQuYrbVh-D89FibHI-lbbnfe00Xd7fM64IYs5LwH6B7BZBHwLzxUtrp1TJQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
断言成功
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '需要更新'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":true,"message":"删除维度成功!","value":"","code":200}
DELETE http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds query {'ids': '1812776360943919104'} {'message': '删除维度成功'} select SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; ids
{"state":false,"message":"","code":200,"logId":"1812776366333599744"}
{"uuid": "e0adaf4b-061f-47a5-a063-c32b644f119d", "befores": [{"name": "level", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594066}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776319948791808"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776324440891392"}
{"uuid": "e30589f4-6571-44bf-bbc5-bea4d9e00dff", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584002}
\ No newline at end of file
{"uuid": "75ee0947-c0e8-4d7b-9678-61b37e21e311", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600714}
\ No newline at end of file
{"uuid": "4241ed32-c42a-4097-83d6-e6a805b660f1", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597267}
\ No newline at end of file
{"uuid": "79cf944b-b21b-4aed-9d35-f108f4d666b6", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597274, "stop": 1721034597274}], "start": 1721034597274, "stop": 1721034597311}
\ No newline at end of file
{"uuid": "a9cf15c0-054d-45d5-a045-9b096dfcff45", "befores": [{"name": "case_method", "status": "passed", "start": 1721034593969, "stop": 1721034593969}], "start": 1721034593969, "stop": 1721034594021}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzIsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzMsImlhdCI6MTcyMTAzNDUzM30.SqAWrztyPxfay5i2OdcjSuCtztadhco-CGEHS4gYd7ZjGPPxwX6Si0OLn25FzD5plH2WFib6N7NdqQEnx0Cv9Q","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzQsImlhdCI6MTcyMTAzNDUzNH0.KulD_YVLlpPYa59XmHg4iD8jnK0cot2R_44MgEN5Dv2vcV_D9hnDXB_ymJW0yO6GmWgXnQLuav0GrMPoTC-h8w","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzUsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
{"uuid": "70a9da5a-1ec6-4312-a314-ade5a300ac3c", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594019}
\ No newline at end of file
{"uuid": "ba90bfe7-8348-4990-828f-f7788a84e720", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604460}
\ No newline at end of file
{"uuid": "f77ac0dd-64c1-4a8d-9e9d-b35898562cdc", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601034}
\ No newline at end of file
post http://36.139.193.99:8088/api/demension/v1/dem/addDem json {'code': 'test_dem_xyz_123', 'description': '测试维度', 'isDefault': 0, 'name': 'xyz测试维度'} {'message': '添加维度成功!'} delete DELETE FROM uc_demension WHERE `CODE_`="test_dem_xyz_123"; None
{"state":true,"message":"添加维度成功!","value":"","code":200}
断言成功
{"uuid": "5ae1b6bc-0db7-4b8b-a1ec-d8f2535ee021", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603395}
\ No newline at end of file
{"uuid": "d1c8a764-8d24-4f42-87f6-77e9aa103a4f", "befores": [{"name": "case_title", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589676}
\ No newline at end of file
{"uuid": "d7cea753-047d-4bb7-9499-d5200a06778d", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034590748, "stop": 1721034590748}], "start": 1721034590748, "stop": 1721034590801}
\ No newline at end of file
{"uuid": "b21dfc7a-fc05-4a76-8b43-5151044adccb", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603397}
\ No newline at end of file
{"uuid": "ebd3ba7b-df9e-45d2-9e4e-a02ce410fbf3", "befores": [{"name": "module_name", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584006}
\ No newline at end of file
{"name": "反向用例-用户名为空-密码正确", "status": "passed", "attachments": [{"name": "log", "source": "34cab3f6-4e38-4f94-8511-adbf9683a945-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "d67b385c-01d4-46c6-bc0c-bfb965ec1f46-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名为空-密码正确'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034583981, "stop": 1721034584001, "uuid": "825893a1-3017-409b-a584-3a64f8b75e9b", "historyId": "4a35e629ced594be4e64e255839f5624", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_lao_zhang\test_case.py, 所在的行为:19
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "PUT /api/demension/v1/dem/setDefaultDem?code=test_dem_xyz_123 HTTP/11" 200 None
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "356b774e-23f3-4cf7-8e52-81424f67e708-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "987b7870-4e32-4755-b08c-a3e574ec9bdd-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'保存组织参数'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'post'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/org/v1/orgParam/saveOrgParams'"}, {"name": "case_mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_org'}, 'body': [{'alias': 'sr', 'value': 'dog'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034597419, "stop": 1721034597445, "uuid": "fb713191-6e48-44ee-9d43-d398beb7d629", "historyId": "764d3ad32e20031839427f75fe32737a", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "保存组织参数"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "5359cf69-de5e-42ee-ac76-fc0d71e5a6de", "befores": [{"name": "case_data", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587482}
\ No newline at end of file
{"uuid": "dae2dc5f-3bd5-4762-92ee-a91bf9cc6dfe", "befores": [{"name": "module_name", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599662}
\ No newline at end of file
{"uuid": "77f4433e-2280-4997-a803-d6f84d8e2e91", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584080}
\ No newline at end of file
{"uuid": "d257edeb-d762-4a21-8bc4-a0dbb7ce7f78", "befores": [{"name": "api_name", "status": "passed", "start": 1721034590747, "stop": 1721034590747}], "start": 1721034590747, "stop": 1721034590805}
\ No newline at end of file
{"uuid": "ca4cfb4d-23c8-497f-b372-9ee71bc0f52d", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034589631, "stop": 1721034589631}], "start": 1721034589631, "stop": 1721034589674}
\ No newline at end of file
{"uuid": "9e422237-5bb5-4753-a6a4-4be4af11e997", "befores": [{"name": "api_name", "status": "passed", "start": 1721034590697, "stop": 1721034590697}], "start": 1721034590697, "stop": 1721034590741}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776319948791808"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776324440891392"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776328899436544"}
post http://36.139.193.99:8088/api/org/v1/org/addOrg json {'code': 'test_org', 'demId': '需要更新', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'} {'message': '添加组织成功!'} select|delete {'select': 'SELECT ID_ FROM uc_demension WHERE `CODE_`="test_dem_xyz_123";', 'delete': 'delete from uc_org where CODE_="test_org";'} demId
{"state":true,"message":"添加组织成功!","value":"","code":200}
断言成功
{"uuid": "17d1f8a5-42d2-4e54-84c3-1d9bfedc0378", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034584090, "stop": 1721034584090}], "start": 1721034584090, "stop": 1721034584119}
\ No newline at end of file
{"uuid": "2e0390a5-71c3-4282-b99a-d396c2c8f465", "befores": [{"name": "case_data", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592947}
\ No newline at end of file
{"uuid": "97d4fd43-7038-454d-927f-ae765282a7ad", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584127, "stop": 1721034584317}
\ No newline at end of file
{"uuid": "1cb26cbf-08b7-404a-8ed2-f190d7e0b5fc", "befores": [{"name": "level", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602339}
\ No newline at end of file
{"uuid": "e1729603-6ed0-43bf-87c4-eef35510e270", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596223}
\ No newline at end of file
{"uuid": "a1d405cd-7b23-492f-83be-81f26cd6508d", "befores": [{"name": "level", "status": "passed", "start": 1721034591833, "stop": 1721034591833}], "start": 1721034591833, "stop": 1721034591880}
\ No newline at end of file
{"uuid": "b0de123c-62ec-4abd-96f0-6e90cd57128b", "befores": [{"name": "update_key", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600713}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776319948791808"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776324440891392"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776328899436544"}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': '1'} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"state":false,"message":"账号或密码错误","code":200,"logId":"1812776333366370304"}
{"uuid": "b97c816c-88fd-46a8-8fad-159bdd69da35", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034586385, "stop": 1721034586385}], "start": 1721034586385, "stop": 1721034586426}
\ No newline at end of file
{"uuid": "0b676b34-e8a0-4331-b331-1db90b128949", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034587437, "stop": 1721034587437}], "start": 1721034587437, "stop": 1721034587482}
\ No newline at end of file
{"uuid": "79cd1cc5-3b92-42ec-8bc3-82ca7843a13a", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594062}
\ No newline at end of file
{"uuid": "04b457e8-2d96-4532-8480-c72f9da16208", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034592904, "stop": 1721034592904}], "start": 1721034592904, "stop": 1721034592945}
\ No newline at end of file
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzIsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
POST http://36.139.193.99:8088/auth application/json {'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='} {'state': False, 'message': '账户错误或该租户未启用'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzMsImlhdCI6MTcyMTAzNDUzM30.SqAWrztyPxfay5i2OdcjSuCtztadhco-CGEHS4gYd7ZjGPPxwX6Si0OLn25FzD5plH2WFib6N7NdqQEnx0Cv9Q","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
{"uuid": "899e782c-22d8-4276-b7d7-0d94754c9c49", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588611}
\ No newline at end of file
{"uuid": "e7ba75d9-6ede-4982-af48-282c0d98a0e9", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601071}
\ No newline at end of file
{"uuid": "90e546df-2b79-4920-9fb1-640ccbe9d833", "befores": [{"name": "sql_type", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584127, "stop": 1721034584316}
\ No newline at end of file
{"uuid": "6aa8a4de-aba9-4654-a62d-774f46a07f99", "befores": [{"name": "case_data", "status": "passed", "start": 1721034600671, "stop": 1721034600671}], "start": 1721034600671, "stop": 1721034600715}
\ No newline at end of file
{"uuid": "44bebfe3-7a34-49db-955b-6231c03fac8d", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597268}
\ No newline at end of file
{"uuid": "1a388cb0-38ec-42fd-97bb-b955abc93617", "befores": [{"name": "module_name", "status": "passed", "start": 1721034601040, "stop": 1721034601040}], "start": 1721034601040, "stop": 1721034601073}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert '删除维度成功' == ''\nE \nE + 删除维度成功\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D79610>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '维度管理', api_name = '根据维度编码删除维度', level = '中'\ncase_title = '正向用例', case_method = 'DELETE', case_url = 'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds', case_mime = 'query'\ncase_data = {'ids': '1812776360943919104'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select'\nsql_data = 'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";', update_key = 'ids'\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "a01b287a-ddd8-42ba-9d33-29952abf7285-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "dcdd2902-897f-4774-8e01-f7a7b45df011-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_method", "value": "'DELETE'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/api/demension/v1/dem/deleteDemByIds'"}, {"name": "case_mime", "value": "'query'"}, {"name": "case_data", "value": "{'ids': '1812776360943919104'}"}, {"name": "expect_data", "value": "{'message': '删除维度成功'}"}, {"name": "sql_type", "value": "'select'"}, {"name": "sql_data", "value": "'SELECT ID_ FROM uc_demension WHERE `CODE_`=\"test_dem_xyz_123\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1721034598555, "stop": 1721034598590, "uuid": "32631fde-0f1e-4465-8925-85dc3bbfa377", "historyId": "b1880520415454889e175a38974c597e", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "bbc48e96-2d9b-4425-af7c-06d8c04db557", "befores": [{"name": "case_method", "status": "passed", "start": 1721034599618, "stop": 1721034599618}], "start": 1721034599618, "stop": 1721034599660}
\ No newline at end of file
{"uuid": "80eea6bb-679a-4a3b-95ca-af12dc781ef4", "befores": [{"name": "title", "status": "passed", "start": 1721034600891, "stop": 1721034600891}], "start": 1721034600891, "stop": 1721034600912}
\ No newline at end of file
{"uuid": "c4352aa7-59d3-4292-b46e-e0fdf1972edf", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604462}
\ No newline at end of file
{"uuid": "5709bb64-3c20-4426-b510-d025b068f4df", "befores": [{"name": "level", "status": "passed", "start": 1721034601077, "stop": 1721034601077}], "start": 1721034601077, "stop": 1721034601132}
\ No newline at end of file
{"uuid": "81c15d1d-df25-47fd-bcea-4bf2735e8f1e", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034600891, "stop": 1721034600891}], "start": 1721034600891, "stop": 1721034600913}
\ No newline at end of file
{"uuid": "aa100a29-d26c-48e3-a65a-94a61888f47a", "befores": [{"name": "api_name", "status": "passed", "start": 1721034588563, "stop": 1721034588563}], "start": 1721034588563, "stop": 1721034588613}
\ No newline at end of file
{"uuid": "100b73b9-3ee0-47c5-b37a-7ea14567343c", "befores": [{"name": "case_url", "status": "passed", "start": 1721034584050, "stop": 1721034584050}], "start": 1721034584050, "stop": 1721034584083}
\ No newline at end of file
{"uuid": "f8eff2b1-8471-4237-b2f1-a40e1bea373b", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034597317, "stop": 1721034597317}], "start": 1721034597317, "stop": 1721034597345}
\ No newline at end of file
{"uuid": "7275435b-5dfd-4ac1-9352-b0511b0185db", "befores": [{"name": "update_key", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597535}
\ No newline at end of file
{"uuid": "4a93e2c4-58c5-4673-ae7e-fe8753418b90", "befores": [{"name": "case_method", "status": "passed", "start": 1721034584089, "stop": 1721034584089}], "start": 1721034584089, "stop": 1721034584121}
\ No newline at end of file
{"uuid": "b46c7c0a-6b5e-4350-b066-52b43675de8a", "befores": [{"name": "level", "status": "passed", "start": 1721034604419, "stop": 1721034604419}], "start": 1721034604419, "stop": 1721034604464}
\ No newline at end of file
{"uuid": "bb362c4a-2fb0-49cd-a5b2-8869ab7a5613", "befores": [{"name": "api_name", "status": "passed", "start": 1721034595075, "stop": 1721034595075}], "start": 1721034595075, "stop": 1721034595111}
\ No newline at end of file
{"uuid": "92c9593c-a427-44f5-b83f-c885cd4386dc", "befores": [{"name": "level", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586428}
\ No newline at end of file
{"uuid": "663f1b40-d95b-4272-8d59-3130483c1001", "befores": [{"name": "case_data", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602338}
\ No newline at end of file
{"uuid": "33db05d1-b9f5-44e2-80b6-8566215236ac", "befores": [{"name": "case_title", "status": "passed", "start": 1721034597495, "stop": 1721034597495}], "start": 1721034597495, "stop": 1721034597540}
\ No newline at end of file
{"uuid": "40e21dc0-0385-4317-a403-b946469c39c4", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034586385, "stop": 1721034586385}], "start": 1721034586385, "stop": 1721034586425}
\ No newline at end of file
{"uuid": "96ba7489-a840-4cbc-bae7-f42cf54b1ba4", "befores": [{"name": "update_key", "status": "passed", "start": 1721034587490, "stop": 1721034587490}], "start": 1721034587490, "stop": 1721034587541}
\ No newline at end of file
{"uuid": "5d3d892e-7c4d-4eef-b7f3-ff6409452ffb", "befores": [{"name": "case_data", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601071}
\ No newline at end of file
{"uuid": "83c94d94-96ff-4183-a8d1-84f5e6c8a243", "befores": [{"name": "api_name", "status": "passed", "start": 1721034583981, "stop": 1721034583981}], "start": 1721034583981, "stop": 1721034584006}
\ No newline at end of file
{"uuid": "3d06d8be-6d3f-45cf-be02-100f9b46360c", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601271}
\ No newline at end of file
{"uuid": "528bdbb3-9081-4185-8542-e3787003c815", "befores": [{"name": "case_url", "status": "passed", "start": 1721034583942, "stop": 1721034583942}], "start": 1721034583942, "stop": 1721034583975}
\ No newline at end of file
{"uuid": "9f561bb6-7c69-4a57-a557-4179774ad73b", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601071}
\ No newline at end of file
{"uuid": "26629d6e-a327-41d5-974e-54cf4588a5e0", "befores": [{"name": "level", "status": "passed", "start": 1721034597235, "stop": 1721034597235}], "start": 1721034597235, "stop": 1721034597269}
\ No newline at end of file
{"uuid": "f8d09ede-5442-43bb-9682-972f1d71f490", "befores": [{"name": "case_title", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602339}
\ No newline at end of file
{"uuid": "0de5bbc5-4da6-45f9-883b-7a1479f975e7", "befores": [{"name": "case_title", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601072}
\ No newline at end of file
{"uuid": "8ede65e1-78e8-473f-bf4d-2279f246b2f5", "befores": [{"name": "case_title", "status": "passed", "start": 1721034586384, "stop": 1721034586384}], "start": 1721034586384, "stop": 1721034586428}
\ No newline at end of file
{"uuid": "ef4b0da6-01c1-4fb4-9fcf-787def59046c", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034593970, "stop": 1721034593970}], "start": 1721034593970, "stop": 1721034594020}
\ No newline at end of file
{"uuid": "88ba9c91-f831-4c3c-87e0-c99420e21eb8", "befores": [{"name": "update_key", "status": "passed", "start": 1721034588564, "stop": 1721034588564}], "start": 1721034588564, "stop": 1721034588609}
\ No newline at end of file
{"uuid": "79ad7549-22b6-4496-9b5b-a5f20bd83828", "befores": [{"name": "level", "status": "passed", "start": 1721034588563, "stop": 1721034588563}], "start": 1721034588563, "stop": 1721034588613}
\ No newline at end of file
{"uuid": "4b5e2752-275d-4696-b53b-b9314440e7de", "befores": [{"name": "case_mime", "status": "passed", "start": 1721034601137, "stop": 1721034601137}], "start": 1721034601137, "stop": 1721034601176}
\ No newline at end of file
{"uuid": "b4b082f0-a910-45d7-8b05-e8aff6348642", "befores": [{"name": "case_title", "status": "passed", "start": 1721034600990, "stop": 1721034600990}], "start": 1721034600990, "stop": 1721034601036}
\ No newline at end of file
{"uuid": "0aebf1ce-3e1f-48d1-b0ab-e1651436ca09", "befores": [{"name": "case_data", "status": "passed", "start": 1721034597454, "stop": 1721034597454}], "start": 1721034597454, "stop": 1721034597487}
\ No newline at end of file
{"name": "反向用例-用户名过短-密码正确", "status": "passed", "attachments": [{"name": "log", "source": "a3125c11-8a5d-4b77-add9-76c2c918ddb1-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "996c3b00-b895-4678-a485-a04be8039d0b-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名过短-密码正确'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'a', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034584010, "stop": 1721034584039, "uuid": "dce93a4d-8a1f-49b1-9d6d-fe1478aa3b99", "historyId": "c75e95c5293a2f59a8de238e57454e2c", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
{"uuid": "24660ffd-5287-4734-b8c5-1f7ee959905b", "befores": [{"name": "module_name", "status": "passed", "start": 1721034597418, "stop": 1721034597418}], "start": 1721034597418, "stop": 1721034597451}
\ No newline at end of file
{"uuid": "b33bf5f6-a627-4f62-8445-c47c7d6087db", "befores": [{"name": "case_url", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603397}
\ No newline at end of file
{"uuid": "f0c9a3b3-d9d2-4110-9f56-d2a513fa6dc8", "befores": [{"name": "case_method", "status": "passed", "start": 1721034601225, "stop": 1721034601225}], "start": 1721034601225, "stop": 1721034601275}
\ No newline at end of file
{"uuid": "1aeb4949-2688-4fa5-8ab1-d6afd298722f", "befores": [{"name": "case_url", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602339}
\ No newline at end of file
{"name": "反向用例-用户名正确-密码过短", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败,描述失败的原因", "trace": "self = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n> assert expect_data[key] == result.json().get(key)\nE AssertionError: assert False == None\nE + where None = <built-in method get of dict object at 0x00000203D7E65AC0>('state')\nE + where <built-in method get of dict object at 0x00000203D7E65AC0> = {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ', ...}.get\nE + where {'account': 'admin', 'expiration': 86400, 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRl...IsImlhdCI6MTcyMTAzNDUzMn0.tu06EnO4tD8z_gd1aVcpa8H9uPWBWnZkMTh_iri0E6FBDiLZjvteZ5l-bHzpjo0Gp4XQjiD8XrbdHG3t_BrKGQ', ...} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_case\\test_basic\\test_case.py:61: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <APIAutoTest_v3_1.test_case.test_basic.test_case.TestBPM object at 0x00000203D7D790D0>\nreq_fix = <APIAutoTest_v3_1.request_method.request_method.RequestMethod object at 0x00000203D7D63430>\ndb_fix = <APIAutoTest_v3_1.common.db.DB object at 0x00000203D7D3B7C0>, module_name = '认证接口', api_name = '登录系统', level = '中'\ncase_title = '反向用例-用户名正确-密码过短', case_method = 'POST', case_url = 'http://36.139.193.99:8088/auth', case_mime = 'application/json'\ncase_data = {'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIE...5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=', 'username': 'admin'}\nexpect_data = {'message': '账户错误或该租户未启用', 'state': False}, sql_type = None, sql_data = None, update_key = None\n\n @log_decorator\n @allure.epic(\"BPM-Basic\")\n # @allure.feature(\"模块名称\")\n # @allure.story(\"接口名称\")\n # @allure.title(\"接口标题\")\n # @allure.severity(\"用例级别\")\n @pytest.mark.parametrize(\"module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key\", ReadExcel(USERNAME).get_data())\n def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):\n # 影响allure报告的输出\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(level)\n \n print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)\n \n # 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句\n if sql_type == \"delete\":\n # 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n \n # 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果\n elif sql_type == \"select\":\n # 使用DB类对象调用select方法执行查询语句,并接收查询的结果\n select_result = db_fix.select(sql_data)\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象调用delete方法执行删除的sql语句。\n db_fix.delete(sql_data[\"delete\"])\n \n # 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果\n select_result = db_fix.select(sql_data[\"select\"])\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)\n print(result.text)\n \n try:\n for key in expect_data:\n assert expect_data[key] == result.json().get(key)\n except AssertionError:\n> raise AssertionError(\"断言失败,描述失败的原因\")\nE AssertionError: 断言失败,描述失败的原因\n\ntest_case\\test_basic\\test_case.py:63: AssertionError"}, "attachments": [{"name": "log", "source": "5c29bb70-a38b-42f9-a3fd-7abe73e908c7-attachment.txt", "type": "text/plain"}, {"name": "stdout", "source": "bd0c6c08-127e-4ffd-aeed-a50966bc850d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "level", "value": "'中'"}, {"name": "case_title", "value": "'反向用例-用户名正确-密码过短'"}, {"name": "case_method", "value": "'POST'"}, {"name": "case_url", "value": "'http://36.139.193.99:8088/auth'"}, {"name": "case_mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8=F4/DVgPS/NEruLxVVRqHktsb1R2fVpw81t5VuGfFjwp0G7U4k6spHPr/ejPlw8XxIVilJ+SyIH0G5FbQStFEd/94mmI7+2Dw2c7MXXIERYKjd3XNe4gZR4ANJclCJHNGfE+mtnX5voprYwEo9m6ponCdmmXTMx9cWVEJ4K/nbR8='}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账户错误或该租户未启用'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1721034590748, "stop": 1721034590790, "uuid": "d28ad5ac-a54b-4df7-817f-ab0b489a3a0f", "historyId": "423b926d9c9c8e8a56af3847b1819589", "testCaseId": "7eaa431ea2bba1e2b3a17e36e15d3c36", "fullName": "test_case.test_basic.test_case.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM-Basic"}, {"name": "parentSuite", "value": "test_case.test_basic"}, {"name": "suite", "value": "test_case"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "LAPTOP-O09782E1"}, {"name": "thread", "value": "8128-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_case"}]}
\ No newline at end of file
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzUsImlhdCI6MTcyMTAzNDUzNX0.EWQ7C4SuS63E2IIJl_gfCgk16XVg_Z_m8o3mRp70XM1jNDBIYzYwy5okNX-9j5IQDSurUD9TsdwaQBvnCJhxSQ","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
GET http://36.139.193.99:8088/refresh None None {'message': '刷新成功'} None None None
{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MjExMjA5MzYsImlhdCI6MTcyMTAzNDUzNn0.DY-ZBzr8K_Bb2KVq-ZyL2z9N6qXw4Jday3dIFbQalfdU0ur0gO3yuvFSLlJb7J9VqPw13FGiGTn755SgvJJikA","username":"admin","account":"admin","userId":"","expiration":86400,"loginStatus":true}
{"uuid": "ab9de1ee-e2f3-4274-87c6-3ddf73ac2d22", "befores": [{"name": "sql_data", "status": "passed", "start": 1721034601041, "stop": 1721034601041}], "start": 1721034601041, "stop": 1721034601070}
\ No newline at end of file
{"uuid": "fbe06348-3a82-4a2b-a60c-e95864e3c9cc", "befores": [{"name": "update_key", "status": "passed", "start": 1721034584127, "stop": 1721034584127}], "start": 1721034584127, "stop": 1721034584308}
\ No newline at end of file
{"uuid": "d256ce36-6921-4c1b-9783-ef19b61ba427", "befores": [{"name": "api_name", "status": "passed", "start": 1721034596129, "stop": 1721034596129}], "start": 1721034596129, "stop": 1721034596225}
\ No newline at end of file
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:291 Resetting dropped connection: 36.139.193.99
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
INFO  root:__init__.py:79 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18
DEBUG  urllib3.connectionpool:connectionpool.py:546 http://36.139.193.99:8088 "POST /auth HTTP/11" 200 None
ERROR  root:__init__.py:82 执行的功能名称为:test_bpm, 功能所在的文件为:D:\Project\PythonDoc\test61\test61\APIAutoTest_v3_1\test_case\test_basic\test_case.py, 所在的行为:18报错,错误为:断言失败,描述失败的原因
\ No newline at end of file
{"uuid": "3736d5a8-37a9-4593-9b52-31dc20927889", "befores": [{"name": "update_key", "status": "passed", "start": 1721034603353, "stop": 1721034603353}], "start": 1721034603353, "stop": 1721034603394}
\ No newline at end of file
{"uuid": "7c550e18-e8a2-4e60-86ec-67dc2ae86dc5", "befores": [{"name": "expect_data", "status": "passed", "start": 1721034594025, "stop": 1721034594025}], "start": 1721034594025, "stop": 1721034594063}
\ No newline at end of file
{"uuid": "b617332f-19de-47e3-b621-f60bba0ac335", "befores": [{"name": "api_name", "status": "passed", "start": 1721034602304, "stop": 1721034602304}], "start": 1721034602304, "stop": 1721034602341}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: request_method.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:32
# Description:
#
# ---------------------------------------------------------------------------
import requests
from APIAutoTest_v3_1.common.read_basic_ini import ReadBasicIni
class RequestMethod:
def __init__(self):
"""关联登录成功的状态"""
login_url = ReadBasicIni().get_url("test_host") + "/auth"
login_data = {"username": "admin",
"password": "FMgcBcmzaLp5J8AFyR8XF0MhHRpBhHNFQyDn7HI2nBO0B9RgCEnhVjvXjLMNjwoRKp01dwHueQGZbZcsEdAQQwY1QXvJrr8Z4Jv2Wn5UCC4IKuH9cIeevsc2zSEMmKULN9FJV4e9DBbnTMoxHqyawMlxVN/pidjeA0kkXjOsBE8="}
self.bpm_session = requests.sessions.Session()
self.bpm_session.headers.update({"Authorization": "Bearer "+self.bpm_session.post(url=login_url, json=login_data).json().get("token")})
def request_all(self, req_method, req_url, req_mime, case_data):
"""封装公共的请求方法"""
if req_mime == "application/json" or req_mime == "json":
return self.bpm_session.request(method=req_method, url=req_url, json=case_data)
# 请求体中传参,除了json类型和上传文件以外的任何类型传参,全部使用data
elif req_mime == "application/x-www-form-urlencoded" or req_mime == "x-www-form-urlencoded" or req_mime == "form":
return self.bpm_session.request(method=req_method, url=req_url, data=case_data)
elif req_mime == "multipart/form-data" or req_mime == "form-data":
return self.bpm_session.request(method=req_method, url=req_url, files=case_data)
elif req_mime == "query" or req_mime == "params":
return self.bpm_session.request(method=req_method, url=req_url, params=case_data)
elif req_mime is None:
return self.bpm_session.request(method=req_method, url=req_url)
# 判断请求的媒体类型是否为query|json 或者 json|query,表示在请求体以json类型传参 同时还在地址栏中传参
elif req_mime == "query|json" or req_mime == "json|query":
# 注意:请求体中传参的关键字data,files,json可以同时和params结合使用,但是data,files,json每次之后使用一个参数
return self.bpm_session.request(method=req_method, url=req_url, params=case_data["query"], json=case_data["body"])
else:
raise ValueError("媒体类型的值错误")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/15 10:20
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/12 16:53
# Description:
#
# ---------------------------------------------------------------------------
# 该变量需要和数据配置层中用例的目录名称一致
USERNAME = "basic"
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: conftest.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:40
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from APIAutoTest_v3_1.common.db import DB
from APIAutoTest_v3_1.request_method.request_method import RequestMethod
@pytest.fixture(scope="session")
def req_fix():
req = RequestMethod()
yield req
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: test_case.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:38
# Description:
#
# ---------------------------------------------------------------------------
import pytest
import allure # 导入allure
from APIAutoTest_v3_1 import log_decorator
from APIAutoTest_v3_1.common.read_excel import ReadExcel
from APIAutoTest_v3_1.test_case.test_basic import USERNAME
class TestBPM:
@log_decorator
@allure.epic("BPM-Basic")
# @allure.feature("模块名称")
# @allure.story("接口名称")
# @allure.title("接口标题")
# @allure.severity("用例级别")
@pytest.mark.parametrize("module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key", ReadExcel(USERNAME).get_data())
def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):
# 影响allure报告的输出
allure.dynamic.feature(module_name)
allure.dynamic.story(api_name)
allure.dynamic.title(case_title)
allure.dynamic.severity(level)
print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)
# 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句
if sql_type == "delete":
# 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix
db_fix.delete(sql_data)
# 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果
elif sql_type == "select":
# 使用DB类对象调用select方法执行查询语句,并接收查询的结果
select_result = db_fix.select(sql_data)
# 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句
elif sql_type == "select|delete" or sql_type == "delete|select":
# 使用DB类对象调用delete方法执行删除的sql语句。
db_fix.delete(sql_data["delete"])
# 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果
select_result = db_fix.select(sql_data["select"])
# 将查询结果更新到用例数据中
case_data[update_key] = select_result
result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)
print(result.text)
try:
for key in expect_data:
assert expect_data[key] == result.json().get(key)
except AssertionError:
raise AssertionError("断言失败,描述失败的原因")
else:
print("断言成功")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/12 16:56
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: conftest.py
# Author: lao_zhao
# Datetime: 2024/7/12 10:03
# Description:
#
# ---------------------------------------------------------------------------
import pytest
data_dict = {}
def set_value(key, value):
# 校验key和value
data_dict[key] = value
def get_value(key):
if key in data_dict.keys():
return data_dict[key]
else:
return "not fount"
@pytest.fixture(scope="session")
def set_depends_value():
yield set_value
@pytest.fixture(scope="session")
def get_depends_value():
yield get_value
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: test_pytest_decorator.py
# Author: lao_zhao
# Datetime: 2024/7/12 9:40
# Description:
#
# ---------------------------------------------------------------------------
import random
import string
import allure
import pytest
import requests
case_datas = [
[{"code": "需要更新"}, {"isDelete":"0"}, "正向用例"],
[{"code": ""}, {"message":"必填:code维度编码必填!"}, "反向用例1"],
[{"": "abctest"}, {"message":"Required String parameter 'code' is not present"}, "反向用例2"]
]
class TestBPM:
host = "http://36.139.193.99:8088"
@allure.epic("bpm-场景测试")
@allure.feature("认证接口")
@allure.story("登录系统")
@allure.title("bpm-场景测试-登录-正向")
@pytest.mark.dependency()
def test_login(self, set_depends_value):
# 获取登录的url
login_url = self.host + "/auth"
# 配置登录数据
login_data = {"username": "admin",
"password": "FMgcBcmzaLp5J8AFyR8XF0MhHRpBhHNFQyDn7HI2nBO0B9RgCEnhVjvXjLMNjwoRKp01dwHueQGZbZcsEdAQQwY1QXvJrr8Z4Jv2Wn5UCC4IKuH9cIeevsc2zSEMmKULN9FJV4e9DBbnTMoxHqyawMlxVN/pidjeA0kkXjOsBE8="}
res = requests.request(method="post", url=login_url, json=login_data)
try:
assert "超级管理员" in res.text
except AssertionError:
raise AssertionError("断言失败")
else:
token = res.json().get("token")
set_depends_value("TOKEN", token)
@allure.epic("bpm-场景测试")
@allure.feature("维度管理")
@allure.story("添加维度")
@allure.title("bpm-场景测试-添加维度-正向")
@pytest.mark.dependency(depends=["TestBPM::test_login"])
def test_add_dem(self, get_depends_value, set_depends_value):
add_dem_url = self.host + "/api/demension/v1/dem/addDem"
dem_code = "".join(random.sample(string.ascii_letters, 12))
add_dem_data = {
"code": dem_code,
"description": "",
"isDefault": 0,
"name": "测试"+"".join(random.sample(string.ascii_letters, 8))
}
token = get_depends_value("TOKEN")
res = requests.post(url=add_dem_url, json=add_dem_data, headers={"Authorization": "Bearer "+token})
try:
assert "成功" in res.text
except AssertionError:
raise AssertionError("断言失败")
else:
set_depends_value("demCode", dem_code)
@allure.epic("bpm-场景测试")
@allure.feature("维度管理")
@allure.story("根据维度编码获取维度信息")
# @allure.title("bpm-场景测试-添加维度-正向")
@pytest.mark.parametrize("case_data, expect_data, title", case_datas)
@pytest.mark.dependency(depends=["TestBPM::test_add_dem"])
def test_get_dem_msg(self, get_depends_value, set_depends_value, case_data, expect_data, title):
allure.dynamic.title(title)
get_dem_msg_url = self.host + "/api/demension/v1/dem/getDem"
# get_dem_msg_data = {"code": get_depends_value("demCode")}
token = get_depends_value("TOKEN")
if "code" in case_data.keys():
if case_data["code"] == "需要更新":
case_data["code"] = get_depends_value("demCode")
res = requests.get(url=get_dem_msg_url, params=case_data, headers={"Authorization": "Bearer "+token})
try:
for key in expect_data:
assert expect_data[key] == res.json().get(key)
except AssertionError:
raise AssertionError("断言失败")
else:
# 判断服务器返回的数据中是否有id
if "id" in res.json():
dem_id = res.json()["id"]
set_depends_value("demId", dem_id)
print("断言成功")
# @pytest.mark.dependency(depends=["TestBPM::test_get_dem_msg"])
# def test_org(self, get_depends_value):
# print(get_depends_value("TOKEN"))
# print(get_depends_value("demId"))
# print(get_depends_value("demCode"))
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/12 16:53
# Description:
#
# ---------------------------------------------------------------------------
# 该变量需要和数据配置层中用例的目录名称一致
USERNAME = "lao_zhang"
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: conftest.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:40
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from APIAutoTest_v3_1.common.db import DB
from APIAutoTest_v3_1.request_method.request_method import RequestMethod
@pytest.fixture(scope="session")
def req_fix():
req = RequestMethod()
yield req
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: test_case.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:38
# Description:
#
# ---------------------------------------------------------------------------
import allure
import pytest
from APIAutoTest_v3_1 import log_decorator
from APIAutoTest_v3_1.common.read_excel import ReadExcel
from APIAutoTest_v3_1.test_case.test_lao_zhang import USERNAME
class TestBPM:
@log_decorator
@allure.epic("BPM-张三")
# @allure.feature("模块名称")
# @allure.story("接口名称")
# @allure.title("接口标题")
# @allure.severity("用例级别")
@pytest.mark.parametrize("module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key", ReadExcel(USERNAME).get_data())
def test_bpm(self, req_fix, db_fix, module_name, api_name, level, case_title, case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key):
# 影响allure报告的输出
allure.dynamic.feature(module_name)
allure.dynamic.story(api_name)
allure.dynamic.title(case_title)
allure.dynamic.severity(level)
print(case_method, case_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key)
# 判断sql语句类型是否为delete,如果是,使用DB类对象调用delete方法执行删除的sql语句
if sql_type == "delete":
# 使用DB类对象调用delete方法执行删除的sql语句, DB类对象就是自定义固件db_fix
db_fix.delete(sql_data)
# 判断sql语句的类型是否为select,如果是,使用DB类对象调用select方法执行查询语句,并接收查询的结果
elif sql_type == "select":
# 使用DB类对象调用select方法执行查询语句,并接收查询的结果
select_result = db_fix.select(sql_data)
# 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 判断sql语句的类型是否为select|delete 或者 delete|select ,如果是,使用DB类对象执行sql语句
elif sql_type == "select|delete" or sql_type == "delete|select":
# 使用DB类对象调用delete方法执行删除的sql语句。
db_fix.delete(sql_data["delete"])
# 使用DB类对象调用select方法执行查询的sql语句, 并接收查询的结果
select_result = db_fix.select(sql_data["select"])
# 将查询结果更新到用例数据中
case_data[update_key] = select_result
result = req_fix.request_all(req_method=case_method, req_url=case_url, req_mime=case_mime, case_data=case_data)
print(result.text)
try:
for key in expect_data:
assert expect_data[key] == result.json().get(key)
except AssertionError:
# log.error(f"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}")
# raise AssertionError("断言失败,描述失败的原因")
raise AssertionError(f"断言失败, 用例数据为:{case_data}, 期望数据为:{expect_data}, 服务器返回的数据为:{result.text}")
else:
print("断言成功")
\ 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