Commit 3b8f09e2 by 云天羽

apiautotest-v1

parent 9870c69b
import functools
import logging
import os
import time
def get_logs():
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)
logger.addHandler(file_handler)
return logger
log = get_logs()
def log_decorator(func_name):
@functools.wraps(func_name)
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
import pymysql
from Homework_files.APITesting_LZJ.common.read_ini import ReadIni
class DB:
def __init__(self):
ini = ReadIni()
try:
self.conn = pymysql.connect(
host=ini.connect_database_msg("host"),
port=int(ini.connect_database_msg("port")),
user=ini.connect_database_msg("user"),
password=ini.connect_database_msg("pwd"),
database=ini.connect_database_msg("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
except Exception as e:
print("链接数据库出错,错误为:", e)
raise e
def close(self):
self.cursor.close()
self.conn.close()
def delete(self, sql_sentence):
try:
self.cursor.execute(sql_sentence)
except Exception as e:
print("执行删除的sql语句时报错,错误为:", e)
raise e
else:
self.conn.commit()
def select(self, sql_sentence):
try:
self.cursor.execute(sql_sentence)
except Exception as e:
print("执行查询的sql语句时报错,错误为:", e)
raise e
else:
select_result = self.cursor.fetchall()
if select_result:
return select_result[0][0]
\ No newline at end of file
import logging
import os
import time
from Homework_files.APITesting_LZJ.common.read_basic_ini import ReadBasicIni
def get_log():
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)
logger.addHandler(file_handler)
return logger
import os, configparser
class ReadBasicIni:
def __init__(self):
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):
try:
return self.conf.get("host", key)
except Exception as e:
raise e
def sql_connect_msg(self, key):
try:
return self.conf.get("sql", key)
except Exception as e:
raise e
def get_log_dir(self, key):
try:
dir_name = self.conf.get("report", key)
except Exception as e:
raise e
else:
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
import openpyxl
from Homework_files.APITesting_LZJ.common.read_ini import ReadIni
from Homework_files.APITesting_LZJ.common.read_json import read_json
from Homework_files.APITesting_LZJ import log_decorator
class ReadExcel:
def __init__(self):
self.ini = ReadIni()
case_data_path = self.ini.get_file_path("case")
expect_data_path = self.ini.get_file_path("expect")
sql_data_path = self.ini.get_file_path("sql")
excel_path = self.ini.get_file_path("excel")
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)
table_name = self.ini.get_table_name("table")
try:
wb = openpyxl.load_workbook(excel_path)
self.ws = wb[table_name]
except Exception as e:
print("加载工作簿和获取工作表时报错,错误为:", e)
raise e
@log_decorator
def __get_cell_value(self, column: str, row: int) -> str:
try:
cell_value = self.ws[column + str(row)].value
except Exception as e:
print("获取指定单元格数据报错,错误为:", e)
raise e
else:
if cell_value is None:
return None
elif cell_value.strip():
return cell_value.strip()
@log_decorator
def module_name(self, row):
return self.__get_cell_value("B", row)
@log_decorator
def api_name(self, row):
return self.__get_cell_value("C", row)
@log_decorator
def req_method(self, row):
return self.__get_cell_value("F", row)
@log_decorator
def req_url(self, row):
host = self.ini.get_url("test_host")
path = self.__get_cell_value("G", row)
if path is not None:
return host+path
else:
return None
@log_decorator
def case_mime(self, row):
mime = self.__get_cell_value("H", row)
if mime is not None:
return mime.lower()
else:
return None
@log_decorator
def case_data(self, row):
case_data_key = self.__get_cell_value("i", row)
if case_data_key is not None:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.case_data_dict[module_name][api_name][case_data_key]
else:
return None
@log_decorator
def expect_data(self, row):
expect_data_key = self.__get_cell_value("j", row)
if expect_data_key is not None:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.expect_data_dict[module_name][api_name][expect_data_key]
else:
return None
@log_decorator
def sql_type(self, row):
sql_sentence_type = self.__get_cell_value("k", row)
if sql_sentence_type is not None:
return sql_sentence_type.lower()
else:
return None
@log_decorator
def sql_data(self, row):
sql_data_key = self.__get_cell_value("l", row)
if sql_data_key is not None:
module_name = self.module_name(row)
api_name = self.api_name(row)
return self.sql_data_dict[module_name][api_name][sql_data_key]
else:
return None
@log_decorator
def update_key(self, row):
return self.__get_cell_value("m", row)
@log_decorator
def get_data(self):
data_list = []
for row in range(2, self.ws.max_row+1):
req_method = self.req_method(row)
req_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 req_method is not None and req_url is not None:
row_list = [req_method, req_url, case_mime, case_data, expect_data, sql_type, sql_data, update_key]
data_list.append(row_list)
else:
return data_list
if __name__ == '__main__':
excel = ReadExcel()
print(excel.get_data())
\ No newline at end of file
import configparser
import os
class ReadIni:
def __init__(self):
self.data_config_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data_config")
ini_path = os.path.join(self.data_config_path, "config.ini")
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
def get_file_path(self, key):
try:
file_name = self.conf.get("file", key)
except Exception as e:
print("获取文件的名称时,传入的key错误,错误为:", e)
raise e
else:
return os.path.join(self.data_config_path, file_name)
# def get_url(self, key):
# try:
# return self.conf.get("host", key)
# except Exception as e:
# print("获取被测系统的域名时,传入的key错误,错误为:", e)
# raise e
def get_table_name(self, key):
try:
return self.conf.get("table_name", key)
except Exception as e:
print("获取工作表名称时,传入的key错误,错误为:", e)
raise e
# def connect_database_msg(self, key):
# try:
# return self.conf.get("sql", key)
# except Exception as e:
# print("获取数据库链接的配置信息时发生错误,错误为:", e)
# raise e
import json
import os
def read_json(file_path):
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.load(f)
except Exception as e:
print("读取json文件时发生错误,请查看json文件的内容是否正常,错误为:", e)
raise e
else:
raise FileNotFoundError("传入的json文件路径错误")
{
"认证接口":{
"登录系统":{
"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_data.json
[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_data.json
[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\";"
}
}
}
}
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"
EXCEL_FILE = "excel"
CASE_FILE = "case"
EXPECT_FILE = "expect"
SQL_FILE = "sql"
TABLE_NAME = "table"
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.
This source diff could not be displayed because it is too large. You can view the blob instead.
import requests
from Homework_files.APITesting_LZJ.common.read_ini import ReadIni
class RequestMethod:
def __init__(self):
login_url = ReadIni().get_url("test_host") + "/auth"
login_data = {"username": "admin", "password": "FMgcBcmzaLp5J8AFyR8XF0MhHRpBhHNFQyDn7HI2nBO0B9RgCEnhVjvXjLMNjwoRKp01dwHueQGZbZcsEdAQQwY1QXvJrr8Z4Jv2Wn5UCC4IKuH9cIeevsc2zSEMmKULN9FJV4e9DBbnTMoxHqyawMlxVN/pidjeA0kkXjOsBE8="}
self.bpm_session = requests.sessions.Session()
self.bpm_session.headers["Authorization"] = "Bearer "+self.bpm_session.post(url=login_url, json=login_data).json()["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)
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)
else:
raise ValueError("传入媒体类型的值错误,请自行封装")
\ No newline at end of file
USERNAME = "basic"
\ No newline at end of file
import pytest
from Homework_files.APITesting_LZJ.common.db import DB
from Homework_files.APITesting_LZJ.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()
import pytest
import allure
from Homework_files.APITesting_LZJ.common.read_excel import ReadExcel
from Homework_files.APITesting_LZJ import log_decorator
from Homework_files.APITesting_LZJ import USERNAME
class TestBPM:
@log_decorator
@allure.epic("BPM-Basic")
@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.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)
if sql_type == "delete":
db_fix.delete(sql_data)
elif sql_type == "select":
select_result = db_fix.select(sql_data)
case_data[update_key] = select_result
elif sql_type == "select|delete" or sql_type == "delete|select":
db_fix.delete(sql_data["delete"])
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
import pytest
data_dict = {}
def set_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
import random
import string
import allure
import pytest
import requests
case_datas = [
[{"code": "需要更新"}, {"isDelete":"0"}],
[{"code": ""}, {"message":"必填:code维度编码必填!"}],
[{"": "abctest"}, {"message":"Required String parameter 'code' is not present"}]
]
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):
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("根据维度编码获取维度信息")
@pytest.mark.parametrize("case_data, expect_data", 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):
get_dem_msg_url = self.host + "/api/demension/v1/dem/getDem"
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:
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
USERNAME = "liu_zijia"
\ No newline at end of file
import pytest
from Homework_files.APITesting_LZJ.common.db import DB
from Homework_files.APITesting_LZJ.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()
\ No newline at end of file
import allure
import pytest
from Homework_files.APITesting_LZJ.common.read_excel import ReadExcel
from Homework_files.APITesting_LZJ import log_decorator
from Homework_files.APITesting_LZJ import USERNAME
class TestBPM:
@log_decorator
@allure.epic("BPM-张三")
@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.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)
if sql_type == "delete":
db_fix.delete(sql_data)
elif sql_type == "select":
select_result = db_fix.select(sql_data)
case_data[update_key] = select_result
elif sql_type == "select|delete" or sql_type == "delete|select":
db_fix.delete(sql_data["delete"])
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(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