Commit 73206575 by djj

test python v1.0

parent 455ef05b
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 16:11
# Description:
#
# ---------------------------------------------------------------------------
import functools
import logging
import os
import time
def my_log(filename):
# 创建logger对象
logger = logging.getLogger()
# 设置日志的显示级别
logger.level = logging.NOTSET
# 设置日志写入的文件
handler = logging.FileHandler(filename, mode="a", encoding="utf-8")
# 设置日志文件中日志的级别
handler.setLevel(logging.NOTSET)
# 设置日志文件中日志的格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
# 将格式设置到日志文件中
handler.setFormatter(formatter)
# 将日志文件加载到logger中
logger.addHandler(handler)
return logger
log_path = os.path.join(os.path.join(os.path.join(os.path.dirname(__file__), "report"), "log"), time.strftime("%Y_%m_%d_%H_%M_%S")+".log")
# log_path = os.path.join(os.path.join(os.path.join(os.path.dirname(__file__), "report"), "log"), "BPM.log")
log = my_log(log_path)
def log_decorator(func_name):
@functools.wraps(func_name)
def inner(*args, **kwargs):
try:
log.info("执行的函数或方法为:"+str(func_name.__name__)+",其功能为:"+str(func_name.__doc__))
return func_name(*args, **kwargs)
except Exception as e:
log.error(e)
raise e
return inner
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: db.py
# Author: laozhao
# Datetime: 2024/3/18 15:27
# Description:
#
# ---------------------------------------------------------------------------
import pymysql
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log_decorator
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_ini import ReadIni
class DB:
@log_decorator
def __init__(self):
"""链接是数据库,获取链接对象和游标对象"""
read_ini = ReadIni()
try:
self.conn = pymysql.Connect(
host=read_ini.get_sql_connect_msg("host"),
port=int(read_ini.get_sql_connect_msg("port")),
user=read_ini.get_sql_connect_msg("user"),
password=read_ini.get_sql_connect_msg("password"),
database=read_ini.get_sql_connect_msg("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
except:
raise ConnectionError("链接数据库失败")
@log_decorator
def close(self):
self.cursor.close()
self.conn.close()
@log_decorator
def delete(self, sql_sentence):
"""使用游标对象执行删除的sql语句"""
try:
self.cursor.execute(sql_sentence)
except:
raise ValueError("sql语句错误")
else:
self.conn.commit()
@log_decorator
def select(self, sql_sentence):
"""使用游标对象执行查询的sql语句,并返回查询的结果"""
try:
self.cursor.execute(sql_sentence)
except:
raise ValueError("sql语句错误")
else:
select_result = self.cursor.fetchall()
if select_result:
return select_result[0][0]
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: read_excel.py
# Author: laozhao
# Datetime: 2024/3/18 15:32
# Description:
#
# ---------------------------------------------------------------------------
import openpyxl
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log_decorator, log
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_ini import ReadIni
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_json import read_json
class ReadExcel:
@log_decorator
def __init__(self, username, table_name, excel_path=None, case_data_path=None, expect_data_path=None,
sql_data_path=None):
"""获取所有的json文件的路径,在使用read_json读取所有的json文件,再获取excel文件路径,加载工作簿,获取工作表"""
self.read_ini = ReadIni()
# 判断table_name的值是否为None如果为None使用ini配置文件中的值,如果不为None使用传入的值
if table_name is None:
table_name = self.read_ini.get_table_name("name")
if excel_path is None and case_data_path is None and expect_data_path is None or sql_data_path is None:
case_data_path = self.read_ini.get_file_path("case", username)
expect_data_path = self.read_ini.get_file_path("expect", username)
sql_data_path = self.read_ini.get_file_path("sql", username)
excel_path = self.read_ini.get_file_path("excel", username)
self.case_data_dict = read_json(case_data_path)
self.expect_data_dict = read_json(expect_data_path)
self.sql_data_dict = read_json(sql_data_path)
try:
wb = openpyxl.load_workbook(excel_path)
self.ws = wb[table_name]
except:
raise ValueError("配置文件中的excel名称或工作表名称错误")
def __get_cell_value(self, column: str, row: int) -> str:
"""获取指定单元格数据"""
log.info("功能为:获取指定单元格数据" + "方法名称为:" + "__get_cell_value")
try:
value = self.ws[column + str(row)].value
except:
log.error("指定的行和列错误")
raise KeyError("指定的行和列错误")
else:
if value is None:
return None
elif value.strip():
return value.strip()
@log_decorator
def module_name(self, row):
"""根据行号获取模块名称"""
return self.__get_cell_value("b", row)
@log_decorator
def api_name(self, row):
"""根据行号获取接口名称"""
return self.__get_cell_value("c", row)
@log_decorator
def case_title(self, row):
"""根据行号获取用例标题"""
return self.__get_cell_value("d", row)
@log_decorator
def case_level(self, row):
"""根据行号获取用例等级"""
return self.__get_cell_value("e", row)
@log_decorator
def case_url(self, row):
"""根据行号,获取用例的url"""
host = self.read_ini.get_host("bpm_host")
path = self.__get_cell_value("f", row)
if path:
return host + path
@log_decorator
def case_req_method(self, row):
"""根据行号,获取用例的请求方法"""
return self.__get_cell_value("g", row)
@log_decorator
def case_mime(self, row):
"""根据行号,获取用例请求的媒体类型"""
value = self.__get_cell_value("h", row)
if value:
return value.lower()
@log_decorator
def case_data(self, row):
"""根据行号,获取用例数据"""
case_data_key = self.__get_cell_value("i", row)
if case_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
try:
return self.case_data_dict[module_name][api_name][case_data_key]
except:
raise KeyError("根据用例的key获取用例数据失败,请察看用例json文件中,是否有配置")
@log_decorator
def expect_data(self, row):
"""根据行号,获取期望数据"""
expect_data_key = self.__get_cell_value("j", row)
if expect_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
try:
return self.expect_data_dict[module_name][api_name][expect_data_key]
except:
raise KeyError("根据期望的key获取期望数据失败,请察看期望json文件中,是否有配置")
@log_decorator
def sql_data(self, row):
"""根据行号,获取sql语句"""
sql_data_key = self.__get_cell_value("l", row)
if sql_data_key:
module_name = self.module_name(row)
api_name = self.api_name(row)
try:
return self.sql_data_dict[module_name][api_name][sql_data_key]
except:
raise KeyError("根据sql语句的key获取sql语句失败,请察看sql语句json文件中,是否有配置")
@log_decorator
def sql_type(self, row):
"""根据行号,获取sql语句类型"""
value = self.__get_cell_value("k", row)
if value:
return value.lower()
@log_decorator
def update_key(self, row):
"""根据行号,获取更新的key"""
return self.__get_cell_value("m", row)
def get_data(self):
"""获取所有的测试数据,存放在一个二维列表中"""
log.info("功能:获取所有的测试数据,存放在一个二维列表中" + "方法名称为:" + "get_data")
list_data = []
for row in range(2, self.ws.max_row + 1):
# url
url = self.case_url(row)
# method
method = self.case_req_method(row)
if url and method:
# mime
mime = self.case_mime(row)
# case_data
case_data = self.case_data(row)
# expect_data
expect_data = self.expect_data(row)
# sql_type
sql_type = self.sql_type(row)
# sql_data
sql_data = self.sql_data(row)
# update_key
update_key = self.update_key(row)
# 模块名称
module_name = self.module_name(row)
# 接口名称
api_name = self.api_name(row)
# 用例标题
case_title = self.case_title(row)
# 用例等级
case_level = self.case_level(row)
list_data.append(
[module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type,
sql_data, update_key])
else:
return list_data
if __name__ == '__main__':
excel = ReadExcel(username="basic", table_name="登录-维度管理")
print(excel.get_data())
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: read_ini.py
# Author: laozhao
# Datetime: 2024/3/18 15:20
# Description:
#
# ---------------------------------------------------------------------------
import configparser
import os
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log_decorator
class ReadIni:
@log_decorator
def __init__(self):
"""获取ini文件的路径,使用Configparser对象的read方法读取ini文件"""
self.data_config = os.path.join(os.path.dirname(os.path.dirname(__file__)), "data_config")
ini_path = os.path.join(self.data_config, "config.ini")
self.conf = configparser.ConfigParser()
self.conf.read(ini_path, encoding="utf-8")
@log_decorator
def get_file_path(self, key, username):
"""根据key获取file节点下文件的路径"""
try:
value = self.conf.get("file", key)
except:
raise KeyError("输入的key错误")
else:
return os.path.join(os.path.join(self.data_config, username), value)
@log_decorator
def get_table_name(self, key):
"""根据key获取table节点下key对应的工作表名称"""
try:
value = self.conf.get("table", key)
except:
raise KeyError("输入的key错误")
else:
return value
@log_decorator
def get_host(self, key):
"""根据key获取host节点下key对应的域名"""
try:
value = self.conf.get("host", key)
except:
raise KeyError("输入的key错误")
else:
return value
@log_decorator
def get_sql_connect_msg(self, key):
"""根据key获取sql节点下key对应的数据库链接信息"""
try:
value = self.conf.get("sql", key)
except:
raise KeyError("输入的key错误")
else:
return value
if __name__ == '__main__':
ini = ReadIni()
print(ini.get_file_path("excel", "张三"))
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: read_json.py
# Author: laozhao
# Datetime: 2024/3/18 15:26
# Description:
#
# ---------------------------------------------------------------------------
import json
import os
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log_decorator
@log_decorator
def read_json(filename: str):
if os.path.isfile(filename) and filename.endswith(".json"):
try:
with open(filename, mode="r", encoding="utf-8") as fp:
return json.loads(fp.read())
except:
raise IOError("文件内容有错误")
else:
raise FileNotFoundError("传入的文件路径错误")
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"admin", "password":"MTIzNDU2"},
"LoginErrorPasswordIsNone":{"username":"admin", "password":""},
"LoginErrorPasswordIsShort":{"username":"admin", "password":"s"},
"LoginErrorPasswordIsLong":{"username":"admin", "password":"MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2"},
"LoginErrorPasswordIsSpecialChar":{"username":"admin", "password":"▣▤▥▦▩◘◈"},
"LoginErrorPasswordIsError":{"username":"admin", "password":"MTIzNDU232"},
"LoginErrorUsernameIsError":{"username":"admin123", "password":"MTIzNDU2"},
"LoginErrorUsernameIsSpecialChar":{"username":"▣▤▥▦▩◘◈", "password":"MTIzNDU2"},
"LoginErrorUsernameParamIsUser":{"user":"admin", "password":"MTIzNDU2"},
"LonginErrorUsernameIsLong":{"username":"adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin", "password":"MTIzNDU2"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"code": "abc_123_xyz","description": "abc_123_xyz","isDefault": 0,"name": "接口自动化框架"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"code": "abc_123_xyz"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "不知道"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "add_org_test",
"demId": "不知道",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "接口自动化框架添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"组织加入用户": {
"OrgAddUserSuccess": {"orgCode":"add_org_test", "accounts": "admin"}
}
}
}
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员"},
"LoginErrorPasswordIsNone":{"message":"账号或密码错误"},
"LoginErrorPasswordIsShort":{"message":"账号或密码错误"},
"LoginErrorPasswordIsLong":{"message":"账号或密码错误"},
"LoginErrorPasswordIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorPasswordIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorUsernameParamIsUser":{"message":"账号或密码错误"},
"LonginErrorUsernameIsLong":{"message":"账号或密码错误"}
},
"刷新token": {
"RefreshTokenSuccess": {"message": "刷新token成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"message": "添加维度成功"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"isDelete": "0"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功"}
},
"组织加入用户": {
"OrgAddUserSuccess": {"state":true,"message":"加入成功","value":""}
}
}
}
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";",
"select": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
}
}
}
[节点名称]
# 注释
; 注释
键=值
[file]
# 编辑data_config目录下的文件
excel=APIAutoTest.xlsx
case=case_data.json
expect=expect_data.json
sql=sql_data.json
[table]
# excel中工作表名称
name=BPM
[host]
# 被测系统的域名
bpm_host=http://120.46.172.186:8080
[sql]
# 数据库的链接信息
host=120.46.172.186
port=3306
user=root
password=root@2023
database=eipsaas
\ No newline at end of file
每个用户的数据文件名称必须一直
每个用户的数据文件名称必须一直
在用例层中,在获取数据时,需要指定哪个用户的哪个表
@pytest.mark.parametrize("忽略的字段名...", ReadExcel(username="指定用户名", table_name="指定工作表名称").get_data())
def test_bpm(忽略的形参名名...):
\ No newline at end of file
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"admin", "password":"MTIzNDU2"},
"LoginErrorPasswordIsNone":{"username":"admin", "password":""},
"LoginErrorPasswordIsShort":{"username":"admin", "password":"s"},
"LoginErrorPasswordIsLong":{"username":"admin", "password":"MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2"},
"LoginErrorPasswordIsSpecialChar":{"username":"admin", "password":"▣▤▥▦▩◘◈"},
"LoginErrorPasswordIsError":{"username":"admin", "password":"MTIzNDU232"},
"LoginErrorUsernameIsError":{"username":"admin123", "password":"MTIzNDU2"},
"LoginErrorUsernameIsSpecialChar":{"username":"▣▤▥▦▩◘◈", "password":"MTIzNDU2"},
"LoginErrorUsernameParamIsUser":{"user":"admin", "password":"MTIzNDU2"},
"LonginErrorUsernameIsLong":{"username":"adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin", "password":"MTIzNDU2"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"code": "abc_123_xyz","description": "abc_123_xyz","isDefault": 0,"name": "接口自动化框架"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"code": "abc_123_xyz"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "不知道"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "add_org_test",
"demId": "不知道",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "接口自动化框架添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"组织加入用户": {
"OrgAddUserSuccess": {"orgCode":"add_org_test", "accounts": "admin"}
},
"删除组织": {
"DeleteOrgSuccess": "add_org_test"
}
}
}
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员"},
"LoginErrorPasswordIsNone":{"message":"账号或密码错误"},
"LoginErrorPasswordIsShort":{"message":"账号或密码错误"},
"LoginErrorPasswordIsLong":{"message":"账号或密码错误"},
"LoginErrorPasswordIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorPasswordIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorUsernameParamIsUser":{"message":"账号或密码错误"},
"LonginErrorUsernameIsLong":{"message":"账号或密码错误"}
},
"刷新token": {
"RefreshTokenSuccess": {"message": "刷新token成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"message": "添加维度成功"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"isDelete": "0"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功"}
},
"组织加入用户": {
"OrgAddUserSuccess": {"state":true,"message":"加入成功","value":""}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!","value":""}
}
}
}
{
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";",
"select": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
}
}
}
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"admin", "password":"MTIzNDU2"},
"LoginErrorPasswordIsNone":{"username":"admin", "password":""},
"LoginErrorPasswordIsShort":{"username":"admin", "password":"s"},
"LoginErrorPasswordIsLong":{"username":"admin", "password":"MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2"},
"LoginErrorPasswordIsSpecialChar":{"username":"admin", "password":"▣▤▥▦▩◘◈"},
"LoginErrorPasswordIsError":{"username":"admin", "password":"MTIzNDU232"},
"LoginErrorUsernameIsError":{"username":"admin123", "password":"MTIzNDU2"},
"LoginErrorUsernameIsSpecialChar":{"username":"▣▤▥▦▩◘◈", "password":"MTIzNDU2"},
"LoginErrorUsernameParamIsUser":{"user":"admin", "password":"MTIzNDU2"},
"LonginErrorUsernameIsLong":{"username":"adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin", "password":"MTIzNDU2"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"code": "abc_123_xyz","description": "abc_123_xyz","isDefault": 0,"name": "接口自动化框架"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"code": "abc_123_xyz"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "不知道"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "add_org_test",
"demId": "不知道",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "接口自动化框架添加的组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"组织加入用户": {
"OrgAddUserSuccess": {"orgCode":"add_org_test", "accounts": "admin"}
},
"删除组织": {
"DeleteOrgSuccess": "add_org_test"
},
"保存组织参数": {
"SaveOrgParamSuccess": {
"query": {"orgCode": "add_org_test"},
"body": [{"alias":"ah","value":"1,2"},{"alias":"sz","value":"成都"}]
}
}
}
}
{
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username":"超级管理员"},
"LoginErrorPasswordIsNone":{"message":"账号或密码错误"},
"LoginErrorPasswordIsShort":{"message":"账号或密码错误"},
"LoginErrorPasswordIsLong":{"message":"账号或密码错误"},
"LoginErrorPasswordIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorPasswordIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsError":{"message":"账号或密码错误"},
"LoginErrorUsernameIsSpecialChar":{"message":"账号或密码错误"},
"LoginErrorUsernameParamIsUser":{"message":"账号或密码错误"},
"LonginErrorUsernameIsLong":{"message":"账号或密码错误"}
},
"刷新token": {
"RefreshTokenSuccess": {"message": "刷新token成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"message": "添加维度成功"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"isDelete": "0"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"message": "删除维度成功"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"message": "添加组织成功"}
},
"组织加入用户": {
"OrgAddUserSuccess": {"state":true,"message":"加入成功","value":""}
},
"删除组织": {
"DeleteOrgSuccess": {"state":true,"message":"删除组织成功!","value":""}
},
"保存组织参数": {
"SaveOrgParamSuccess": {"state":true,"message":"保存组织参数成功!","value":""}
}
}
}
{
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";",
"select": "select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";"
}
}
}
}
[pytest]
;开启日志
log_cli=true
;设置日志的级别,如果不设置级别的话,可以设置为NOTSET,如果要设置级别,级别可以有debug,info,warning,error,致命
log_level=NOTSET
;设置日志显示的信息格式
log_format=%(levelname)s--%(asctime)s--%(message)s
;设置日志中时间显示的格式
log_date_format=%Y-%m-%d %H:%M:%S
;每个py文件运行的时候追加的命令
;addopts=-vs
;设置日志保存的文件
;log_file=../report/log/bpm_test.log
;设置日志保存在文件中的级别
log_file_level=NOTSET
;设置日志在文件中的信息格式
log_file_format=%(levelname)s--%(asctime)s--%(message)s
;设置文件日志中时间显示的格式
log_file_date_format=%Y-%m-%d %H:%M:%S
\ No newline at end of file
{"uuid": "b82ff25c-d305-448c-9b3f-bd61fde1f58e", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108426, "stop": 1710834108426}], "start": 1710834108426, "stop": 1710834108570}
\ No newline at end of file
{"uuid": "8e8f6a61-4275-4ad0-81b8-6412159b21f5", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108571}
\ No newline at end of file
{"uuid": "b5cfe10d-b878-42fb-a9d3-4eb535f5bc5c", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110091}
\ No newline at end of file
{"uuid": "0767fc81-e6b5-4ae4-bfe4-3f602efed411", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109986}
\ No newline at end of file
{"uuid": "eef4f2b8-7784-43e7-9458-d9c0412bdc95", "befores": [{"name": "update_key", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107621}
\ No newline at end of file
{"uuid": "0faf0638-b1f1-489f-b95f-c2fec1cc47ce", "befores": [{"name": "url", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108896}
\ No newline at end of file
{"uuid": "971a1a1f-4a4f-429d-bd70-d2715febf740", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106730}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:49","isDelete":"0","id":"1769992657137844224","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992657137844224"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/deleteOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/deleteOrg,请求的方法为:post,请求的媒体类型为:json, 请求的用例数据:add_org_test, 期望数据为:{'state': True, 'message': '删除组织成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;","value":""}
\ No newline at end of file
{"uuid": "71661cc5-3eb4-46e8-bb09-295f5b77789e", "befores": [{"name": "module_name", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106027}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin123', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992654172471296"}
\ No newline at end of file
{"uuid": "b4e22cda-87b1-47fd-b244-4bd86ab1b721", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107312}
\ No newline at end of file
{"uuid": "3c1f694b-3b85-43e2-8f1a-fad9ef540274", "children": ["3798e783-1f3a-43fb-bd3a-d689eaaa7607", "8bc06299-d13e-4839-84be-00775376ea05", "1bd55cdd-cb3f-4af7-a3af-3967a65dfc01", "572c51f3-034d-45e8-9b0c-fdd16e9f0e02", "e483661b-fc4c-4946-9261-6d9d2b2373ea", "e3f8ebed-e8f4-4364-8aef-1736d5cdfa94", "21ee0528-bf9d-4518-868c-e21f9c3cec3a", "04a6b91c-0cff-4edb-a7f6-fa7001716245", "e326b4cb-1997-471e-bb8a-cbdacd65bb70", "caeae498-c4fa-4fa6-ba29-e08dea5cc3a8", "6558a2d3-744f-461c-9b0b-be255022b773", "d6db2fad-7697-4457-b5d4-8e383530f162", "417adfdd-b538-44b2-8377-1cf769d49602", "0fb0f010-3199-4623-a40c-df0616643ae0", "f99c65d3-3812-4b38-9f65-c8d6e02597ff", "c0441c65-2731-42a0-be0a-f9ee32244bb3"], "befores": [{"name": "req_fix", "status": "passed", "start": 1710834105680, "stop": 1710834105781}], "afters": [{"name": "req_fix::0", "status": "passed", "start": 1710834110098, "stop": 1710834110098}], "start": 1710834105680, "stop": 1710834110098}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992654617067520"}
\ No newline at end of file
{"uuid": "1edce783-ad49-4603-82f1-543a51bb55f4", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108571}
\ No newline at end of file
{"uuid": "fed28b0f-948d-4795-9e3d-71672f0c5708", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834107089, "stop": 1710834107089}], "start": 1710834107089, "stop": 1710834107246}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992652956123136"}
\ No newline at end of file
{"uuid": "08a1094a-f391-48cc-a0c1-18802cbd2af8", "befores": [{"name": "url", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109594}
\ No newline at end of file
{"uuid": "e8e87ab3-cee0-4faa-9c02-1973b8fe9c59", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109992, "stop": 1710834109992}], "start": 1710834109992, "stop": 1710834110093}
\ No newline at end of file
{"uuid": "dc9e12d5-38a3-4a3f-95b7-bd11a370d453", "befores": [{"name": "update_key", "status": "passed", "start": 1710834107089, "stop": 1710834107089}], "start": 1710834107089, "stop": 1710834107245}
\ No newline at end of file
{"uuid": "c4e59322-6456-476b-84d6-f4445a7442ec", "befores": [{"name": "url", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107247}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
{"uuid": "41c372eb-8bd4-496b-bfcf-b986e617ce7f", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106140, "stop": 1710834106140}], "start": 1710834106140, "stop": 1710834106236}
\ No newline at end of file
{"uuid": "8f1a85a6-0552-41eb-bdff-acaf7e08d596", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106131}
\ No newline at end of file
{"uuid": "a91c94df-e550-48fc-80f3-4cf8467f656a", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106129}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=18778357549 HTTP/1.1" 200 None
\ No newline at end of file
{"uuid": "212955c1-cd76-4f69-baee-9324031761e4", "befores": [{"name": "mime", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109988}
\ No newline at end of file
{"uuid": "ddc1a84f-7e6d-4ee1-b082-2742271662a0", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108577, "stop": 1710834108577}], "start": 1710834108577, "stop": 1710834108629}
\ No newline at end of file
{"uuid": "47db98c0-df5b-426b-9a0a-7cdda2c9b284", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109075}
\ No newline at end of file
{"uuid": "bf4ab96c-7b40-4b07-ac0c-d19daea0d90a", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107745}
\ No newline at end of file
{"uuid": "f7729fbe-078e-4b59-a654-2a10a9239efa", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106730}
\ No newline at end of file
{"name": "根据维度编码获取维度信息的正向用例", "status": "passed", "attachments": [{"name": "log", "source": "0ec57f19-9c1d-4617-8a04-6bfe25bdc8b1-attachment.txt", "type": "text/plain"}], "start": 1710834108015, "stop": 1710834108106, "uuid": "8381d44d-2636-41c3-a1dd-2ad3eaf36f2e", "historyId": "6457de8282ef399aec143b4cafb61250", "testCaseId": "6457de8282ef399aec143b4cafb61250", "fullName": "test_case.test_场景.test_login_addDem_getDemMsg#test_get_dem_msg", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM-场景"}, {"name": "tag", "value": "dependency(depends=['test_add_dem'])"}, {"name": "parentSuite", "value": "test_case.test_场景"}, {"name": "suite", "value": "test_login_addDem_getDemMsg"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_场景.test_login_addDem_getDemMsg"}]}
\ No newline at end of file
{"name": "反向用例-password正确-username参数名为user", "status": "passed", "attachments": [{"name": "log", "source": "18590920-0079-493b-928c-2f9188bc2f5e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password正确-username参数名为user'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'user': 'admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106642, "stop": 1710834106727, "uuid": "e326b4cb-1997-471e-bb8a-cbdacd65bb70", "historyId": "0c28b443652de3fd75b1d682ff543180", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "f78b3898-4de9-4892-8dc1-701c4fdbc5af", "befores": [{"name": "url", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107551}
\ No newline at end of file
{"uuid": "250cd41a-2733-413a-b526-4851f4654059", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109789}
\ No newline at end of file
{"uuid": "a4649242-4386-4788-8c54-679a75eccffa", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109374, "stop": 1710834109374}], "start": 1710834109374, "stop": 1710834109525}
\ No newline at end of file
{"uuid": "b5784a92-682a-421b-a00a-c782599efb6e", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108821}
\ No newline at end of file
{"uuid": "7903f723-48dc-4a2e-a31a-b8c607628484", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110091}
\ No newline at end of file
{"uuid": "c761d0f8-609b-4408-9727-ceb553d7cd47", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109786}
\ No newline at end of file
{"name": "反向用例-username正确-password为空", "status": "passed", "attachments": [{"name": "log", "source": "bb557d36-ac9c-4e89-8f4f-25a0995bbff2-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username正确-password为空'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': ''}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834105848, "stop": 1710834105901, "uuid": "8bc06299-d13e-4839-84be-00775376ea05", "historyId": "84a645c7fde7c9d82679e72341e909ac", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "2cb8d1cc-8d3a-4f5d-8866-cde86c439eec", "befores": [{"name": "module_name", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107249}
\ No newline at end of file
{"uuid": "377102b8-551d-423e-9678-adbeabc51aad", "befores": [{"name": "api_name", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105844}
\ No newline at end of file
{"uuid": "96fc3722-a2f4-4f1e-a83a-15a7606e0535", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109374, "stop": 1710834109374}], "start": 1710834109374, "stop": 1710834109525}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/deleteOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/deleteOrg,请求的方法为:post,请求的媒体类型为:json, 请求的用例数据:add_org_test, 期望数据为:{'state': True, 'message': '删除组织成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;","value":""}
\ No newline at end of file
{"uuid": "17980f98-3978-4a12-9cf5-f1fbe9e3e63b", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109987}
\ No newline at end of file
{"uuid": "11c1d299-7a23-4e09-ad53-3d3e7959cee9", "befores": [{"name": "method", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108895}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'user': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992655019720704"}
\ No newline at end of file
{"uuid": "a37c4f09-b84d-426c-a5fc-f794a155704a", "befores": [{"name": "case_level", "status": "passed", "start": 1710834107628, "stop": 1710834107629}], "start": 1710834107628, "stop": 1710834107748}
\ No newline at end of file
{"uuid": "13abe21b-b570-4f5b-9abe-d9ef20783d4a", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106130}
\ No newline at end of file
{"uuid": "5a09caf0-1d12-45a4-ae32-3cdbdf6c6dcd", "befores": [{"name": "method", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109593}
\ No newline at end of file
{"uuid": "7ef9ead0-a8e3-4beb-8643-3bd9781db878", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109854}
\ No newline at end of file
{"uuid": "b6268a71-1fa2-4387-aa4b-ff35650b9e55", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106423}
\ No newline at end of file
{"uuid": "526110d0-e0f5-4502-aaaa-3dc06d304498", "befores": [{"name": "mime", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109922}
\ No newline at end of file
{"uuid": "9ebf825b-63b8-47d1-aeb1-016e0befed56", "befores": [{"name": "case_level", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105904}
\ No newline at end of file
{"uuid": "5606d486-9012-4809-8265-6da3b9fc1da2", "befores": [{"name": "mime", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106425}
\ No newline at end of file
{"uuid": "e8c45b5c-e060-40ce-bb28-297f36cc1453", "befores": [{"name": "url", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107748}
\ No newline at end of file
{"uuid": "a169ba2a-510b-4141-9004-ae0a6bd7df70", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106834}
\ No newline at end of file
{"uuid": "c528cea7-ecb1-4853-a5de-d90f1731b090", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108822}
\ No newline at end of file
{"uuid": "cfdc4735-2db9-476d-95a6-a0a5ba59e913", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109588}
\ No newline at end of file
{"uuid": "b4c90444-16c4-4497-a719-f0dd560e4445", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107622}
\ No newline at end of file
{"uuid": "2c4a23fc-ff86-4dd1-b86b-1afa8d96ad2f", "befores": [{"name": "case_data", "status": "passed", "start": 1710834105781, "stop": 1710834105782}], "start": 1710834105781, "stop": 1710834105842}
\ No newline at end of file
{"uuid": "0342202f-e345-4b13-85d9-2534a1e5bfd7", "befores": [{"name": "url", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106529}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992662695297024 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992662695297024'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
\ No newline at end of file
{"uuid": "cdf8b527-b98a-44d0-94ca-466b082826c6", "befores": [{"name": "case_title", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105844}
\ No newline at end of file
{"uuid": "3b37de4e-e187-4cf7-923e-8320b6dc9c99", "befores": [{"name": "mime", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105842}
\ No newline at end of file
{"uuid": "f8481641-84f9-453b-aaaf-9def499a33b3", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106640, "stop": 1710834106640}], "start": 1710834106640, "stop": 1710834106733}
\ No newline at end of file
{"uuid": "b1ad8447-f590-449b-9310-5f28dec1a1e9", "befores": [{"name": "update_key", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105901}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:51","isDelete":"0","id":"1769992666658914304","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992666658914304"}
\ No newline at end of file
{"uuid": "82f79b65-6fb5-4914-842b-9f6728781a77", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108969}
\ No newline at end of file
{"uuid": "b5dccc4b-5288-443d-91c3-76ad3af19782", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105902}
\ No newline at end of file
{"uuid": "7c1453b7-0300-4750-9ff9-bcccbcc7ceff", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109529, "stop": 1710834109529}], "start": 1710834109529, "stop": 1710834109596}
\ No newline at end of file
{"uuid": "8a96ae57-dc68-400d-b31f-3a00594590d8", "befores": [{"name": "api_name", "status": "passed", "start": 1710834107252, "stop": 1710834107252}], "start": 1710834107252, "stop": 1710834107316}
\ No newline at end of file
{"uuid": "a2311ccb-5818-4134-b707-f5fa1bcc7c24", "befores": [{"name": "case_title", "status": "passed", "start": 1710834107252, "stop": 1710834107252}], "start": 1710834107252, "stop": 1710834107316}
\ No newline at end of file
{"uuid": "cdaa3020-daca-42b8-8e5c-511576ac3b77", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106423}
\ No newline at end of file
{"uuid": "25c271bb-0d30-4d0f-b659-d2b56ba4466d", "children": ["327f2f33-b297-4ae2-b854-47228b588905", "6da6d055-ea38-4f55-96d6-18742db585d2", "bbdd515a-7bed-4f46-a71a-a3c17c4f443b", "ea4854de-3b23-4541-8585-8df1cba05ce8", "9b75d70b-7913-4860-bba8-47ec1ab7ad59", "484feaa9-ee25-4ff3-a091-cefbde342769"], "befores": [{"name": "req_fix", "status": "passed", "start": 1710834108330, "stop": 1710834108424}], "afters": [{"name": "req_fix::0", "status": "passed", "start": 1710834110096, "stop": 1710834110096}], "start": 1710834108330, "stop": 1710834110096}
\ No newline at end of file
{"uuid": "658e1939-e57a-4801-b793-f2fa81d43274", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108968}
\ No newline at end of file
{"uuid": "99b6312b-f1c9-4815-9466-9bc4d500aa96", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109375, "stop": 1710834109375}], "start": 1710834109375, "stop": 1710834109523}
\ No newline at end of file
{"uuid": "da104b68-9487-4b5a-9427-9ae87921d133", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106019}
\ No newline at end of file
{"uuid": "b4e90328-cce6-4a25-9984-55a26086e383", "children": ["fe3166ff-6798-4876-bf9e-4983c6001921", "c2740ecf-cade-45e2-bd84-dacb179fd408", "6e488b18-dbcc-47c6-8544-f2d66b79310b", "20695645-938e-4ba9-9662-4356fc7a2a32", "023da189-ccee-4da3-b551-88002173f580", "cdd5eb68-3424-4477-b3ea-f6ecb1c87a5f", "c99dad99-7d95-4196-926a-7fd833d82b3c"], "befores": [{"name": "db_fix", "status": "passed", "start": 1710834109080, "stop": 1710834109277}], "afters": [{"name": "db_fix::0", "status": "passed", "start": 1710834110095, "stop": 1710834110095}], "start": 1710834109080, "stop": 1710834110095}
\ No newline at end of file
{"name": "添加维度场景用例的正向用例", "status": "passed", "attachments": [{"name": "log", "source": "cd6b34d1-2750-4efc-aae1-afbbf8db15f6-attachment.txt", "type": "text/plain"}], "start": 1710834107857, "stop": 1710834108010, "uuid": "3f650351-c96c-4294-9354-e577db6f017c", "historyId": "339271251d5b9f0017a531e684ad7baf", "testCaseId": "339271251d5b9f0017a531e684ad7baf", "fullName": "test_case.test_场景.test_login_addDem_getDemMsg#test_add_dem", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "epic", "value": "BPM-场景"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency(depends=['test_login'])"}, {"name": "parentSuite", "value": "test_case.test_场景"}, {"name": "suite", "value": "test_login_addDem_getDemMsg"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_场景.test_login_addDem_getDemMsg"}]}
\ No newline at end of file
{"uuid": "60198006-0660-4d6e-b741-b1553085422f", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107080}
\ No newline at end of file
{"uuid": "ca9805a5-e8cf-4d66-b961-ee676370ccfd", "befores": [{"name": "update_key", "status": "passed", "start": 1710834105782, "stop": 1710834105782}], "start": 1710834105782, "stop": 1710834105840}
\ No newline at end of file
{"uuid": "bd40c43f-7943-49b5-be55-b70987641770", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109918}
\ No newline at end of file
{"uuid": "281aee31-0084-4a88-ac54-65bd130f6ce4", "befores": [{"name": "method", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109922}
\ No newline at end of file
{"uuid": "265a848e-9417-499c-aa11-c9c51928aca5", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106536, "stop": 1710834106536}], "start": 1710834106536, "stop": 1710834106634}
\ No newline at end of file
{"uuid": "a287f612-c7e1-4630-b40d-077ef44e6ef0", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108625}
\ No newline at end of file
{"uuid": "b67cfc2d-9e50-439f-b246-d2f8c0b372c0", "befores": [{"name": "url", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105843}
\ No newline at end of file
{"uuid": "c2001963-2fec-430b-8701-52ac32c3046d", "befores": [{"name": "method", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106426}
\ No newline at end of file
{"uuid": "bbbee882-af6e-4816-b637-2d37a6781430", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109584}
\ No newline at end of file
{"uuid": "ef83dcbf-52e4-4ba0-bf56-b3a3519b8d8e", "befores": [{"name": "method", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107551}
\ No newline at end of file
{"uuid": "10a1d1a6-f9ad-485e-a1d5-64f33af7c8ce", "befores": [{"name": "method", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105842}
\ No newline at end of file
{"uuid": "cb093b12-6d44-4c8c-83e8-293dc48963d8", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109072}
\ No newline at end of file
{"uuid": "86196ead-23c8-4b3c-81e5-bef6cad969f2", "befores": [{"name": "method", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109788}
\ No newline at end of file
{"uuid": "f7510251-88ab-4cbb-8901-dc0d52c54d95", "befores": [{"name": "case_level", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107624}
\ No newline at end of file
{"uuid": "9e079385-2766-4845-b9ec-9e86712b1977", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108907, "stop": 1710834108907}], "start": 1710834108907, "stop": 1710834108963}
\ No newline at end of file
{"uuid": "d3544866-bf6b-40c9-9557-35953d7c99ff", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107622}
\ No newline at end of file
{"uuid": "4c1b54f5-405a-479f-b157-b0cafd9c6e67", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108626}
\ No newline at end of file
{"uuid": "3ac7273c-21c0-4b52-a766-ac6f9dd857c6", "befores": [{"name": "mime", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109788}
\ No newline at end of file
{"uuid": "9b9b936f-f9d3-4f9d-aa0f-2a74f847cc52", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109073}
\ No newline at end of file
{"uuid": "b1507f3d-f3f1-4ee8-8686-3bcc3fa10bb8", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108575}
\ No newline at end of file
{"uuid": "b240d340-a7e9-4c30-8927-746692d3417f", "befores": [{"name": "method", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108823}
\ No newline at end of file
{"uuid": "66c871a0-0726-441f-8993-dff413d9d012", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108575}
\ No newline at end of file
{"name": "正向用例-username和password正确的传入", "status": "passed", "attachments": [{"name": "log", "source": "522f0803-356a-40c3-a46d-de9eb5757aa9-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'正向用例-username和password正确的传入'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'username': '超级管理员'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834105782, "stop": 1710834105839, "uuid": "3798e783-1f3a-43fb-bd3a-d689eaaa7607", "historyId": "3f1d35f4066c84617f08afff18c7d140", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "c1052d97-1e5d-4bba-8669-746163571033", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106239}
\ No newline at end of file
{"uuid": "e874a05e-fcd8-4136-82a8-fd6408deab0a", "befores": [{"name": "mime", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108894}
\ No newline at end of file
{"uuid": "e82e7ce2-8757-4e2e-9fb9-0b8b573b9c62", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108824}
\ No newline at end of file
{"uuid": "fc47d393-ec2e-478c-b5bb-a26b13ff5136", "befores": [{"name": "url", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108968}
\ No newline at end of file
{"uuid": "d83beb5f-cb7a-4cff-a6e2-9339d30513de", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109375, "stop": 1710834109375}], "start": 1710834109375, "stop": 1710834109523}
\ No newline at end of file
{"uuid": "94b364e6-215f-44f6-a96d-ac62019965df", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108577, "stop": 1710834108577}], "start": 1710834108577, "stop": 1710834108629}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "6801e59f-2bd5-456e-8e78-0e0824696595-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码获取维度信息'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"}, {"name": "method", "value": "'GET'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz'}"}, {"name": "expect_data", "value": "{'isDelete': '0'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834108579, "stop": 1710834108625, "uuid": "6da6d055-ea38-4f55-96d6-18742db585d2", "historyId": "2827ec579aa9fd4f105f24206a812cd8", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"uuid": "b268ad15-d78f-4065-a1a2-f4bfbe56c4f5", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106526}
\ No newline at end of file
{"uuid": "3c9d0998-dda9-43f4-9729-7470925dc7c5", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106834}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU232'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992653740457984"}
\ No newline at end of file
{"uuid": "80aff211-fa44-43ce-a971-c4e9f4db8f5c", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106527}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x0000026CCD67F540>('message')\nE + where <built-in method get of dict object at 0x0000026CCD67F540> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...} = <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_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "d7e0516b-90a2-44ff-9686-3006c499e0f8-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'刷新token'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/refresh'"}, {"name": "method", "value": "'GET'"}, {"name": "mime", "value": "None"}, {"name": "case_data", "value": "None"}, {"name": "expect_data", "value": "{'message': '刷新token成功'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106842, "stop": 1710834106946, "uuid": "6558a2d3-744f-461c-9b0b-be255022b773", "historyId": "4d7f15aa42496f6b3aac520628b680f8", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
{"uuid": "3a1a09ed-415c-418a-b257-8e7333836898", "befores": [{"name": "mime", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106021}
\ No newline at end of file
{"uuid": "f5c23c71-822b-46b6-bf76-70aaca163fdf", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107547}
\ No newline at end of file
{"uuid": "73f07f5b-c3d4-4058-a3d2-5393944c820b", "befores": [{"name": "mime", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107747}
\ No newline at end of file
{"uuid": "fdf23097-10fd-46e5-b5f2-684b91d91943", "befores": [{"name": "url", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106637}
\ No newline at end of file
{"uuid": "33a33274-07ff-4322-9d18-35c171800b02", "befores": [{"name": "module_name", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105844}
\ No newline at end of file
{"uuid": "2e391906-1d51-4895-b429-f29a0b2b6d7c", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109595}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "17cee93e-3f1c-421b-a71d-fabfa5d66cb5-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "'add_org_test'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834108908, "stop": 1710834108954, "uuid": "9b75d70b-7913-4860-bba8-47ec1ab7ad59", "historyId": "1c1f33c035e6f92d84e4975fce86c461", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"uuid": "fb70103b-f8de-44cc-93d1-c011c4aff828", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106729}
\ No newline at end of file
{"uuid": "858902ea-3c2f-4333-aa3a-e585b4fec202", "befores": [{"name": "url", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106835}
\ No newline at end of file
{"uuid": "5a07cd7e-97a3-4e90-b67c-84b112414d9a", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108907, "stop": 1710834108907}], "start": 1710834108907, "stop": 1710834108966}
\ No newline at end of file
{"uuid": "88eb65a3-3b06-437c-9c23-e13d73414000", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106428}
\ No newline at end of file
{"name": "反向用例-username正确-password错误", "status": "passed", "attachments": [{"name": "log", "source": "45c498aa-9de8-4baf-a0d4-ee02053a4864-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username正确-password错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU232'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106334, "stop": 1710834106422, "uuid": "e3f8ebed-e8f4-4364-8aef-1736d5cdfa94", "historyId": "fd1e9dc7571725f00460ad181c6eea4a", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=add_org_test HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams,请求的方法为:post,请求的媒体类型为:query|json, 请求的用例数据:{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}, 期望数据为:{'state': True, 'message': '保存组织参数成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"保存组织参数成功!","value":""}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'username': '超级管理员'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA5MjA1MDcsImlhdCI6MTcxMDgzNDEwN30.5-9_T8K6JmUaVfkXaZNsgQUd6NRK20Qnu0HpwlXiJuwIUuIFoRZID8TYowr3HdGuEcUz2gCGPzchHgns0Z65kw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
{"uuid": "642ce963-1088-4803-a870-4450a29caca6", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106030, "stop": 1710834106030}], "start": 1710834106030, "stop": 1710834106136}
\ No newline at end of file
{"uuid": "869270b6-0a24-4a8d-b41f-bf87609ec2fc", "befores": [{"name": "url", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109788}
\ No newline at end of file
{"name": "反向用例-username正确-password过短", "status": "passed", "attachments": [{"name": "log", "source": "c8a8a014-f463-4cfd-9193-e07456e502c0-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username正确-password过短'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 's'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834105910, "stop": 1710834106011, "uuid": "1bd55cdd-cb3f-4af7-a3af-3967a65dfc01", "historyId": "0b4007425d760c6c570fb3eb7e4fac7b", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "9707ae87-6933-49f3-89fd-79a600b9bfd3", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109927, "stop": 1710834109927}], "start": 1710834109927, "stop": 1710834109989}
\ No newline at end of file
{"uuid": "43d616d6-0dcd-457c-8242-432a8dfdeeb8", "befores": [{"name": "url", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106023}
\ No newline at end of file
{"uuid": "e2bc6a5f-fb2b-408f-b0ac-2ffe018bd141", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106140, "stop": 1710834106140}], "start": 1710834106140, "stop": 1710834106237}
\ No newline at end of file
{"uuid": "e76d0380-62a8-4107-9dee-46b7fc064ea2", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107548}
\ No newline at end of file
{"uuid": "6beb4e71-9f4f-42a0-bc3e-e4cff34b2d33", "befores": [{"name": "mime", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106731}
\ No newline at end of file
{"uuid": "cdbd27d8-62bf-4708-b4b4-022c60355441", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109859, "stop": 1710834109859}], "start": 1710834109859, "stop": 1710834109924}
\ No newline at end of file
{"uuid": "0eeb5b67-e900-433a-8d9f-3334d5753ea6", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105902}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
{"uuid": "60bcec97-3520-4eec-8a95-7d088d4e955e", "befores": [{"name": "mime", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108627}
\ No newline at end of file
{"uuid": "f70a3900-4d32-4bf4-b201-65e3142e2f52", "befores": [{"name": "url", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108824}
\ No newline at end of file
{"name": "反向用例-password正确-username过长", "status": "passed", "attachments": [{"name": "log", "source": "bac0c8f1-345a-4f31-9d22-474c6439e55e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password正确-username过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106737, "stop": 1710834106832, "uuid": "caeae498-c4fa-4fa6-ba29-e08dea5cc3a8", "historyId": "72775e34cc18a89b5bc4a4e468d0b424", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "f9d377e1-fc02-4254-853a-6746a50f1349", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107080}
\ No newline at end of file
{"uuid": "9881a4fe-c74e-4de1-9dfe-c6861b916bd3", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109919}
\ No newline at end of file
{"uuid": "55e5531e-b0da-4e5c-aaa3-ed66daef429b", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108823}
\ No newline at end of file
{"uuid": "2eeada29-cc74-49ea-bcd1-f22bbf2ffd8f", "befores": [{"name": "case_title", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105905}
\ No newline at end of file
{"uuid": "528bff1a-397f-44f5-a9aa-10fd5b17185f", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108830, "stop": 1710834108830}], "start": 1710834108830, "stop": 1710834108892}
\ No newline at end of file
{"uuid": "ac8fc228-14dd-4b0d-ab58-4b8dfac2358e", "befores": [{"name": "method", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105904}
\ No newline at end of file
{"uuid": "6b6e1744-1800-49d7-a94f-c69663b8539b", "befores": [{"name": "module_name", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105906}
\ No newline at end of file
{"uuid": "dae1d805-dab5-45f2-a9ce-9dc9f3396aef", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106840, "stop": 1710834106840}], "start": 1710834106840, "stop": 1710834107083}
\ No newline at end of file
{"uuid": "5aafd490-3d9f-4bc2-967c-9db162cb22cb", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109927, "stop": 1710834109927}], "start": 1710834109927, "stop": 1710834109990}
\ No newline at end of file
{"uuid": "e38481b8-fd29-40df-8cf1-a53a37a69309", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106240}
\ No newline at end of file
{"uuid": "aa877499-8fa5-4f48-a5f1-5ad75a03bc7b", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108969}
\ No newline at end of file
{"uuid": "696063c7-f700-4af4-a6b5-d9996f3963db", "children": ["3798e783-1f3a-43fb-bd3a-d689eaaa7607", "8bc06299-d13e-4839-84be-00775376ea05", "1bd55cdd-cb3f-4af7-a3af-3967a65dfc01", "572c51f3-034d-45e8-9b0c-fdd16e9f0e02", "e483661b-fc4c-4946-9261-6d9d2b2373ea", "e3f8ebed-e8f4-4364-8aef-1736d5cdfa94", "21ee0528-bf9d-4518-868c-e21f9c3cec3a", "04a6b91c-0cff-4edb-a7f6-fa7001716245", "e326b4cb-1997-471e-bb8a-cbdacd65bb70", "caeae498-c4fa-4fa6-ba29-e08dea5cc3a8", "6558a2d3-744f-461c-9b0b-be255022b773", "d6db2fad-7697-4457-b5d4-8e383530f162", "417adfdd-b538-44b2-8377-1cf769d49602", "0fb0f010-3199-4623-a40c-df0616643ae0", "f99c65d3-3812-4b38-9f65-c8d6e02597ff", "c0441c65-2731-42a0-be0a-f9ee32244bb3", "25d70af6-4060-45c5-ac47-e88dfe4c7f62", "3f650351-c96c-4294-9354-e577db6f017c", "8381d44d-2636-41c3-a1dd-2ad3eaf36f2e", "327f2f33-b297-4ae2-b854-47228b588905", "6da6d055-ea38-4f55-96d6-18742db585d2", "bbdd515a-7bed-4f46-a71a-a3c17c4f443b", "ea4854de-3b23-4541-8585-8df1cba05ce8", "9b75d70b-7913-4860-bba8-47ec1ab7ad59", "484feaa9-ee25-4ff3-a091-cefbde342769", "fe3166ff-6798-4876-bf9e-4983c6001921", "c2740ecf-cade-45e2-bd84-dacb179fd408", "6e488b18-dbcc-47c6-8544-f2d66b79310b", "20695645-938e-4ba9-9662-4356fc7a2a32", "023da189-ccee-4da3-b551-88002173f580", "cdd5eb68-3424-4477-b3ea-f6ecb1c87a5f", "c99dad99-7d95-4196-926a-7fd833d82b3c"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1710834105400, "stop": 1710834105469}], "start": 1710834105400, "stop": 1710834110095}
\ No newline at end of file
{"uuid": "3ef67c4a-493d-44c1-873e-c674012d58d3", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109076}
\ No newline at end of file
{"uuid": "1703debc-c16b-452c-88e7-5b7858285233", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108902}
\ No newline at end of file
{"uuid": "d42c0f3f-2519-43ee-97cb-3efcd3cecef0", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106635}
\ No newline at end of file
{"uuid": "83d13557-39fa-48ff-b7b7-b81995199eea", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108627}
\ No newline at end of file
{"uuid": "7177fa4f-891e-49dd-8373-f9c43c9151c7", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110093}
\ No newline at end of file
{"uuid": "a872c6c7-f5da-4350-aac1-f3b2c4c0d5c0", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109786}
\ No newline at end of file
{"uuid": "2e4256e6-1671-43d2-87fd-8016140e2bc9", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108626}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:50","isDelete":"0","id":"1769992662695297024","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992662695297024"}
\ No newline at end of file
{"uuid": "6ea46e20-6e8e-4024-91ce-69313fcdac22", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108907, "stop": 1710834108907}], "start": 1710834108907, "stop": 1710834108965}
\ No newline at end of file
{"uuid": "363579d3-c0ea-47f2-bd97-b8cb1580b62e", "befores": [{"name": "mime", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106835}
\ No newline at end of file
{"uuid": "576afbde-5732-4fe8-8dff-743de996f931", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109374, "stop": 1710834109374}], "start": 1710834109374, "stop": 1710834109526}
\ No newline at end of file
{"uuid": "d82bac0a-77f2-4d89-a1fd-68da21457971", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107622}
\ No newline at end of file
{"uuid": "5a975a4c-c591-4b7f-9453-4a907c9f2819", "befores": [{"name": "mime", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107081}
\ No newline at end of file
{"uuid": "fc729f95-8dda-4e1c-a278-9e5ed65d2621", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107082}
\ No newline at end of file
{"uuid": "bfd142fd-8888-4560-9dde-f8b7033fc351", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106427}
\ No newline at end of file
{"uuid": "20385952-bdb2-4685-b8f5-1fe77b6f0034", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109375, "stop": 1710834109375}], "start": 1710834109375, "stop": 1710834109522}
\ No newline at end of file
{"uuid": "79e35efe-fc0b-4a63-80dd-d9d3fcff86c8", "befores": [{"name": "method", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109796, "stop": 1710834109855}
\ No newline at end of file
{"uuid": "9c9f9f7d-5503-40c7-be5f-464e6dc69349", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106732}
\ No newline at end of file
{"uuid": "a03eac28-373c-447f-9d2d-8a5f307c7a63", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110090}
\ No newline at end of file
{"uuid": "f1e6cf9c-055f-4b6c-b167-05629f58e5e7", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107311}
\ No newline at end of file
{"uuid": "3d6d70e2-486c-4e9c-8768-1e1f94ce02eb", "befores": [{"name": "case_level", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107248}
\ No newline at end of file
{"uuid": "a53a0adc-1e2f-4451-a084-bdd60914dca3", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106536, "stop": 1710834106536}], "start": 1710834106536, "stop": 1710834106633}
\ No newline at end of file
{"uuid": "c232d2c6-a5e8-465f-b159-bbeb82f5e6fe", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109075}
\ No newline at end of file
{"uuid": "f47b491f-24ab-4399-8bb2-a17dcc9df3f1", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834105782, "stop": 1710834105782}], "start": 1710834105782, "stop": 1710834105841}
\ No newline at end of file
{"uuid": "3944f76c-e878-4d26-857a-521ec6b905ad", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109927, "stop": 1710834109928}], "start": 1710834109927, "stop": 1710834109989}
\ No newline at end of file
{"uuid": "46fa34f0-b21b-44ca-919f-c42a4e5f3689", "befores": [{"name": "case_data", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107549}
\ No newline at end of file
{"uuid": "38195346-89f5-4a43-afe1-cac8018ee4f6", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109529, "stop": 1710834109529}], "start": 1710834109529, "stop": 1710834109597}
\ No newline at end of file
{"uuid": "2df72527-ce51-421d-8486-a40fc28bc337", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108830, "stop": 1710834108830}], "start": 1710834108830, "stop": 1710834108889}
\ No newline at end of file
{"uuid": "2aedce34-c63b-42e6-9072-a1675cf7e9d7", "befores": [{"name": "method", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106133}
\ No newline at end of file
{"uuid": "dd9ec383-4db4-42e1-a0c6-415da03d8d63", "befores": [{"name": "mime", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110092}
\ No newline at end of file
{"uuid": "c109fd1f-a1cd-467b-a359-4176fb502585", "befores": [{"name": "url", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106238}
\ No newline at end of file
{"uuid": "c424593c-41fb-40e9-8f1f-66dd5a1f0c3e", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106132}
\ No newline at end of file
{"uuid": "a5708eab-b4a7-4f56-9681-a0616e9ebd08", "befores": [{"name": "api_name", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106026}
\ No newline at end of file
{"uuid": "7145f249-50d5-48cb-a92c-880955128a53", "befores": [{"name": "mime", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106636}
\ No newline at end of file
{"uuid": "5405eab6-87a9-471a-a7c0-de1f1afa8934", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108901}
\ No newline at end of file
{"uuid": "0cfb58f9-8ffc-49ae-a407-86eb2a7b25ec", "befores": [{"name": "case_data", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107747}
\ No newline at end of file
{"uuid": "514ed69b-bd28-42b1-91bb-61e60fa9ce02", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109859, "stop": 1710834109859}], "start": 1710834109859, "stop": 1710834109924}
\ No newline at end of file
{"uuid": "46314518-4cc6-4c04-8deb-8e1d8329f7e0", "befores": [{"name": "module_name", "status": "passed", "start": 1710834107628, "stop": 1710834107628}], "start": 1710834107628, "stop": 1710834107749}
\ No newline at end of file
{"uuid": "7f5fbfae-02ee-4a4d-ac0e-892fe3163f60", "befores": [{"name": "api_name", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105906}
\ No newline at end of file
{"uuid": "d15cb1c7-d2b5-49f6-b361-fd16dcbd3583", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106727}
\ No newline at end of file
{"uuid": "1d6b0817-83e7-44d6-b365-ba27e79853f5", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107312}
\ No newline at end of file
{"uuid": "fb02656e-8cac-41fb-aee7-ad2d8885702f", "befores": [{"name": "method", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107747}
\ No newline at end of file
{"uuid": "a0ddecf5-2f52-49f8-a5a0-4ff57ab4630e", "children": ["327f2f33-b297-4ae2-b854-47228b588905", "6da6d055-ea38-4f55-96d6-18742db585d2", "bbdd515a-7bed-4f46-a71a-a3c17c4f443b", "ea4854de-3b23-4541-8585-8df1cba05ce8", "9b75d70b-7913-4860-bba8-47ec1ab7ad59", "484feaa9-ee25-4ff3-a091-cefbde342769"], "befores": [{"name": "db_fix", "status": "passed", "start": 1710834108120, "stop": 1710834108330}], "afters": [{"name": "db_fix::0", "status": "passed", "start": 1710834110097, "stop": 1710834110097}], "start": 1710834108120, "stop": 1710834110097}
\ No newline at end of file
{"uuid": "98863d26-c232-4fe4-9dad-ff6d2a69e2fd", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108969}
\ No newline at end of file
{"uuid": "1e77096e-3aae-48cc-b823-eca1f340056f", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108907, "stop": 1710834108907}], "start": 1710834108907, "stop": 1710834108965}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "9bdfff07-fc2a-4d49-9161-0b37d5e43d19-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "method", "value": "'DELETE'"}, {"name": "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_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1710834107630, "stop": 1710834107735, "uuid": "c0441c65-2731-42a0-be0a-f9ee32244bb3", "historyId": "f811c3c764a51055a39c4a135caed955", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "2881cde8-a944-4548-9ccf-b6a5cee40511-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码获取维度信息'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"}, {"name": "method", "value": "'GET'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz'}"}, {"name": "expect_data", "value": "{'isDelete': '0'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834109531, "stop": 1710834109582, "uuid": "c2740ecf-cade-45e2-bd84-dacb179fd408", "historyId": "3239d8081f3b600ad0a2f6654d9e9540", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码获取维度信息"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "12bf3662-4e79-461c-b45a-b558d5213fa1", "befores": [{"name": "method", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106022}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "05807d40-8927-47e5-99f6-b5bf6e64685f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码获取维度信息'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"}, {"name": "method", "value": "'GET'"}, {"name": "mime", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz'}"}, {"name": "expect_data", "value": "{'isDelete': '0'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834107254, "stop": 1710834107310, "uuid": "417adfdd-b538-44b2-8377-1cf769d49602", "historyId": "e35c07d1a54c9b1864fbca3756d67c5f", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "42147a98-d742-48a9-a1c7-4bc486d8bf94", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106140, "stop": 1710834106140}], "start": 1710834106140, "stop": 1710834106236}
\ No newline at end of file
{"uuid": "3febc5ee-6e75-4e15-8e89-5d400d641ddf", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106430, "stop": 1710834106430}], "start": 1710834106430, "stop": 1710834106530}
\ No newline at end of file
{"uuid": "047ca934-cc7c-4352-9c86-417439380a91", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107079}
\ No newline at end of file
{"uuid": "ae4c75a7-9fd7-4301-a245-38e2f8ca6f31", "befores": [{"name": "case_data", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106020}
\ No newline at end of file
{"uuid": "ea9ae760-dab5-47fb-b174-20c3f3e2df0c", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108823}
\ No newline at end of file
{"uuid": "567a10bc-762e-4574-8639-3a58dec6016f", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109859, "stop": 1710834109859}], "start": 1710834109859, "stop": 1710834109925}
\ No newline at end of file
{"uuid": "5dd4d9e0-4bea-4060-9b04-8b5cdcbc0ba9", "befores": [{"name": "mime", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106238}
\ No newline at end of file
{"uuid": "84c3a990-75c7-4d8e-ba79-f413c4e7385e", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109850}
\ No newline at end of file
{"uuid": "f7b7ca93-72eb-4813-90e9-4242dbd672e9", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106640, "stop": 1710834106640}], "start": 1710834106640, "stop": 1710834106733}
\ No newline at end of file
{"uuid": "5e3e84a1-a524-4b0e-afcb-1316033399ea", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109787}
\ No newline at end of file
{"uuid": "43f5e753-b52c-4ca9-bbbe-9eac6bec2cd3", "befores": [{"name": "case_level", "status": "passed", "start": 1710834105781, "stop": 1710834105781}], "start": 1710834105781, "stop": 1710834105843}
\ No newline at end of file
{"uuid": "750a54c0-70eb-47cc-905c-ac7c6124fce3", "befores": [{"name": "mime", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109074}
\ No newline at end of file
{"uuid": "17723552-333b-4b7a-acfa-a1fe95eaf6df", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108574}
\ No newline at end of file
{"uuid": "4dc30d4e-0e0b-4bfd-bb50-ee74e6998243", "befores": [{"name": "url", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109923}
\ No newline at end of file
{"uuid": "7edb33db-4056-400b-9863-ed1c9f843b02", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109851}
\ No newline at end of file
{"uuid": "5de3992d-1abb-411c-9f1a-a22a02c1b132", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106135}
\ No newline at end of file
{"uuid": "38e98484-16c3-4abf-8220-38a8ce4c0e79", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106536, "stop": 1710834106536}], "start": 1710834106536, "stop": 1710834106634}
\ No newline at end of file
{"uuid": "441eef8b-8887-43c0-b1ae-70ec96259cf6", "befores": [{"name": "url", "status": "passed", "start": 1710834107252, "stop": 1710834107252}], "start": 1710834107252, "stop": 1710834107314}
\ No newline at end of file
{"uuid": "8cacfc80-4fa6-4b85-9f3a-bc5d60097e37", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106016}
\ No newline at end of file
{"uuid": "efbe785b-d262-48b8-bb4d-e199642aaf03", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108822}
\ No newline at end of file
{"uuid": "6cf23060-4440-4d89-91c6-a1f0a6bcd84d", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109853}
\ No newline at end of file
{"uuid": "4722d2f8-e75c-435e-aafc-b4255466c6b0", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106424}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992652507332608"}
\ No newline at end of file
{"uuid": "2bbe637c-05ad-4632-9223-ccfc56ab2abc", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109796, "stop": 1710834109856}
\ No newline at end of file
{"uuid": "7b2a290b-72d3-4daf-8ac4-10a91044dd15", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109791}
\ No newline at end of file
{"uuid": "00f6ee14-eb40-4cef-bec4-322c7bdc4f8c", "befores": [{"name": "mime", "status": "passed", "start": 1710834109375, "stop": 1710834109375}], "start": 1710834109375, "stop": 1710834109524}
\ No newline at end of file
{"uuid": "71378edd-8bf2-4e14-a184-c26a01b7f607", "befores": [{"name": "method", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106529}
\ No newline at end of file
{"name": "反向用例-password正确-usrname为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "0a17e2cc-0058-4d0c-95ae-e0934dc47c07-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password正确-usrname为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106537, "stop": 1710834106633, "uuid": "04a6b91c-0cff-4edb-a7f6-fa7001716245", "historyId": "78dd40c0137c3cb6a48f7aa1746f3223", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "02318a7d-4717-4723-9c72-cce7e829e19e", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106430, "stop": 1710834106430}], "start": 1710834106430, "stop": 1710834106531}
\ No newline at end of file
{"uuid": "fbefd851-1829-4f20-a772-b0cf9c064917", "befores": [{"name": "mime", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107623}
\ No newline at end of file
{"uuid": "4b825d07-89f0-413e-9413-02a524c04650", "befores": [{"name": "method", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107313}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
{"uuid": "5c3ea39e-4990-4a03-b391-930ec1b6a11e", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109587}
\ No newline at end of file
{"uuid": "9f60cac4-66ee-4088-8f8a-34890ee63402", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109917}
\ No newline at end of file
{"uuid": "112aa0bf-dad9-4212-b4b8-03dfbd34a2ec", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108574}
\ No newline at end of file
{"uuid": "8d599766-c6ad-4f4a-8a64-ded14adef039", "befores": [{"name": "case_title", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106025}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "e97a74be-13ae-4b93-ae01-789393a51b34-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'add_org_test', '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": "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1710834107321, "stop": 1710834107521, "uuid": "0fb0f010-3199-4623-a40c-df0616643ae0", "historyId": "24098579565a4047f5c8d5e8247a5536", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "245f8157-0fc7-4356-9060-013a08c348da", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109375, "stop": 1710834109375}], "start": 1710834109375, "stop": 1710834109522}
\ No newline at end of file
{"uuid": "66b8d7fd-4933-4b0a-b7a3-43713de528c0", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109919}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992657137844224 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992657137844224'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
\ No newline at end of file
{"uuid": "6a6f6fb3-21e0-4c20-bfbe-471cadaa8c3a", "befores": [{"name": "method", "status": "passed", "start": 1710834109374, "stop": 1710834109375}], "start": 1710834109374, "stop": 1710834109524}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "e891c64c-b53c-4c87-a171-d80c656c687a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "None"}], "start": 1710834109377, "stop": 1710834109514, "uuid": "fe3166ff-6798-4876-bf9e-4983c6001921", "historyId": "ae9f137d9bc75e4c0d96d3f89e6b5163", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "f176c5dd-9154-451d-b65c-3a2be0646812", "befores": [{"name": "method", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106835}
\ No newline at end of file
{"uuid": "351bba47-7542-4470-ad90-daa17f9b950d", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106237}
\ No newline at end of file
{"uuid": "a47bd526-e441-42f6-9426-58ee645b306d", "befores": [{"name": "method", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106238}
\ No newline at end of file
{"uuid": "9cfd1a24-30ce-443d-90f4-4b1f27ad974b", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109374, "stop": 1710834109374}], "start": 1710834109374, "stop": 1710834109526}
\ No newline at end of file
{"uuid": "a3cc50d1-cfb1-4f86-b69d-784faecf8748", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110090}
\ No newline at end of file
{"uuid": "cf0462af-9ec3-4a53-ac0c-d696d3288691", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106728}
\ No newline at end of file
{"uuid": "00dab025-6782-4512-9a93-7a79407a47f2", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106030, "stop": 1710834106031}], "start": 1710834106030, "stop": 1710834106135}
\ No newline at end of file
{"uuid": "85883707-0884-4e0d-afa2-0e95eb8473fd", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834107089, "stop": 1710834107089}], "start": 1710834107089, "stop": 1710834107246}
\ No newline at end of file
{"uuid": "36aaea90-0e39-41fc-a84d-babebe8ddb5e", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108825}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
{"uuid": "46dcded3-d6f5-4ab5-90f1-237cdf8046c9", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106637}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "4843c7d3-300a-4857-af35-04df37420b22-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'组织加入用户'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'params'"}, {"name": "case_data", "value": "{'orgCode': 'add_org_test', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834107557, "stop": 1710834107621, "uuid": "f99c65d3-3812-4b38-9f65-c8d6e02597ff", "historyId": "97aefcf8b99cff5b9dfdfb8fa2ad90ad", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "e1985e05-ee9b-4e94-acfd-217a38bb1374", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108626}
\ No newline at end of file
{"uuid": "88b896d6-2499-4a59-995f-416b0a0c38cc", "befores": [{"name": "mime", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107550}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "a12b10b0-b587-4da6-8145-6b0abbd3977d-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'add_org_test', '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": "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1710834109602, "stop": 1710834109778, "uuid": "6e488b18-dbcc-47c6-8544-f2d66b79310b", "historyId": "1a4bdab341a4b17f6776dab9b944dfb7", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "66ea354f-1c7c-4b45-a373-6ad595a344a9", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108572}
\ No newline at end of file
{"uuid": "277da2f9-aa83-4f43-9cfc-5b06fa85e540", "befores": [{"name": "mime", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107247}
\ No newline at end of file
{"uuid": "d410726c-22b8-4acc-8151-e2b5ce3bfafe", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108577, "stop": 1710834108577}], "start": 1710834108577, "stop": 1710834108628}
\ No newline at end of file
{"uuid": "9a0bfee9-1ff7-4277-85f6-7bfbcfbffbae", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106430, "stop": 1710834106430}], "start": 1710834106430, "stop": 1710834106529}
\ No newline at end of file
{"uuid": "5e28969c-b874-4678-9e2f-1064a691391a", "befores": [{"name": "method", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107623}
\ No newline at end of file
{"uuid": "7ce5a790-3b52-4ec5-af7e-918dcfd02acb", "befores": [{"name": "case_title", "status": "passed", "start": 1710834107555, "stop": 1710834107555}], "start": 1710834107555, "stop": 1710834107625}
\ No newline at end of file
{"uuid": "685a6e3e-16b1-4624-a934-d5ca45a689f9", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109590}
\ No newline at end of file
{"uuid": "dce86d23-ca86-4dca-9645-79d1d73d27dd", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106637}
\ No newline at end of file
{"uuid": "aa2f334b-526d-4f37-ac17-62fdcc413dcf", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108907, "stop": 1710834108907}], "start": 1710834108907, "stop": 1710834108964}
\ No newline at end of file
{"uuid": "d1e78c29-5ab1-40bd-baba-bae36ae08d89", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109072}
\ No newline at end of file
{"uuid": "b6a3fb38-c94a-4964-aec6-1ee5b7a7cd91", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108972, "stop": 1710834108973}], "start": 1710834108972, "stop": 1710834109072}
\ No newline at end of file
{"uuid": "d726f43f-fa0f-4aa3-8133-d400dca360e7", "befores": [{"name": "url", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109796, "stop": 1710834109855}
\ No newline at end of file
{"uuid": "6912f796-6830-4a0f-90f2-ec4ca4b20541", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109992, "stop": 1710834109992}], "start": 1710834109992, "stop": 1710834110094}
\ No newline at end of file
{"name": "反向用例-username正确-password为特殊字符", "status": "passed", "attachments": [{"name": "log", "source": "0aee9503-c7d9-4645-afd0-5ec0fc5885ef-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username正确-password为特殊字符'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106140, "stop": 1710834106235, "uuid": "e483661b-fc4c-4946-9261-6d9d2b2373ea", "historyId": "0d51b1f1ea14a2b70ecc43dcaf329def", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "2f7421ab-ded7-4f22-a9dc-aa2f93ef768b", "befores": [{"name": "mime", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107313}
\ No newline at end of file
{"uuid": "5695a2a0-e4f4-41c4-9dce-ec6b12cc38e6", "befores": [{"name": "api_name", "status": "passed", "start": 1710834107628, "stop": 1710834107628}], "start": 1710834107628, "stop": 1710834107748}
\ No newline at end of file
{"uuid": "ad9f90d6-fef7-41f6-ad98-02c1e1fc2682", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834105782, "stop": 1710834105782}], "start": 1710834105782, "stop": 1710834105841}
\ No newline at end of file
{"uuid": "6b349239-7584-45ef-9bcc-be434d20966e", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107746}
\ No newline at end of file
{"uuid": "bb730e08-1faf-4ed0-8976-8d416a901f41", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109927, "stop": 1710834109927}], "start": 1710834109927, "stop": 1710834109990}
\ No newline at end of file
{"uuid": "92cbbf6c-3342-4b8a-a413-6a32e1e2f021", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109987}
\ No newline at end of file
{"uuid": "1afa004d-6dbf-46fd-a4a3-9b117ef61706", "befores": [{"name": "url", "status": "passed", "start": 1710834109374, "stop": 1710834109374}], "start": 1710834109374, "stop": 1710834109524}
\ No newline at end of file
{"uuid": "c27425c8-65da-490e-a678-7bdde72a7504", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109787}
\ No newline at end of file
{"uuid": "01afb4a8-8498-4942-acde-364a027237cf", "befores": [{"name": "case_data", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108893}
\ No newline at end of file
{"uuid": "cce63912-9bbc-4131-9533-0313de9c974a", "befores": [{"name": "case_title", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107552}
\ No newline at end of file
{"uuid": "a2041074-e867-4146-994d-d1fdcfe116d6", "befores": [{"name": "method", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109988}
\ No newline at end of file
{"uuid": "821fddaa-ceb9-4919-a6e3-d2b05b6bce2d", "befores": [{"name": "update_key", "status": "passed", "start": 1710834108830, "stop": 1710834108830}], "start": 1710834108830, "stop": 1710834108886}
\ No newline at end of file
{"uuid": "c8359efb-a98c-4cc8-964b-00072a07ffdf", "befores": [{"name": "url", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107624}
\ No newline at end of file
{"uuid": "95f22758-98d1-43d9-a397-69fd7a5e5d7f", "befores": [{"name": "method", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108573}
\ No newline at end of file
{"uuid": "97c40f63-e023-4688-bfe7-db21b9d77f07", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109852}
\ No newline at end of file
{"uuid": "e42733bf-0d13-457c-835a-d8de8a27e68c", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106017}
\ No newline at end of file
{"uuid": "8959c235-08e3-42d8-b57e-d67bc0d22371", "befores": [{"name": "api_name", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109796, "stop": 1710834109856}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992655439151104"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': ''}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992651551031296"}
\ No newline at end of file
{"uuid": "6912215f-3065-40a3-bc5f-bce4b36cc572", "befores": [{"name": "method", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108627}
\ No newline at end of file
{"uuid": "d73a0342-6329-42dd-8051-f59873ffdca0", "befores": [{"name": "method", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108967}
\ No newline at end of file
{"uuid": "93dd0420-4ab6-40d2-a178-127e245741ee", "children": ["3798e783-1f3a-43fb-bd3a-d689eaaa7607", "8bc06299-d13e-4839-84be-00775376ea05", "1bd55cdd-cb3f-4af7-a3af-3967a65dfc01", "572c51f3-034d-45e8-9b0c-fdd16e9f0e02", "e483661b-fc4c-4946-9261-6d9d2b2373ea", "e3f8ebed-e8f4-4364-8aef-1736d5cdfa94", "21ee0528-bf9d-4518-868c-e21f9c3cec3a", "04a6b91c-0cff-4edb-a7f6-fa7001716245", "e326b4cb-1997-471e-bb8a-cbdacd65bb70", "caeae498-c4fa-4fa6-ba29-e08dea5cc3a8", "6558a2d3-744f-461c-9b0b-be255022b773", "d6db2fad-7697-4457-b5d4-8e383530f162", "417adfdd-b538-44b2-8377-1cf769d49602", "0fb0f010-3199-4623-a40c-df0616643ae0", "f99c65d3-3812-4b38-9f65-c8d6e02597ff", "c0441c65-2731-42a0-be0a-f9ee32244bb3"], "befores": [{"name": "db_fix", "status": "passed", "start": 1710834105469, "stop": 1710834105680}], "afters": [{"name": "db_fix::0", "status": "passed", "start": 1710834110099, "stop": 1710834110099}], "start": 1710834105469, "stop": 1710834110099}
\ No newline at end of file
{"uuid": "46bb1e60-7591-4660-acf0-f97c943de158", "befores": [{"name": "case_data", "status": "passed", "start": 1710834107089, "stop": 1710834107089}], "start": 1710834107089, "stop": 1710834107246}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992666658914304 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992666658914304'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
\ No newline at end of file
{"uuid": "832c62bd-1aaf-42ce-88ec-323d39f4c5d4", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107080}
\ No newline at end of file
{"uuid": "668b481b-7d94-410b-9300-5bffd264a5ee", "befores": [{"name": "case_title", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108899}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "c5558e3a-32d4-40bc-9eac-19f6be178103-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'组织加入用户'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'params'"}, {"name": "case_data", "value": "{'orgCode': 'add_org_test', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834108830, "stop": 1710834108885, "uuid": "ea4854de-3b23-4541-8585-8df1cba05ce8", "historyId": "5d0d957248c183c0f634313d89fb4b4b", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "组织加入用户"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"uuid": "8e665733-3997-4804-a6fb-22895830078f", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108829, "stop": 1710834108829}], "start": 1710834108829, "stop": 1710834108898}
\ No newline at end of file
{"uuid": "1387f48f-a14c-4641-948a-cf5305e3c808", "befores": [{"name": "method", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110092}
\ No newline at end of file
{"uuid": "68df5d31-ddf9-48d7-9b97-1900dcfd0b46", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106638}
\ No newline at end of file
{"uuid": "22f74c26-286e-4915-a173-160672027ca4", "befores": [{"name": "api_name", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107248}
\ No newline at end of file
{"uuid": "6a789626-3a6b-4ab8-a6dc-84d06b1c1183", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834105782, "stop": 1710834105782}], "start": 1710834105782, "stop": 1710834105840}
\ No newline at end of file
{"uuid": "20bf7293-6612-4889-9e1a-af71472aa015", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107548}
\ No newline at end of file
{"uuid": "8f124a79-3c71-4433-8d87-6dc0d866b9c7", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106833}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "be15b0a9-9af2-45c9-8c55-89093f3a1190-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "method", "value": "'DELETE'"}, {"name": "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_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1710834109994, "stop": 1710834110081, "uuid": "c99dad99-7d95-4196-926a-7fd833d82b3c", "historyId": "b9cc5b6cd94099596b0440069eb8d180", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "5f7c58e9-1bea-4867-8db1-f37341bb7f64", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109790}
\ No newline at end of file
{"uuid": "12fc6631-c1f1-4d18-bf8c-02db48952cfa", "befores": [{"name": "case_data", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105903}
\ No newline at end of file
{"uuid": "ee39a9c2-2bf1-4f90-a6b0-b0ee04d4dc4d", "befores": [{"name": "url", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106133}
\ No newline at end of file
{"name": "场景用例的正向用例", "status": "passed", "attachments": [{"name": "log", "source": "f3adb6a1-08ff-41fa-9a2f-93bac9592871-attachment.txt", "type": "text/plain"}], "start": 1710834107754, "stop": 1710834107853, "uuid": "25d70af6-4060-45c5-ac47-e88dfe4c7f62", "historyId": "bb215cb6d210afbe7031470b52dfb522", "testCaseId": "bb215cb6d210afbe7031470b52dfb522", "fullName": "test_case.test_场景.test_login_addDem_getDemMsg#test_login", "labels": [{"name": "epic", "value": "BPM-场景"}, {"name": "feature", "value": "认证接口"}, {"name": "story", "value": "登录系统"}, {"name": "severity", "value": "高"}, {"name": "tag", "value": "dependency"}, {"name": "parentSuite", "value": "test_case.test_场景"}, {"name": "suite", "value": "test_login_addDem_getDemMsg"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_场景.test_login_addDem_getDemMsg"}]}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
{"uuid": "aeca037b-0cfe-4dbc-a439-8647a6cb9570", "befores": [{"name": "case_data", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107312}
\ No newline at end of file
{"uuid": "dd77fcf5-ed53-48e4-82e4-b77dfa485b25", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106834}
\ No newline at end of file
{"uuid": "ae4f3406-466d-4e5b-bce1-62c62f4d64c0", "befores": [{"name": "module_name", "status": "passed", "start": 1710834108631, "stop": 1710834108632}], "start": 1710834108631, "stop": 1710834108825}
\ No newline at end of file
{"uuid": "9580e4cd-ac0e-49e1-ad73-d8d00ef6aaf8", "befores": [{"name": "case_data", "status": "passed", "start": 1710834107556, "stop": 1710834107556}], "start": 1710834107556, "stop": 1710834107623}
\ No newline at end of file
{"uuid": "f1e05f3b-adee-4e9a-9bcd-1842c85164f9", "befores": [{"name": "update_key", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106422}
\ No newline at end of file
{"uuid": "a420c9a3-0072-4d51-8a43-adaa701ec2ef", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106840, "stop": 1710834106840}], "start": 1710834106840, "stop": 1710834107084}
\ No newline at end of file
{"uuid": "f770c087-3df4-40c2-95bc-b1f0d459a27e", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109992, "stop": 1710834109992}], "start": 1710834109992, "stop": 1710834110093}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "5a9854d3-eb37-437c-9264-e3975644cb7e-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "None"}], "start": 1710834107091, "stop": 1710834107236, "uuid": "d6db2fad-7697-4457-b5d4-8e383530f162", "historyId": "abc0c8fde646a04d91cb8062c1980c5c", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 's'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992651991433216"}
\ No newline at end of file
{"uuid": "ceb04168-6d8b-4c3d-8b58-160c5da7237d", "befores": [{"name": "url", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105904}
\ No newline at end of file
{"uuid": "8160ca6d-39e6-40aa-a030-f37da82d1d25", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109787}
\ No newline at end of file
{"uuid": "ba2c59cd-617c-43e0-997a-acbd543ed174", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109585}
\ No newline at end of file
{"uuid": "1ce77d33-2ded-49f4-b521-f579fb8f9a82", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106735, "stop": 1710834106735}], "start": 1710834106735, "stop": 1710834106837}
\ No newline at end of file
{"uuid": "bb6c9bc2-b6ac-4b66-a287-6b9dd4b939f9", "befores": [{"name": "method", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106731}
\ No newline at end of file
{"uuid": "b3a4e02b-337d-4df7-a343-c91fb7561e19", "befores": [{"name": "module_name", "status": "passed", "start": 1710834107320, "stop": 1710834107320}], "start": 1710834107320, "stop": 1710834107553}
\ No newline at end of file
{"uuid": "528cd4e3-f875-46df-98b4-5b4d757af859", "befores": [{"name": "case_level", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107551}
\ No newline at end of file
{"uuid": "d891f591-cd1b-4442-858c-dedbb0b61d1a", "befores": [{"name": "case_title", "status": "passed", "start": 1710834109529, "stop": 1710834109529}], "start": 1710834109529, "stop": 1710834109595}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "0dc35ae4-98a4-4a5a-b32a-58f2893db2cc-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'组织加入用户'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'params'"}, {"name": "case_data", "value": "{'orgCode': 'add_org_test', 'accounts': 'admin'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '加入成功', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834109798, "stop": 1710834109850, "uuid": "20695645-938e-4ba9-9662-4356fc7a2a32", "historyId": "75828df1b17e2e690d09aafa9ebdad6e", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "组织加入用户"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "2c821551-3ff6-4b61-9adc-437dc9055f35", "befores": [{"name": "url", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107082}
\ No newline at end of file
{"uuid": "6f970fdb-619d-4ac4-a737-1dc9be1e3b4e", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106635}
\ No newline at end of file
{"uuid": "328c1423-ad64-4273-99c8-5eb0b803db54", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109987}
\ No newline at end of file
{"uuid": "e2704929-dc1e-4276-8522-3299277d775e", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106735, "stop": 1710834106735}], "start": 1710834106735, "stop": 1710834106836}
\ No newline at end of file
{"uuid": "efe3981c-a2a7-428a-82f4-ab81dd5456af", "befores": [{"name": "url", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108573}
\ No newline at end of file
{"uuid": "1ea54ba5-8289-4a97-8184-e73a7c4a80f8", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106334, "stop": 1710834106334}], "start": 1710834106334, "stop": 1710834106422}
\ 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 ... test_login succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
\ No newline at end of file
{"uuid": "ab5efe8d-55e0-4b2d-a9e9-2712555e8986", "befores": [{"name": "api_name", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107552}
\ No newline at end of file
{"uuid": "4aeca438-540e-48dd-915d-d185e2cda47f", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109923}
\ No newline at end of file
{"uuid": "4c9676aa-c2a7-4fc6-b526-56da3dea54cb", "befores": [{"name": "case_title", "status": "passed", "start": 1710834107628, "stop": 1710834107628}], "start": 1710834107628, "stop": 1710834107748}
\ No newline at end of file
{"uuid": "6b0bb370-9091-4e8b-9af1-803196db49db", "befores": [{"name": "url", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110092}
\ No newline at end of file
{"uuid": "1a335d56-c9f0-44b8-af2b-76a885473947", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106638}
\ No newline at end of file
{"uuid": "4ad1e88c-bf71-4e25-9c05-4fb216a6b577", "befores": [{"name": "url", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106426}
\ No newline at end of file
{"uuid": "a36a72fd-ed76-4823-b50a-1de683294e12", "befores": [{"name": "mime", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106133}
\ No newline at end of file
{"uuid": "0b320a84-ae1a-4776-a982-fcf6b351650b", "befores": [{"name": "case_level", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109796, "stop": 1710834109856}
\ No newline at end of file
{"uuid": "b8317fce-41e3-4c65-a1f4-52c85ed6e4b8", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106031, "stop": 1710834106031}], "start": 1710834106031, "stop": 1710834106131}
\ No newline at end of file
{"uuid": "d832b531-c06f-4c23-ac52-a4a3168e32cc", "befores": [{"name": "api_name", "status": "passed", "start": 1710834107555, "stop": 1710834107555}], "start": 1710834107555, "stop": 1710834107625}
\ No newline at end of file
{"uuid": "5d3e42cd-2a7e-4186-ac12-10d53c00d877", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106528}
\ No newline at end of file
{"uuid": "8a6de8f2-9ec0-4793-9763-c0e05a4f21fc", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106528}
\ No newline at end of file
{"uuid": "55587f32-9f9c-4e1f-8f60-43a6f5c5db8f", "befores": [{"name": "url", "status": "passed", "start": 1710834106641, "stop": 1710834106641}], "start": 1710834106641, "stop": 1710834106732}
\ No newline at end of file
{"uuid": "faf54a06-a65c-48e5-bbca-2da6c9b640dc", "befores": [{"name": "mime", "status": "passed", "start": 1710834109530, "stop": 1710834109530}], "start": 1710834109530, "stop": 1710834109591}
\ No newline at end of file
{"uuid": "ad965fd4-401e-41ff-bf8b-bd1df616f9eb", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106736, "stop": 1710834106736}], "start": 1710834106736, "stop": 1710834106833}
\ No newline at end of file
{"uuid": "40691347-a6e4-4626-a779-67ffbad305b4", "befores": [{"name": "module_name", "status": "passed", "start": 1710834107252, "stop": 1710834107252}], "start": 1710834107252, "stop": 1710834107317}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /refresh HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/refresh,请求的方法为:GET,请求的媒体类型为:None, 请求的用例数据:None, 期望数据为:{'message': '刷新token成功'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA5MjA1MDgsImlhdCI6MTcxMDgzNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
\ No newline at end of file
{"name": "反向用例-password正确-username错误", "status": "passed", "attachments": [{"name": "log", "source": "076d98ce-a638-4ec1-a56f-41d8869f2f92-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-password正确-username错误'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin123', 'password': 'MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106432, "stop": 1710834106526, "uuid": "21ee0528-bf9d-4518-868c-e21f9c3cec3a", "historyId": "cfa4a18ea172217cbbf69b38c72aa394", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "3a38bb18-cd85-4bf3-b1d0-c9d2ad0e9ee0", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106430, "stop": 1710834106430}], "start": 1710834106430, "stop": 1710834106530}
\ No newline at end of file
{"uuid": "64a84a70-4da1-488a-884d-e1b630624fbc", "befores": [{"name": "mime", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105903}
\ No newline at end of file
{"uuid": "00977967-b998-48ef-aa05-55991e4aaae6", "children": ["fe3166ff-6798-4876-bf9e-4983c6001921", "c2740ecf-cade-45e2-bd84-dacb179fd408", "6e488b18-dbcc-47c6-8544-f2d66b79310b", "20695645-938e-4ba9-9662-4356fc7a2a32", "023da189-ccee-4da3-b551-88002173f580", "cdd5eb68-3424-4477-b3ea-f6ecb1c87a5f", "c99dad99-7d95-4196-926a-7fd833d82b3c"], "befores": [{"name": "req_fix", "status": "passed", "start": 1710834109277, "stop": 1710834109374}], "afters": [{"name": "req_fix::0", "status": "passed", "start": 1710834110094, "stop": 1710834110094}], "start": 1710834109277, "stop": 1710834110094}
\ No newline at end of file
{"uuid": "73b25f3f-fad6-4eff-b638-12c5c10dc977", "befores": [{"name": "update_key", "status": "passed", "start": 1710834109377, "stop": 1710834109377}], "start": 1710834109375, "stop": 1710834109521}
\ No newline at end of file
{"uuid": "7e9763c7-9a52-4c98-835f-688c3a15277d", "befores": [{"name": "case_level", "status": "passed", "start": 1710834107252, "stop": 1710834107252}], "start": 1710834107252, "stop": 1710834107315}
\ No newline at end of file
{"uuid": "2223eb6e-c939-4b27-89be-dbbd41abf17f", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106735, "stop": 1710834106735}], "start": 1710834106735, "stop": 1710834106836}
\ No newline at end of file
{"uuid": "35621596-bf58-465f-bcbb-82e6c5d17dc5", "befores": [{"name": "case_title", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107248}
\ No newline at end of file
{"uuid": "cd828a24-a28d-45cc-9313-579852e7516e", "befores": [{"name": "update_key", "status": "passed", "start": 1710834107253, "stop": 1710834107253}], "start": 1710834107253, "stop": 1710834107311}
\ No newline at end of file
{"uuid": "c2a71951-688d-4150-8e68-cb5261678add", "befores": [{"name": "mime", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108823}
\ No newline at end of file
{"uuid": "a2612f6a-9788-4260-980c-875cb064ec45", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106735, "stop": 1710834106736}], "start": 1710834106735, "stop": 1710834106836}
\ No newline at end of file
{"uuid": "0ee83cef-2aa0-405c-ad75-2a9ca3a0b20a", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109073}
\ No newline at end of file
{"uuid": "1a429c4a-d44a-4ccd-84cb-65b9fb4a5f6c", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108570}
\ No newline at end of file
{"uuid": "d2461193-3ecb-4211-91e9-3acb66f3ca72", "befores": [{"name": "url", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109074}
\ No newline at end of file
{"uuid": "13390f0c-0a4f-45dd-ae62-c77523d5b485", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106640, "stop": 1710834106640}], "start": 1710834106640, "stop": 1710834106732}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "24c8e260-3e79-433e-8f7e-b27e616599e8-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'根据维度编码删除维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"}, {"name": "method", "value": "'DELETE'"}, {"name": "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_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "'ids'"}], "start": 1710834108973, "stop": 1710834109064, "uuid": "484feaa9-ee25-4ff3-a091-cefbde342769", "historyId": "bc2a5ac349dd9ba01d70cabcd5c6f12a", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "根据维度编码删除维度"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"uuid": "6bbeb6dd-c3bd-4013-9e53-8a9fa6f82df0", "befores": [{"name": "case_level", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106427}
\ No newline at end of file
{"uuid": "a4a21e07-e13e-4de8-8e21-caa922659060", "befores": [{"name": "method", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109074}
\ No newline at end of file
{"uuid": "c1d9ab31-dc54-449d-8cfe-eaaca4d2ca47", "befores": [{"name": "case_data", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107081}
\ No newline at end of file
{"uuid": "7a631f6d-4466-4f4b-bbbf-98d4fa2d8a2d", "befores": [{"name": "case_level", "status": "passed", "start": 1710834105909, "stop": 1710834105909}], "start": 1710834105909, "stop": 1710834106025}
\ No newline at end of file
{"uuid": "3d0c9b4a-6b6e-4300-ada2-e9e3f67b2599", "befores": [{"name": "url", "status": "passed", "start": 1710834108578, "stop": 1710834108578}], "start": 1710834108578, "stop": 1710834108628}
\ No newline at end of file
{"uuid": "a97cabac-26ac-4409-b59b-7c17ff27370f", "befores": [{"name": "mime", "status": "passed", "start": 1710834108425, "stop": 1710834108425}], "start": 1710834108425, "stop": 1710834108573}
\ No newline at end of file
{"name": "反向用例-username正确-password过长", "status": "passed", "attachments": [{"name": "log", "source": "96aa0683-699e-48e0-93d0-f0074b1eac01-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'认证接口'"}, {"name": "api_name", "value": "'登录系统'"}, {"name": "case_title", "value": "'反向用例-username正确-password过长'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"}, {"name": "expect_data", "value": "{'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834106032, "stop": 1710834106129, "uuid": "572c51f3-034d-45e8-9b0c-fdd16e9f0e02", "historyId": "c0a236e02824381a2ef96d3ca6147b92", "testCaseId": "dba452b4cd07103342b046890245d967", "fullName": "test_case.test_basic.test_bpm.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_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_basic.test_bpm"}]}
\ No newline at end of file
{"uuid": "12d6ec32-21a1-4376-9daa-843ee8354946", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834108830, "stop": 1710834108830}], "start": 1710834108830, "stop": 1710834108890}
\ No newline at end of file
{"uuid": "dac125f2-86f6-4c35-85fb-556e5bcf0942", "befores": [{"name": "method", "status": "passed", "start": 1710834106841, "stop": 1710834106841}], "start": 1710834106841, "stop": 1710834107081}
\ No newline at end of file
{"uuid": "253f000c-871c-45da-9d79-8ee6e6ada481", "befores": [{"name": "method", "status": "passed", "start": 1710834106535, "stop": 1710834106535}], "start": 1710834106535, "stop": 1710834106636}
\ No newline at end of file
{"uuid": "bb37870a-2fee-4f83-b115-e6e3fd0ec7df", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834105847, "stop": 1710834105847}], "start": 1710834105847, "stop": 1710834105902}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
{"uuid": "b296897c-0d2a-4618-99fe-654c90e0c6b0", "befores": [{"name": "mime", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106528}
\ No newline at end of file
{"uuid": "2c289846-986a-4bf1-812c-45930f395210", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109796, "stop": 1710834109796}], "start": 1710834109795, "stop": 1710834109857}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
{"uuid": "88030ce3-820d-42f9-9166-4937efc27e87", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106240}
\ No newline at end of file
{"uuid": "18bed8eb-7fbc-41fd-9045-64f169d881cb", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834109993, "stop": 1710834109993}], "start": 1710834109993, "stop": 1710834110091}
\ No newline at end of file
{"uuid": "918ad640-e263-4b47-9365-b6c0ca94d02f", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108577, "stop": 1710834108578}], "start": 1710834108577, "stop": 1710834108628}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
{"uuid": "8b1cbfed-d59f-4889-a6c9-83b88db876f5", "befores": [{"name": "case_level", "status": "passed", "start": 1710834108972, "stop": 1710834108972}], "start": 1710834108972, "stop": 1710834109075}
\ No newline at end of file
{"uuid": "93bc4303-9d96-48f1-8e5f-34e03f9064c1", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834107089, "stop": 1710834107089}], "start": 1710834107089, "stop": 1710834107246}
\ No newline at end of file
{"uuid": "e815116b-54e4-40af-8813-69129fd0a0b6", "befores": [{"name": "module_name", "status": "passed", "start": 1710834106840, "stop": 1710834106840}], "start": 1710834106840, "stop": 1710834107085}
\ No newline at end of file
{"uuid": "c78f5cf5-76ff-4334-8ecc-15e01b95810e", "befores": [{"name": "sql_data", "status": "passed", "start": 1710834106431, "stop": 1710834106431}], "start": 1710834106431, "stop": 1710834106527}
\ No newline at end of file
{"uuid": "0eede3dc-6900-4794-8460-e930f10df690", "befores": [{"name": "mime", "status": "passed", "start": 1710834108906, "stop": 1710834108906}], "start": 1710834108906, "stop": 1710834108966}
\ No newline at end of file
{"uuid": "551c5260-ae1f-42a3-8cb0-bdaf21309f15", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109988}
\ No newline at end of file
{"uuid": "3a4bee43-a63a-4d8b-a3e6-abb32b7e929c", "befores": [{"name": "method", "status": "passed", "start": 1710834107088, "stop": 1710834107088}], "start": 1710834107088, "stop": 1710834107247}
\ No newline at end of file
{"name": "正向用例", "status": "passed", "attachments": [{"name": "log", "source": "5214ddb5-4346-4809-9314-33a8fc53b07f-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'保存组织参数'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'query|json'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834109861, "stop": 1710834109917, "uuid": "023da189-ccee-4da3-b551-88002173f580", "historyId": "b1a70deebb94240f070c47d2aaf927ca", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "保存组织参数"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "10fd00e7-f73e-482e-9c5b-14fc23139490", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106333, "stop": 1710834106333}], "start": 1710834106333, "stop": 1710834106427}
\ No newline at end of file
{"uuid": "009c92e1-1d9a-4c6a-9e4a-5966adb31c1d", "befores": [{"name": "api_name", "status": "passed", "start": 1710834108632, "stop": 1710834108632}], "start": 1710834108632, "stop": 1710834108825}
\ No newline at end of file
{"uuid": "01f364bf-16a2-4099-8bfd-b9fab0c17452", "befores": [{"name": "module_name", "status": "passed", "start": 1710834107555, "stop": 1710834107555}], "start": 1710834107555, "stop": 1710834107626}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
\ No newline at end of file
{"uuid": "4bfcb110-61ec-4ed1-9b0e-41c7c00bfe6e", "befores": [{"name": "expect_data", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107746}
\ No newline at end of file
{"uuid": "e6850b29-6775-41a5-9dad-a4a8fd632774", "befores": [{"name": "case_title", "status": "passed", "start": 1710834106139, "stop": 1710834106139}], "start": 1710834106139, "stop": 1710834106239}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "99a91d84-1529-4c55-8659-c55f94641bd6-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'维度管理'"}, {"name": "api_name", "value": "'添加维度'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"}, {"name": "expect_data", "value": "{'message': '添加维度成功'}"}, {"name": "sql_type", "value": "'delete'"}, {"name": "sql_data", "value": "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"}, {"name": "update_key", "value": "None"}], "start": 1710834108426, "stop": 1710834108561, "uuid": "327f2f33-b297-4ae2-b854-47228b588905", "historyId": "60017b91adf587725ed0cf764eff922a", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "维度管理"}, {"name": "story", "value": "添加维度"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "061b0561-030b-4052-b774-4f489b5c1997-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'删除组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'中'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"}, {"name": "method", "value": "'post'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "'add_org_test'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!', 'value': ''}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1710834109929, "stop": 1710834109977, "uuid": "cdd5eb68-3424-4477-b3ea-f6ecb1c87a5f", "historyId": "54fa446dd3adfc5c34c749a611aad827", "testCaseId": "48f059f8dc0311549e0e5db6509caae1", "fullName": "test_case.test_李四.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "删除组织"}, {"name": "severity", "value": "中"}, {"name": "epic", "value": "BPM项目-李四"}, {"name": "parentSuite", "value": "test_case.test_李四"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_李四.test_bpm"}]}
\ No newline at end of file
{"uuid": "b3a8986f-ef78-4a1b-b748-c83d417b3dee", "befores": [{"name": "update_key", "status": "passed", "start": 1710834107321, "stop": 1710834107321}], "start": 1710834107321, "stop": 1710834107546}
\ No newline at end of file
{"uuid": "64f2f81a-123a-44d9-b2ec-7e971b37d719", "befores": [{"name": "api_name", "status": "passed", "start": 1710834106030, "stop": 1710834106030}], "start": 1710834106030, "stop": 1710834106136}
\ No newline at end of file
{"uuid": "0cf6e841-b5e5-4025-9600-795fa1d953b7", "befores": [{"name": "update_key", "status": "passed", "start": 1710834107629, "stop": 1710834107629}], "start": 1710834107629, "stop": 1710834107745}
\ No newline at end of file
{"name": "正向用例", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError"}, "attachments": [{"name": "log", "source": "ec3ff87a-b213-42ca-a275-e03a7756451a-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "module_name", "value": "'组织管理'"}, {"name": "api_name", "value": "'添加组织'"}, {"name": "case_title", "value": "'正向用例'"}, {"name": "case_level", "value": "'高'"}, {"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "method", "value": "'POST'"}, {"name": "mime", "value": "'json'"}, {"name": "case_data", "value": "{'code': 'add_org_test', '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": "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1710834108633, "stop": 1710834108812, "uuid": "bbdd515a-7bed-4f46-a71a-a3c17c4f443b", "historyId": "49425d368f51d12c96097efd4ffa7652", "testCaseId": "5b39a66235dce8bb894e044ec8b32592", "fullName": "test_case.test_张三.test_bpm.TestBPM#test_bpm", "labels": [{"name": "feature", "value": "组织管理"}, {"name": "story", "value": "添加组织"}, {"name": "severity", "value": "高"}, {"name": "epic", "value": "BPM项目-张三"}, {"name": "parentSuite", "value": "test_case.test_张三"}, {"name": "suite", "value": "test_bpm"}, {"name": "subSuite", "value": "TestBPM"}, {"name": "host", "value": "ding"}, {"name": "thread", "value": "21048-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_case.test_张三.test_bpm"}]}
\ No newline at end of file
{"uuid": "f3723502-7075-414f-b0d9-88363865935f", "befores": [{"name": "update_key", "status": "passed", "start": 1710834105910, "stop": 1710834105910}], "start": 1710834105910, "stop": 1710834106015}
\ No newline at end of file
{"uuid": "d00fe442-6c9f-4e50-8a49-db9faac7df4d", "befores": [{"name": "mime", "status": "passed", "start": 1710834109797, "stop": 1710834109797}], "start": 1710834109797, "stop": 1710834109854}
\ No newline at end of file
{"uuid": "ba65544d-d7b5-4ec3-902a-670c88fb22e4", "befores": [{"name": "case_data", "status": "passed", "start": 1710834109860, "stop": 1710834109860}], "start": 1710834109860, "stop": 1710834109920}
\ No newline at end of file
{"uuid": "8985a82c-7bdf-412d-a5df-0b729242adec", "befores": [{"name": "url", "status": "passed", "start": 1710834109928, "stop": 1710834109928}], "start": 1710834109928, "stop": 1710834109989}
\ No newline at end of file
{"uuid": "bffd6a63-9959-49d9-b9db-11caaa6f8d18", "befores": [{"name": "module_name", "status": "passed", "start": 1710834109601, "stop": 1710834109601}], "start": 1710834109601, "stop": 1710834109792}
\ No newline at end of file
{"uuid": "5313e2d0-dc66-4b26-bc72-76329939888a", "befores": [{"name": "sql_type", "status": "passed", "start": 1710834106140, "stop": 1710834106140}], "start": 1710834106140, "stop": 1710834106237}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992654617067520"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/deleteOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/deleteOrg,请求的方法为:post,请求的媒体类型为:json, 请求的用例数据:add_org_test, 期望数据为:{'state': True, 'message': '删除组织成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;","value":""}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992652507332608"}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992666658914304 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992666658914304'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
INFO  root:__init__.py:43 执行的函数或方法为:close,其功能为:None
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU232'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992653740457984"}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992662695297024 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992662695297024'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992652956123136"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'user': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992655019720704"}
\ 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 ... test_login succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgParam/saveOrgParams?orgCode=add_org_test HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams,请求的方法为:post,请求的媒体类型为:query|json, 请求的用例数据:{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}, 期望数据为:{'state': True, 'message': '保存组织参数成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"保存组织参数成功!","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/deleteOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/deleteOrg,请求的方法为:post,请求的媒体类型为:json, 请求的用例数据:add_org_test, 期望数据为:{'state': True, 'message': '删除组织成功!', 'value': ''},服务器返回的数据为:{"state":true,"message":"部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:49","isDelete":"0","id":"1769992657137844224","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992657137844224"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769992657137844224 HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769992657137844224'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /refresh HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/refresh,请求的方法为:GET,请求的媒体类型为:None, 请求的用例数据:None, 期望数据为:{'message': '刷新token成功'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA5MjA1MDgsImlhdCI6MTcxMDgzNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
INFO  root:__init__.py:43 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
INFO  root:__init__.py:43 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'username': '超级管理员'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA5MjA1MDcsImlhdCI6MTcxMDgzNDEwN30.5-9_T8K6JmUaVfkXaZNsgQUd6NRK20Qnu0HpwlXiJuwIUuIFoRZID8TYowr3HdGuEcUz2gCGPzchHgns0Z65kw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': ''}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992651551031296"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 's'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992651991433216"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin123', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992654172471296"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:51","isDelete":"0","id":"1769992666658914304","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992666658914304"}
\ No newline at end of file
INFO  root:__init__.py:43 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
INFO  root:__init__.py:43 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
ERROR  root:test_bpm.py:66 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:292 Resetting dropped connection: 120.46.172.186
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769992655439151104"}
\ No newline at end of file
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
ERROR  root:test_bpm.py:70 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-19 15:41:50","isDelete":"0","id":"1769992662695297024","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769992662695297024"}
\ No newline at end of file
DEBUG  pytest_dependency:pytest_dependency.py:87 check dependencies of test_get_dem_msg in module scope ...
DEBUG  pytest_dependency:pytest_dependency.py:92 ... test_add_dem succeeded
DEBUG  urllib3.connectionpool:connectionpool.py:244 Starting new HTTP connection (1): 120.46.172.186:8080
DEBUG  urllib3.connectionpool:connectionpool.py:549 http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=18778357549 HTTP/1.1" 200 None
\ No newline at end of file
"Epic","Feature","Story","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"BPM项目-李四","组织管理","删除组织","1","0","0","0","0"
"BPM项目-李四","组织管理","组织加入用户","0","0","1","0","0"
"BPM项目-李四","维度管理","根据维度编码删除维度","1","0","0","0","0"
"BPM-场景","维度管理","添加维度","0","0","1","0","0"
"BPM项目-张三","组织管理","删除组织","1","0","0","0","0"
"BPM项目-basic","认证接口","登录系统","0","0","10","0","0"
"BPM项目-张三","组织管理","添加组织","1","0","0","0","0"
"BPM项目-basic","维度管理","根据维度编码删除维度","1","0","0","0","0"
"BPM项目-basic","认证接口","刷新token","1","0","0","0","0"
"BPM项目-李四","维度管理","根据维度编码获取维度信息","0","0","1","0","0"
"BPM项目-basic","维度管理","添加维度","1","0","0","0","0"
"BPM项目-张三","维度管理","根据维度编码获取维度信息","0","0","1","0","0"
"BPM项目-李四","组织管理","添加组织","1","0","0","0","0"
"BPM项目-李四","组织管理","保存组织参数","0","0","1","0","0"
"BPM项目-basic","组织管理","添加组织","1","0","0","0","0"
"BPM项目-张三","维度管理","添加维度","1","0","0","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项目-李四","维度管理","添加维度","1","0","0","0","0"
"BPM项目-张三","维度管理","根据维度编码删除维度","1","0","0","0","0"
{
"uid" : "b1a8273437954620fa374b796ffaacdd",
"name" : "behaviors",
"children" : [ {
"name" : "BPM项目-basic",
"children" : [ {
"name" : "认证接口",
"children" : [ {
"name" : "登录系统",
"children" : [ {
"name" : "正向用例-username和password正确的传入",
"uid" : "5a83721e6734bba",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'正向用例-username和password正确的传入'", "{'username': '超级管理员'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为空",
"uid" : "8ac108c9bfb7ab69",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'中'", "'反向用例-username正确-password为空'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过短",
"uid" : "1f07a0f97b565232",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 's'}", "'中'", "'反向用例-username正确-password过短'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过长",
"uid" : "a80a907c0e8cdc82",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'反向用例-username正确-password过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为特殊字符",
"uid" : "66059d8f450ce930",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}", "'中'", "'反向用例-username正确-password为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password错误",
"uid" : "2d83f81aa8cdc7b9",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU232'}", "'中'", "'反向用例-username正确-password错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username错误",
"uid" : "4ddd550d22dc935b",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin123', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-usrname为特殊字符",
"uid" : "a5dee2821b872e02",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-usrname为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username参数名为user",
"uid" : "88b4a2b9730e8014",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'user': 'admin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username参数名为user'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username过长",
"uid" : "91ea693b457a252",
"parentUid" : "552ad50f42c41fe798ab56c919468f33",
"status" : "passed",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
} ],
"uid" : "552ad50f42c41fe798ab56c919468f33"
}, {
"name" : "刷新token",
"children" : [ {
"name" : "正向用例",
"uid" : "17cff1cb8d42b00f",
"parentUid" : "318518dddd3e871943d6637fa3a4cfc2",
"status" : "failed",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
} ],
"uid" : "318518dddd3e871943d6637fa3a4cfc2"
} ],
"uid" : "b591b45d90b5e50978c1a717ff330b06"
}, {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "666c08fabb09546b",
"parentUid" : "25960a93107b8b7f3627e28f4be5d692",
"status" : "failed",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
} ],
"uid" : "25960a93107b8b7f3627e28f4be5d692"
}, {
"name" : "根据维度编码获取维度信息",
"children" : [ {
"name" : "正向用例",
"uid" : "2131976fd0d53540",
"parentUid" : "91b2821035378b3e58a27852789abe2a",
"status" : "passed",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
} ],
"uid" : "91b2821035378b3e58a27852789abe2a"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "28ca9cbfd5012994",
"parentUid" : "abd6450ac4641874b67e2d804f4aa139",
"status" : "failed",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "abd6450ac4641874b67e2d804f4aa139"
} ],
"uid" : "b4654e01983549b637118b56c14fba77"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "9c5c2d46e5a9841b",
"parentUid" : "891fefa5cb787baf0fb3ddd7176f63f6",
"status" : "failed",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
} ],
"uid" : "891fefa5cb787baf0fb3ddd7176f63f6"
}, {
"name" : "组织加入用户",
"children" : [ {
"name" : "正向用例",
"uid" : "65c9dd11455e8fb4",
"parentUid" : "d3f7c8f2fd751a9a75676427159f3c33",
"status" : "passed",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
} ],
"uid" : "d3f7c8f2fd751a9a75676427159f3c33"
} ],
"uid" : "7c45f77b4343ed9c20c05e7a094fa3f5"
} ],
"uid" : "6d2cb02a38678aa9e7ac76603800ea33"
}, {
"name" : "BPM-场景",
"children" : [ {
"name" : "认证接口",
"children" : [ {
"name" : "登录系统",
"children" : [ {
"name" : "场景用例的正向用例",
"uid" : "79daafd09653f4c7",
"parentUid" : "193eccbd0a8ac5bf937b57b9d6813407",
"status" : "passed",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "193eccbd0a8ac5bf937b57b9d6813407"
} ],
"uid" : "8c5581565b2ab907314ac927d2915c3f"
}, {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "添加维度场景用例的正向用例",
"uid" : "a41c53be1030ad65",
"parentUid" : "82a03fac7add28b28a5abc7f276c8243",
"status" : "passed",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "82a03fac7add28b28a5abc7f276c8243"
}, {
"name" : "根据维度编码获取维度信息",
"children" : [ {
"name" : "根据维度编码获取维度信息的正向用例",
"uid" : "e5d29a1f53465782",
"parentUid" : "6fd3b8944b72e82ce6469f278031cca8",
"status" : "passed",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "6fd3b8944b72e82ce6469f278031cca8"
} ],
"uid" : "0442398f26978f438bfd215914bc090b"
} ],
"uid" : "ac339a42cac6a94333bb20983ffb9687"
}, {
"name" : "BPM项目-张三",
"children" : [ {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "7214fee51740fc2c",
"parentUid" : "83e5ee4b823114f30389e509d7c71023",
"status" : "failed",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
} ],
"uid" : "83e5ee4b823114f30389e509d7c71023"
}, {
"name" : "根据维度编码获取维度信息",
"children" : [ {
"name" : "正向用例",
"uid" : "98792c483be85649",
"parentUid" : "79650e513742831a9f6e18d61d2e42b3",
"status" : "passed",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
} ],
"uid" : "79650e513742831a9f6e18d61d2e42b3"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "4cb85f5fcee9036a",
"parentUid" : "10e89574b2d9155e14651ec7a05b069d",
"status" : "failed",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "10e89574b2d9155e14651ec7a05b069d"
} ],
"uid" : "2926bdd8081d0ab48a66614f4feaef30"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "e12af911aa4c6deb",
"parentUid" : "9cfce36519f5be37c60bc6f0424d079e",
"status" : "failed",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
} ],
"uid" : "9cfce36519f5be37c60bc6f0424d079e"
}, {
"name" : "组织加入用户",
"children" : [ {
"name" : "正向用例",
"uid" : "70d7772281b269fd",
"parentUid" : "63d10c548a31cea2b63fa362b24db560",
"status" : "passed",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
} ],
"uid" : "63d10c548a31cea2b63fa362b24db560"
}, {
"name" : "删除组织",
"children" : [ {
"name" : "正向用例",
"uid" : "6a59fc30b54b0804",
"parentUid" : "f9a5f646e6d71321dc04dd6da8d90759",
"status" : "failed",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
} ],
"uid" : "f9a5f646e6d71321dc04dd6da8d90759"
} ],
"uid" : "891396c9ecbe8cd983da4e3c798b3dda"
} ],
"uid" : "76c18cc8f6208673d0c44358a39dd6ab"
}, {
"name" : "BPM项目-李四",
"children" : [ {
"name" : "维度管理",
"children" : [ {
"name" : "添加维度",
"children" : [ {
"name" : "正向用例",
"uid" : "5faca9d6b22f369f",
"parentUid" : "3cc2d3b5d9cdd91249182fd59f182f28",
"status" : "failed",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
} ],
"uid" : "3cc2d3b5d9cdd91249182fd59f182f28"
}, {
"name" : "根据维度编码获取维度信息",
"children" : [ {
"name" : "正向用例",
"uid" : "5417c181ededaf1c",
"parentUid" : "73cf2e63155f1da1124a5f975060096d",
"status" : "passed",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
} ],
"uid" : "73cf2e63155f1da1124a5f975060096d"
}, {
"name" : "根据维度编码删除维度",
"children" : [ {
"name" : "正向用例",
"uid" : "4c24e4f500730e3f",
"parentUid" : "69d626e8dcc21a8c5028d4d6311cbd21",
"status" : "failed",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "69d626e8dcc21a8c5028d4d6311cbd21"
} ],
"uid" : "042c216f62fc364813caae7ec9982902"
}, {
"name" : "组织管理",
"children" : [ {
"name" : "添加组织",
"children" : [ {
"name" : "正向用例",
"uid" : "5fe70193aabfd6db",
"parentUid" : "fcd57e24bfff851814ddd89133c20c5e",
"status" : "failed",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
} ],
"uid" : "fcd57e24bfff851814ddd89133c20c5e"
}, {
"name" : "组织加入用户",
"children" : [ {
"name" : "正向用例",
"uid" : "a8ad59294d698a7f",
"parentUid" : "64cd0d7ade570dda85373f0b4b69577e",
"status" : "passed",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
} ],
"uid" : "64cd0d7ade570dda85373f0b4b69577e"
}, {
"name" : "保存组织参数",
"children" : [ {
"name" : "正向用例",
"uid" : "d3cceed9ff255a58",
"parentUid" : "5e65a20b53b1f12f328ca60b42867005",
"status" : "passed",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}", "'高'", "'正向用例'", "{'state': True, 'message': '保存组织参数成功!', 'value': ''}", "'post'", "'query|json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'" ]
} ],
"uid" : "5e65a20b53b1f12f328ca60b42867005"
}, {
"name" : "删除组织",
"children" : [ {
"name" : "正向用例",
"uid" : "d74e9c5a614430ce",
"parentUid" : "68c1b28eef4d23d453fa5ae42ec799d5",
"status" : "failed",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
} ],
"uid" : "68c1b28eef4d23d453fa5ae42ec799d5"
} ],
"uid" : "788b47a1ea5abdb953fe4c2c386309fd"
} ],
"uid" : "e0d28b73db5838b491aef15d5f6c6f43"
} ]
}
\ No newline at end of file
"Category","FAILED","BROKEN","PASSED","SKIPPED","UNKNOWN"
"Product defects","12","0","0","0","0"
{
"uid" : "4b4757e66a1912dae1a509f688f20b0f",
"name" : "categories",
"children" : [ {
"name" : "Product defects",
"children" : [ {
"name" : "AssertionError: 断言失败",
"children" : [ {
"name" : "正向用例",
"uid" : "17cff1cb8d42b00f",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
}, {
"name" : "正向用例",
"uid" : "666c08fabb09546b",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "9c5c2d46e5a9841b",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "28ca9cbfd5012994",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "7214fee51740fc2c",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "e12af911aa4c6deb",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "6a59fc30b54b0804",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4cb85f5fcee9036a",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "5faca9d6b22f369f",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "5fe70193aabfd6db",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "d74e9c5a614430ce",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4c24e4f500730e3f",
"parentUid" : "19135fd4a1c65086de1dc2a02ed9d4e0",
"status" : "failed",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "19135fd4a1c65086de1dc2a02ed9d4e0"
} ],
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d"
} ]
}
\ No newline at end of file
{
"uid" : "83edc06c07f9ae9e47eb6dd1b683e4e2",
"name" : "packages",
"children" : [ {
"name" : "test_case",
"children" : [ {
"name" : "test_basic.test_bpm",
"children" : [ {
"name" : "正向用例-username和password正确的传入",
"uid" : "5a83721e6734bba",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'正向用例-username和password正确的传入'", "{'username': '超级管理员'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为空",
"uid" : "8ac108c9bfb7ab69",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'中'", "'反向用例-username正确-password为空'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过短",
"uid" : "1f07a0f97b565232",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 's'}", "'中'", "'反向用例-username正确-password过短'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过长",
"uid" : "a80a907c0e8cdc82",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'反向用例-username正确-password过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为特殊字符",
"uid" : "66059d8f450ce930",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}", "'中'", "'反向用例-username正确-password为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password错误",
"uid" : "2d83f81aa8cdc7b9",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU232'}", "'中'", "'反向用例-username正确-password错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username错误",
"uid" : "4ddd550d22dc935b",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin123', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-usrname为特殊字符",
"uid" : "a5dee2821b872e02",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-usrname为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username参数名为user",
"uid" : "88b4a2b9730e8014",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'user': 'admin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username参数名为user'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username过长",
"uid" : "91ea693b457a252",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "17cff1cb8d42b00f",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "failed",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
}, {
"name" : "正向用例",
"uid" : "666c08fabb09546b",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "failed",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "2131976fd0d53540",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "9c5c2d46e5a9841b",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "failed",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "65c9dd11455e8fb4",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "passed",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "28ca9cbfd5012994",
"parentUid" : "5f9fa15438fe4f8686a5d30f76c545da",
"status" : "failed",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "test_basic.test_bpm"
}, {
"name" : "test_场景.test_login_addDem_getDemMsg",
"children" : [ {
"name" : "场景用例的正向用例",
"uid" : "79daafd09653f4c7",
"parentUid" : "232347b4a2896bbc7c0a0b91cbf58d47",
"status" : "passed",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "添加维度场景用例的正向用例",
"uid" : "a41c53be1030ad65",
"parentUid" : "232347b4a2896bbc7c0a0b91cbf58d47",
"status" : "passed",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "根据维度编码获取维度信息的正向用例",
"uid" : "e5d29a1f53465782",
"parentUid" : "232347b4a2896bbc7c0a0b91cbf58d47",
"status" : "passed",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "test_场景.test_login_addDem_getDemMsg"
}, {
"name" : "test_张三.test_bpm",
"children" : [ {
"name" : "正向用例",
"uid" : "7214fee51740fc2c",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "failed",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "98792c483be85649",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "passed",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "e12af911aa4c6deb",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "failed",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "70d7772281b269fd",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "passed",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "6a59fc30b54b0804",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "failed",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4cb85f5fcee9036a",
"parentUid" : "ccc211d5b5c554f6be82337a35127c61",
"status" : "failed",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "test_张三.test_bpm"
}, {
"name" : "test_李四.test_bpm",
"children" : [ {
"name" : "正向用例",
"uid" : "5faca9d6b22f369f",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "failed",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "5417c181ededaf1c",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "passed",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "5fe70193aabfd6db",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "failed",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "a8ad59294d698a7f",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "passed",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "d3cceed9ff255a58",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "passed",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}", "'高'", "'正向用例'", "{'state': True, 'message': '保存组织参数成功!', 'value': ''}", "'post'", "'query|json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "d74e9c5a614430ce",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "failed",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4c24e4f500730e3f",
"parentUid" : "2a4102ccee231eda09635b30aa17e192",
"status" : "failed",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "test_李四.test_bpm"
} ],
"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"
"failed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","48","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","52","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:50 CST 2024","87","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:48 CST 2024","153","test_case.test_场景","test_login_addDem_getDemMsg","","","","添加维度场景用例的正向用例",""
"failed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","46","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:45 CST 2024","Tue Mar 19 15:41:45 CST 2024","53","test_case.test_basic","test_bpm","TestBPM","","","反向用例-username正确-password为空",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","95","test_case.test_basic","test_bpm","TestBPM","","","反向用例-username正确-password为特殊字符",""
"failed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","179","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","85","test_case.test_basic","test_bpm","TestBPM","","","反向用例-password正确-username参数名为user",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","95","test_case.test_basic","test_bpm","TestBPM","","","反向用例-password正确-username过长",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","88","test_case.test_basic","test_bpm","TestBPM","","","反向用例-username正确-password错误",""
"failed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","105","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","94","test_case.test_basic","test_bpm","TestBPM","","","反向用例-password正确-username错误",""
"failed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","104","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","51","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","145","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","96","test_case.test_basic","test_bpm","TestBPM","","","反向用例-password正确-usrname为特殊字符",""
"passed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","46","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","176","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:45 CST 2024","Tue Mar 19 15:41:46 CST 2024","101","test_case.test_basic","test_bpm","TestBPM","","","反向用例-username正确-password过短",""
"passed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","56","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","200","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","135","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:45 CST 2024","Tue Mar 19 15:41:45 CST 2024","57","test_case.test_basic","test_bpm","TestBPM","","","正向用例-username和password正确的传入",""
"passed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","99","test_case.test_场景","test_login_addDem_getDemMsg","","","","场景用例的正向用例",""
"passed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","55","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:48 CST 2024","91","test_case.test_场景","test_login_addDem_getDemMsg","","","","根据维度编码获取维度信息的正向用例",""
"passed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","64","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:47 CST 2024","Tue Mar 19 15:41:47 CST 2024","56","test_case.test_basic","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:49 CST 2024","Tue Mar 19 15:41:49 CST 2024","137","test_case.test_李四","test_bpm","TestBPM","","","正向用例",""
"failed","Tue Mar 19 15:41:48 CST 2024","Tue Mar 19 15:41:49 CST 2024","91","test_case.test_张三","test_bpm","TestBPM","","","正向用例",""
"passed","Tue Mar 19 15:41:46 CST 2024","Tue Mar 19 15:41:46 CST 2024","97","test_case.test_basic","test_bpm","TestBPM","","","反向用例-username正确-password过长",""
{
"uid" : "98d3104e051c652961429bf95fa0b5d6",
"name" : "suites",
"children" : [ {
"name" : "test_case.test_basic",
"children" : [ {
"name" : "test_bpm",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例-username和password正确的传入",
"uid" : "5a83721e6734bba",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'正向用例-username和password正确的传入'", "{'username': '超级管理员'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为空",
"uid" : "8ac108c9bfb7ab69",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'中'", "'反向用例-username正确-password为空'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过短",
"uid" : "1f07a0f97b565232",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 's'}", "'中'", "'反向用例-username正确-password过短'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过长",
"uid" : "a80a907c0e8cdc82",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'反向用例-username正确-password过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为特殊字符",
"uid" : "66059d8f450ce930",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}", "'中'", "'反向用例-username正确-password为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password错误",
"uid" : "2d83f81aa8cdc7b9",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU232'}", "'中'", "'反向用例-username正确-password错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username错误",
"uid" : "4ddd550d22dc935b",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin123', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-usrname为特殊字符",
"uid" : "a5dee2821b872e02",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-usrname为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username参数名为user",
"uid" : "88b4a2b9730e8014",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'user': 'admin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username参数名为user'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username过长",
"uid" : "91ea693b457a252",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "17cff1cb8d42b00f",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "failed",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
}, {
"name" : "正向用例",
"uid" : "666c08fabb09546b",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "failed",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "2131976fd0d53540",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "9c5c2d46e5a9841b",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "failed",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "65c9dd11455e8fb4",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "passed",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "28ca9cbfd5012994",
"parentUid" : "50f96e758b7f6d04b4884004451f8e58",
"status" : "failed",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "50f96e758b7f6d04b4884004451f8e58"
} ],
"uid" : "ac10974e9d4b26cb363347a53b510200"
} ],
"uid" : "d6c27516cfb7fd4d4410f19a31d4e57b"
}, {
"name" : "test_case.test_场景",
"children" : [ {
"name" : "test_login_addDem_getDemMsg",
"children" : [ {
"name" : "场景用例的正向用例",
"uid" : "79daafd09653f4c7",
"parentUid" : "9861d62ce3abbe9f7a51c8262c9b9ad8",
"status" : "passed",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "添加维度场景用例的正向用例",
"uid" : "a41c53be1030ad65",
"parentUid" : "9861d62ce3abbe9f7a51c8262c9b9ad8",
"status" : "passed",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "根据维度编码获取维度信息的正向用例",
"uid" : "e5d29a1f53465782",
"parentUid" : "9861d62ce3abbe9f7a51c8262c9b9ad8",
"status" : "passed",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
} ],
"uid" : "9861d62ce3abbe9f7a51c8262c9b9ad8"
} ],
"uid" : "81839e021a01f0b54823153c6a173112"
}, {
"name" : "test_case.test_张三",
"children" : [ {
"name" : "test_bpm",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例",
"uid" : "7214fee51740fc2c",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "failed",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "98792c483be85649",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "passed",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "e12af911aa4c6deb",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "failed",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "70d7772281b269fd",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "passed",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "6a59fc30b54b0804",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "failed",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4cb85f5fcee9036a",
"parentUid" : "85215bbadf917fbcc57ad5b411bfcef4",
"status" : "failed",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "85215bbadf917fbcc57ad5b411bfcef4"
} ],
"uid" : "bf009400b1c8735c8cbd0741b078cc5d"
} ],
"uid" : "259ffd1ef06c069b4d82fe8d755aab38"
}, {
"name" : "test_case.test_李四",
"children" : [ {
"name" : "test_bpm",
"children" : [ {
"name" : "TestBPM",
"children" : [ {
"name" : "正向用例",
"uid" : "5faca9d6b22f369f",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "failed",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "5417c181ededaf1c",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "passed",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "5fe70193aabfd6db",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "failed",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "a8ad59294d698a7f",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "passed",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "d3cceed9ff255a58",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "passed",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}", "'高'", "'正向用例'", "{'state': True, 'message': '保存组织参数成功!', 'value': ''}", "'post'", "'query|json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "d74e9c5a614430ce",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "failed",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "4c24e4f500730e3f",
"parentUid" : "6bd5c8c6dd0a4deffed54d99a825bfe4",
"status" : "failed",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "6bd5c8c6dd0a4deffed54d99a825bfe4"
} ],
"uid" : "454dc4d153aaa614e0c6c06238b78ec4"
} ],
"uid" : "32acd0ef6426b4fe27932fd7ccc34128"
} ]
}
\ No newline at end of file
{
"uid" : "17cff1cb8d42b00f",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "4d7f15aa42496f6b3aac520628b680f8",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x0000026CCD67F540>('message')\nE + where <built-in method get of dict object at 0x0000026CCD67F540> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...} = <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_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '刷新token成功' == None\nE + where None = <built-in method get of dict object at 0x0000026CCD67F540>('message')\nE + where <built-in method get of dict object at 0x0000026CCD67F540> = {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...}.get\nE + where {'account': '', 'loginStatus': True, 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOj...zNDEwOH0.aGBRss8RGH1KK7b2_KRXIsfZjCttEys9bJ5NXiJ5qDn5I0vySDZkqKcKMrCHGBBX6zOmA0INKPQ71nwVDCdG5g', 'userAttrs': {}, ...} = <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_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56D430>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '认证接口', api_name = '刷新token'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/refresh', method = 'GET', mime = None, case_data = None, expect_data = {'message': '刷新token成功'}\nsql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "c881898248a4435",
"name" : "log",
"source" : "c881898248a4435.txt",
"type" : "text/plain",
"size" : 794
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'刷新token'"
}, {
"name" : "case_data",
"value" : "None"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '刷新token成功'}"
}, {
"name" : "method",
"value" : "'GET'"
}, {
"name" : "mime",
"value" : "None"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/refresh'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "17cff1cb8d42b00f.json",
"parameterValues" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
}
\ No newline at end of file
{
"uid" : "1f07a0f97b565232",
"name" : "反向用例-username正确-password过短",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "0b4007425d760c6c570fb3eb7e4fac7b",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d6d3ef2e0825d1ac",
"name" : "log",
"source" : "d6d3ef2e0825d1ac.txt",
"type" : "text/plain",
"size" : 639
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 's'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-username正确-password过短'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "1f07a0f97b565232.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 's'}", "'中'", "'反向用例-username正确-password过短'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "2131976fd0d53540",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "e35c07d1a54c9b1864fbca3756d67c5f",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "b1c7c2d2c43e7795",
"name" : "log",
"source" : "b1c7c2d2c43e7795.txt",
"type" : "text/plain",
"size" : 736
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码获取维度信息'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'isDelete': '0'}"
}, {
"name" : "method",
"value" : "'GET'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "2131976fd0d53540.json",
"parameterValues" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}
\ No newline at end of file
{
"uid" : "28ca9cbfd5012994",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "f811c3c764a51055a39c4a135caed955",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E1B0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992657137844224'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "bebdbfcebfd8e453",
"name" : "log",
"source" : "bebdbfcebfd8e453.txt",
"type" : "text/plain",
"size" : 804
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '不知道'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "method",
"value" : "'DELETE'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "28ca9cbfd5012994.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}
\ No newline at end of file
{
"uid" : "2d83f81aa8cdc7b9",
"name" : "反向用例-username正确-password错误",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "fd1e9dc7571725f00460ad181c6eea4a",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "6158f9a16f01570c",
"name" : "log",
"source" : "6158f9a16f01570c.txt",
"type" : "text/plain",
"size" : 648
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'MTIzNDU232'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-username正确-password错误'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "2d83f81aa8cdc7b9.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU232'}", "'中'", "'反向用例-username正确-password错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "4c24e4f500730e3f",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "b9cc5b6cd94099596b0440069eb8d180",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED7F0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992666658914304'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "49f77d293a3fde19",
"name" : "log",
"source" : "49f77d293a3fde19.txt",
"type" : "text/plain",
"size" : 1092
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '不知道'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "method",
"value" : "'DELETE'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "4c24e4f500730e3f.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}
\ No newline at end of file
{
"uid" : "4cb85f5fcee9036a",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "bc2a5ac349dd9ba01d70cabcd5c6f12a",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除维度成功' == '【接口自动化框架(abc...度下存在组织,不允许删除 '\nE \nE - 【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 \nE + 删除维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C5CD0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '根据维度编码删除维度'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds', method = 'DELETE', mime = 'query'\ncase_data = {'ids': '1769992662695297024'}, expect_data = {'message': '删除维度成功'}, sql_type = 'select', sql_data = 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'\nupdate_key = 'ids'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "6e57cba0fea50d4b",
"name" : "log",
"source" : "6e57cba0fea50d4b.txt",
"type" : "text/plain",
"size" : 804
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码删除维度"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码删除维度'"
}, {
"name" : "case_data",
"value" : "{'ids': '不知道'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '删除维度成功'}"
}, {
"name" : "method",
"value" : "'DELETE'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'select'"
}, {
"name" : "update_key",
"value" : "'ids'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "4cb85f5fcee9036a.json",
"parameterValues" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}
\ No newline at end of file
{
"uid" : "4ddd550d22dc935b",
"name" : "反向用例-password正确-username错误",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "cfa4a18ea172217cbbf69b38c72aa394",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d7867fbf9587e015",
"name" : "log",
"source" : "d7867fbf9587e015.txt",
"type" : "text/plain",
"size" : 649
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin123', 'password': 'MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-password正确-username错误'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "4ddd550d22dc935b.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin123', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "5417c181ededaf1c",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "3239d8081f3b600ad0a2f6654d9e9540",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "e63c6bfd557bbe9c",
"name" : "log",
"source" : "e63c6bfd557bbe9c.txt",
"type" : "text/plain",
"size" : 736
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码获取维度信息'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'isDelete': '0'}"
}, {
"name" : "method",
"value" : "'GET'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "5417c181ededaf1c.json",
"parameterValues" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}
\ No newline at end of file
{
"uid" : "5a83721e6734bba",
"name" : "正向用例-username和password正确的传入",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "3f1d35f4066c84617f08afff18c7d140",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "ce7059fb204d7a6a",
"name" : "log",
"source" : "ce7059fb204d7a6a.txt",
"type" : "text/plain",
"size" : 2495
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例-username和password正确的传入'"
}, {
"name" : "expect_data",
"value" : "{'username': '超级管理员'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "5a83721e6734bba.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'正向用例-username和password正确的传入'", "{'username': '超级管理员'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "5faca9d6b22f369f",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "ae9f137d9bc75e4c0d96d3f89e6b5163",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5C5EB0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "9451b69ec8f6da76",
"name" : "log",
"source" : "9451b69ec8f6da76.txt",
"type" : "text/plain",
"size" : 2459
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "5faca9d6b22f369f.json",
"parameterValues" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}
\ No newline at end of file
{
"uid" : "5fe70193aabfd6db",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "1a4bdab341a4b17f6776dab9b944dfb7",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5E0950>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992666658914304', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "4f53379e4aca1329",
"name" : "log",
"source" : "4f53379e4aca1329.txt",
"type" : "text/plain",
"size" : 986
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加组织成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "update_key",
"value" : "'demId'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "5fe70193aabfd6db.json",
"parameterValues" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}
\ No newline at end of file
{
"uid" : "65c9dd11455e8fb4",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "97aefcf8b99cff5b9dfdfb8fa2ad90ad",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "c4c95e401aa1ba71",
"name" : "log",
"source" : "c4c95e401aa1ba71.txt",
"type" : "text/plain",
"size" : 617
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'组织加入用户'"
}, {
"name" : "case_data",
"value" : "{'orgCode': 'add_org_test', 'accounts': 'admin'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '加入成功', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'params'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "65c9dd11455e8fb4.json",
"parameterValues" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}
\ No newline at end of file
{
"uid" : "66059d8f450ce930",
"name" : "反向用例-username正确-password为特殊字符",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "0d51b1f1ea14a2b70ecc43dcaf329def",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "741f462fea147725",
"name" : "log",
"source" : "741f462fea147725.txt",
"type" : "text/plain",
"size" : 659
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-username正确-password为特殊字符'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "66059d8f450ce930.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}", "'中'", "'反向用例-username正确-password为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "666c08fabb09546b",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "abc0c8fde646a04d91cb8062c1980c5c",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56DA00>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "420d9e54c12c92b9",
"name" : "log",
"source" : "420d9e54c12c92b9.txt",
"type" : "text/plain",
"size" : 753
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "666c08fabb09546b.json",
"parameterValues" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}
\ No newline at end of file
{
"uid" : "6a59fc30b54b0804",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "1c1f33c035e6f92d84e4975fce86c461",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C47A0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "318fe2ce3e849659",
"name" : "log",
"source" : "318fe2ce3e849659.txt",
"type" : "text/plain",
"size" : 599
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'add_org_test'"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "6a59fc30b54b0804.json",
"parameterValues" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}
\ No newline at end of file
{
"uid" : "70d7772281b269fd",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "5d0d957248c183c0f634313d89fb4b4b",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "cfe330311d551555",
"name" : "log",
"source" : "cfe330311d551555.txt",
"type" : "text/plain",
"size" : 617
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "组织加入用户"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'组织加入用户'"
}, {
"name" : "case_data",
"value" : "{'orgCode': 'add_org_test', 'accounts': 'admin'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '加入成功', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'params'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "70d7772281b269fd.json",
"parameterValues" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}
\ No newline at end of file
{
"uid" : "7214fee51740fc2c",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "60017b91adf587725ed0cf764eff922a",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加维度成功' == '添加维度成功!'\nE \nE - 添加维度成功!\nE ? -\nE + 添加维度成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD56E7E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '维度管理', api_name = '添加维度'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/demension/v1/dem/addDem', method = 'POST', mime = 'application/json'\ncase_data = {'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, expect_data = {'message': '添加维度成功'}, sql_type = 'delete'\nsql_data = 'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";', update_key = None\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "6555d94c40faeb30",
"name" : "log",
"source" : "6555d94c40faeb30.txt",
"type" : "text/plain",
"size" : 2459
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加维度'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加维度成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'"
}, {
"name" : "sql_type",
"value" : "'delete'"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "7214fee51740fc2c.json",
"parameterValues" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}
\ No newline at end of file
{
"uid" : "79daafd09653f4c7",
"name" : "场景用例的正向用例",
"fullName" : "test_case.test_场景.test_login_addDem_getDemMsg#test_login",
"historyId" : "bb215cb6d210afbe7031470b52dfb522",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "b602209763b27808",
"name" : "log",
"source" : "b602209763b27808.txt",
"type" : "text/plain",
"size" : 237
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "epic",
"value" : "BPM-场景"
}, {
"name" : "feature",
"value" : "认证接口"
}, {
"name" : "story",
"value" : "登录系统"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "tag",
"value" : "dependency"
}, {
"name" : "parentSuite",
"value" : "test_case.test_场景"
}, {
"name" : "suite",
"value" : "test_login_addDem_getDemMsg"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_场景.test_login_addDem_getDemMsg"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency" ]
},
"source" : "79daafd09653f4c7.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "88b4a2b9730e8014",
"name" : "反向用例-password正确-username参数名为user",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "0c28b443652de3fd75b1d682ff543180",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "86a337fc28ddaaa6",
"name" : "log",
"source" : "86a337fc28ddaaa6.txt",
"type" : "text/plain",
"size" : 642
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'user': 'admin', 'password': 'MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-password正确-username参数名为user'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "88b4a2b9730e8014.json",
"parameterValues" : [ "'登录系统'", "{'user': 'admin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username参数名为user'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "8ac108c9bfb7ab69",
"name" : "反向用例-username正确-password为空",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "84a645c7fde7c9d82679e72341e909ac",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "d2b56f6ed9d2a307",
"name" : "log",
"source" : "d2b56f6ed9d2a307.txt",
"type" : "text/plain",
"size" : 530
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': ''}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-username正确-password为空'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "8ac108c9bfb7ab69.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'中'", "'反向用例-username正确-password为空'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "91ea693b457a252",
"name" : "反向用例-password正确-username过长",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "72775e34cc18a89b5bc4a4e468d0b424",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "eb33e9efc32b5080",
"name" : "log",
"source" : "eb33e9efc32b5080.txt",
"type" : "text/plain",
"size" : 736
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-password正确-username过长'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "91ea693b457a252.json",
"parameterValues" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "98792c483be85649",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "2827ec579aa9fd4f105f24206a812cd8",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "f0988cfeab0e7a17",
"name" : "log",
"source" : "f0988cfeab0e7a17.txt",
"type" : "text/plain",
"size" : 736
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'根据维度编码获取维度信息'"
}, {
"name" : "case_data",
"value" : "{'code': 'abc_123_xyz'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'isDelete': '0'}"
}, {
"name" : "method",
"value" : "'GET'"
}, {
"name" : "mime",
"value" : "'query'"
}, {
"name" : "module_name",
"value" : "'维度管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "98792c483be85649.json",
"parameterValues" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}
\ No newline at end of file
{
"uid" : "9c5c2d46e5a9841b",
"name" : "正向用例",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "24098579565a4047f5c8d5e8247a5536",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_basic\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_basic.test_bpm.TestBPM object at 0x0000026CCD56E210>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD2F86E0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD096150>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992657137844224', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-basic\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"basic\", table_name=\"登录-维度管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_basic\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "6b65bec0a23d61f8",
"name" : "log",
"source" : "6b65bec0a23d61f8.txt",
"type" : "text/plain",
"size" : 986
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加组织成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "update_key",
"value" : "'demId'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "9c5c2d46e5a9841b.json",
"parameterValues" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}
\ No newline at end of file
{
"uid" : "a41c53be1030ad65",
"name" : "添加维度场景用例的正向用例",
"fullName" : "test_case.test_场景.test_login_addDem_getDemMsg#test_add_dem",
"historyId" : "339271251d5b9f0017a531e684ad7baf",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "937da6de974495e",
"name" : "log",
"source" : "937da6de974495e.txt",
"type" : "text/plain",
"size" : 460
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "epic",
"value" : "BPM-场景"
}, {
"name" : "story",
"value" : "添加维度"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "tag",
"value" : "dependency(depends=['test_login'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_场景"
}, {
"name" : "suite",
"value" : "test_login_addDem_getDemMsg"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_场景.test_login_addDem_getDemMsg"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['test_login'])" ]
},
"source" : "a41c53be1030ad65.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "a5dee2821b872e02",
"name" : "反向用例-password正确-usrname为特殊字符",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "78dd40c0137c3cb6a48f7aa1746f3223",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "151cf90c84288b7c",
"name" : "log",
"source" : "151cf90c84288b7c.txt",
"type" : "text/plain",
"size" : 662
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-password正确-usrname为特殊字符'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "a5dee2821b872e02.json",
"parameterValues" : [ "'登录系统'", "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-usrname为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "a80a907c0e8cdc82",
"name" : "反向用例-username正确-password过长",
"fullName" : "test_case.test_basic.test_bpm.TestBPM#test_bpm",
"historyId" : "c0a236e02824381a2ef96d3ca6147b92",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834105680,
"stop" : 1710834105781,
"duration" : 101
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834105469,
"stop" : 1710834105680,
"duration" : 211
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "42122bd7fa43ff3b",
"name" : "log",
"source" : "42122bd7fa43ff3b.txt",
"type" : "text/plain",
"size" : 782
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110098,
"stop" : 1710834110098,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110099,
"stop" : 1710834110099,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"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_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_basic.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'登录系统'"
}, {
"name" : "case_data",
"value" : "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'反向用例-username正确-password过长'"
}, {
"name" : "expect_data",
"value" : "{'message': '账号或密码错误'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'application/json'"
}, {
"name" : "module_name",
"value" : "'认证接口'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/auth'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "a80a907c0e8cdc82.json",
"parameterValues" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'反向用例-username正确-password过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}
\ No newline at end of file
{
"uid" : "a8ad59294d698a7f",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "75828df1b17e2e690d09aafa9ebdad6e",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "db5ff72a6858c9c2",
"name" : "log",
"source" : "db5ff72a6858c9c2.txt",
"type" : "text/plain",
"size" : 617
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "组织加入用户"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'组织加入用户'"
}, {
"name" : "case_data",
"value" : "{'orgCode': 'add_org_test', 'accounts': 'admin'}"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '加入成功', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'params'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "a8ad59294d698a7f.json",
"parameterValues" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}
\ No newline at end of file
{
"uid" : "d3cceed9ff255a58",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "b1a70deebb94240f070c47d2aaf927ca",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "98efe4f2d3bc236b",
"name" : "log",
"source" : "98efe4f2d3bc236b.txt",
"type" : "text/plain",
"size" : 703
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "保存组织参数"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'保存组织参数'"
}, {
"name" : "case_data",
"value" : "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '保存组织参数成功!', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'query|json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ ]
},
"source" : "d3cceed9ff255a58.json",
"parameterValues" : [ "'保存组织参数'", "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}", "'高'", "'正向用例'", "{'state': True, 'message': '保存组织参数成功!', 'value': ''}", "'post'", "'query|json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'" ]
}
\ No newline at end of file
{
"uid" : "d74e9c5a614430ce",
"name" : "正向用例",
"fullName" : "test_case.test_李四.test_bpm.TestBPM#test_bpm",
"historyId" : "54fa446dd3adfc5c34c749a611aad827",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "db_fix",
"time" : {
"start" : 1710834109080,
"stop" : 1710834109277,
"duration" : 197
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix",
"time" : {
"start" : 1710834109277,
"stop" : 1710834109374,
"duration" : 97
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE assert '删除组织成功!' == '部分删除成功,其中编码为...test\"】的组织不存在;'\nE \nE - 部分删除成功,其中编码为【\"add_org_test\"】的组织不存在;\nE + 删除组织成功!\n\ntest_case\\test_李四\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_李四.test_bpm.TestBPM object at 0x0000026CCD5ED3D0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD951100>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD952810>, module_name = '组织管理', api_name = '删除组织'\ncase_title = '正向用例', case_level = '中', url = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'post', mime = 'json', case_data = 'add_org_test'\nexpect_data = {'message': '删除组织成功!', 'state': True, 'value': ''}, sql_type = None, sql_data = None, update_key = None\n\n @allure.epic(\"BPM项目-李四\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"李四\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_李四\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "a881dca8a8c4f65a",
"name" : "log",
"source" : "a881dca8a8c4f65a.txt",
"type" : "text/plain",
"size" : 599
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110095,
"stop" : 1710834110095,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110094,
"stop" : 1710834110094,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "删除组织"
}, {
"name" : "severity",
"value" : "中"
}, {
"name" : "epic",
"value" : "BPM项目-李四"
}, {
"name" : "parentSuite",
"value" : "test_case.test_李四"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_李四.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'删除组织'"
}, {
"name" : "case_data",
"value" : "'add_org_test'"
}, {
"name" : "case_level",
"value" : "'中'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'state': True, 'message': '删除组织成功!', 'value': ''}"
}, {
"name" : "method",
"value" : "'post'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "None"
}, {
"name" : "sql_type",
"value" : "None"
}, {
"name" : "update_key",
"value" : "None"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "d74e9c5a614430ce.json",
"parameterValues" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}
\ No newline at end of file
{
"uid" : "e12af911aa4c6deb",
"name" : "正向用例",
"fullName" : "test_case.test_张三.test_bpm.TestBPM#test_bpm",
"historyId" : "49425d368f51d12c96097efd4ffa7652",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "req_fix",
"time" : {
"start" : 1710834108330,
"stop" : 1710834108424,
"duration" : 94
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix",
"time" : {
"start" : 1710834108120,
"stop" : 1710834108330,
"duration" : 210
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "failed",
"statusMessage" : "AssertionError: 断言失败",
"statusTrace" : "self = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '添加组织成功' == '添加组织成功!'\nE \nE - 添加组织成功!\nE ? -\nE + 添加组织成功\n\ntest_case\\test_张三\\test_bpm.py:64: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.test_case.test_张三.test_bpm.TestBPM object at 0x0000026CCD5C43E0>\ndb_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db.DB object at 0x0000026CCD9144D0>\nreq_fix = <com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method.RequestsMethod object at 0x0000026CCD9144A0>, module_name = '组织管理', api_name = '添加组织'\ncase_title = '正向用例', case_level = '高', url = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mime = 'json'\ncase_data = {'code': 'add_org_test', 'demId': '1769992662695297024', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功'}, sql_type = 'select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}, update_key = 'demId'\n\n @allure.epic(\"BPM项目-张三\") # 项目名称\n # @allure.feature(\"模块名称\") # 模块名称\n # @allure.story(\"接口名称\") # 接口名称\n # @allure.title(\"接口用例标题\") # 接口用例标题\n # @allure.severity(\"接口用例等级\") # 接口用例等级\n @pytest.mark.parametrize(\n \"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key\",\n ReadExcel(username=\"张三\", table_name=\"组织管理\").get_data())\n def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,\n expect_data, sql_type, sql_data, update_key):\n # allure报告中展示的结果\n allure.dynamic.feature(module_name)\n allure.dynamic.story(api_name)\n allure.dynamic.title(case_title)\n allure.dynamic.severity(case_level)\n \n # 1.1 判断sql语句类型是否为delete\n if sql_type == \"delete\":\n # 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data)\n # 1.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 2.1 判断sql语句类型是否为select\n elif sql_type == \"select\":\n # 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data)\n # 2.3 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 2.3 使用RequestsMethod类对象request_all方法发生请求\n \n # 3.1 判断sql语句的类型是否为select|delete或者为delete|select\n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix\n db_fix.delete(sql_data[\"delete\"])\n # 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix\n select_result = db_fix.select(sql_data[\"select\"])\n # 3.4 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n # 3.5 使用RequestsMethod类对象request_all方法发生请求\n \n # 使用RequestsMethod类对象request_all方法发生请求\n res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)\n # 断言\n try:\n for key in expect_data.keys():\n assert expect_data[key] == res.json().get(key)\n except AssertionError:\n log.error(\n f\"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}\")\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_case\\test_张三\\test_bpm.py:68: AssertionError",
"steps" : [ ],
"attachments" : [ {
"uid" : "e7f1700f15ae007d",
"name" : "log",
"source" : "e7f1700f15ae007d.txt",
"type" : "text/plain",
"size" : 986
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : true,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ {
"name" : "req_fix::0",
"time" : {
"start" : 1710834110096,
"stop" : 1710834110096,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
}, {
"name" : "db_fix::0",
"time" : {
"start" : 1710834110097,
"stop" : 1710834110097,
"duration" : 0
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"labels" : [ {
"name" : "feature",
"value" : "组织管理"
}, {
"name" : "story",
"value" : "添加组织"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM项目-张三"
}, {
"name" : "parentSuite",
"value" : "test_case.test_张三"
}, {
"name" : "suite",
"value" : "test_bpm"
}, {
"name" : "subSuite",
"value" : "TestBPM"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_张三.test_bpm"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ {
"name" : "api_name",
"value" : "'添加组织'"
}, {
"name" : "case_data",
"value" : "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"
}, {
"name" : "case_level",
"value" : "'高'"
}, {
"name" : "case_title",
"value" : "'正向用例'"
}, {
"name" : "expect_data",
"value" : "{'message': '添加组织成功'}"
}, {
"name" : "method",
"value" : "'POST'"
}, {
"name" : "mime",
"value" : "'json'"
}, {
"name" : "module_name",
"value" : "'组织管理'"
}, {
"name" : "sql_data",
"value" : "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}"
}, {
"name" : "sql_type",
"value" : "'select|delete'"
}, {
"name" : "update_key",
"value" : "'demId'"
}, {
"name" : "url",
"value" : "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"
} ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ {
"name" : "Product defects",
"matchedStatuses" : [ ],
"flaky" : false
} ],
"tags" : [ ]
},
"source" : "e12af911aa4c6deb.json",
"parameterValues" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}
\ No newline at end of file
{
"uid" : "e5d29a1f53465782",
"name" : "根据维度编码获取维度信息的正向用例",
"fullName" : "test_case.test_场景.test_login_addDem_getDemMsg#test_get_dem_msg",
"historyId" : "6457de8282ef399aec143b4cafb61250",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"status" : "passed",
"flaky" : false,
"newFailed" : false,
"beforeStages" : [ {
"name" : "_session_faker",
"time" : {
"start" : 1710834105400,
"stop" : 1710834105469,
"duration" : 69
},
"status" : "passed",
"steps" : [ ],
"attachments" : [ ],
"parameters" : [ ],
"attachmentsCount" : 0,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : false
} ],
"testStage" : {
"status" : "passed",
"steps" : [ ],
"attachments" : [ {
"uid" : "fc62e2ec71f1b9b6",
"name" : "log",
"source" : "fc62e2ec71f1b9b6.txt",
"type" : "text/plain",
"size" : 482
} ],
"parameters" : [ ],
"attachmentsCount" : 1,
"shouldDisplayMessage" : false,
"stepsCount" : 0,
"hasContent" : true
},
"afterStages" : [ ],
"labels" : [ {
"name" : "feature",
"value" : "维度管理"
}, {
"name" : "story",
"value" : "根据维度编码获取维度信息"
}, {
"name" : "severity",
"value" : "高"
}, {
"name" : "epic",
"value" : "BPM-场景"
}, {
"name" : "tag",
"value" : "dependency(depends=['test_add_dem'])"
}, {
"name" : "parentSuite",
"value" : "test_case.test_场景"
}, {
"name" : "suite",
"value" : "test_login_addDem_getDemMsg"
}, {
"name" : "host",
"value" : "ding"
}, {
"name" : "thread",
"value" : "21048-MainThread"
}, {
"name" : "framework",
"value" : "pytest"
}, {
"name" : "language",
"value" : "cpython3"
}, {
"name" : "package",
"value" : "test_case.test_场景.test_login_addDem_getDemMsg"
}, {
"name" : "resultFormat",
"value" : "allure2"
} ],
"parameters" : [ ],
"links" : [ ],
"hidden" : false,
"retry" : false,
"extra" : {
"severity" : "normal",
"retries" : [ ],
"categories" : [ ],
"tags" : [ "dependency(depends=['test_add_dem'])" ]
},
"source" : "e5d29a1f53465782.json",
"parameterValues" : [ ]
}
\ No newline at end of file
{
"uid" : "ab17fc5a4eb3bca4b216b548c7f9fcbc",
"name" : "timeline",
"children" : [ {
"name" : "ding",
"children" : [ {
"name" : "21048-MainThread",
"children" : [ {
"name" : "正向用例",
"uid" : "d74e9c5a614430ce",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "5417c181ededaf1c",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "2131976fd0d53540",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "正向用例",
"uid" : "4c24e4f500730e3f",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "6a59fc30b54b0804",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'删除组织'", "'add_org_test'", "'中'", "'正向用例'", "{'state': True, 'message': '删除组织成功!', 'value': ''}", "'post'", "'json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'" ]
}, {
"name" : "正向用例",
"uid" : "65c9dd11455e8fb4",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "正向用例",
"uid" : "a8ad59294d698a7f",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "场景用例的正向用例",
"uid" : "79daafd09653f4c7",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "反向用例-username正确-password错误",
"uid" : "2d83f81aa8cdc7b9",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU232'}", "'中'", "'反向用例-username正确-password错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过短",
"uid" : "1f07a0f97b565232",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 's'}", "'中'", "'反向用例-username正确-password过短'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password过长",
"uid" : "a80a907c0e8cdc82",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}", "'中'", "'反向用例-username正确-password过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "28ca9cbfd5012994",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
}, {
"name" : "正向用例",
"uid" : "e12af911aa4c6deb",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "d3cceed9ff255a58",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'保存组织参数'", "{'query': {'orgCode': 'add_org_test'}, 'body': [{'alias': 'ah', 'value': '1,2'}, {'alias': 'sz', 'value': '成都'}]}", "'高'", "'正向用例'", "{'state': True, 'message': '保存组织参数成功!', 'value': ''}", "'post'", "'query|json'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'" ]
}, {
"name" : "正向用例",
"uid" : "17cff1cb8d42b00f",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'刷新token'", "None", "'中'", "'正向用例'", "{'message': '刷新token成功'}", "'GET'", "None", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/refresh'" ]
}, {
"name" : "正向用例",
"uid" : "666c08fabb09546b",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "添加维度场景用例的正向用例",
"uid" : "a41c53be1030ad65",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "正向用例",
"uid" : "5fe70193aabfd6db",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例-username和password正确的传入",
"uid" : "5a83721e6734bba",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': 'MTIzNDU2'}", "'高'", "'正向用例-username和password正确的传入'", "{'username': '超级管理员'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "7214fee51740fc2c",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "正向用例",
"uid" : "9c5c2d46e5a9841b",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加组织'", "{'code': 'add_org_test', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}", "'高'", "'正向用例'", "{'message': '添加组织成功'}", "'POST'", "'json'", "'组织管理'", "{'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"add_org_test\";', 'select': 'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'}", "'select|delete'", "'demId'", "'http://120.46.172.186:8080/api/org/v1/org/addOrg'" ]
}, {
"name" : "正向用例",
"uid" : "70d7772281b269fd",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'组织加入用户'", "{'orgCode': 'add_org_test', 'accounts': 'admin'}", "'中'", "'正向用例'", "{'state': True, 'message': '加入成功', 'value': ''}", "'post'", "'params'", "'组织管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg'" ]
}, {
"name" : "反向用例-password正确-usrname为特殊字符",
"uid" : "a5dee2821b872e02",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-usrname为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "根据维度编码获取维度信息的正向用例",
"uid" : "e5d29a1f53465782",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ ]
}, {
"name" : "反向用例-password正确-username参数名为user",
"uid" : "88b4a2b9730e8014",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'user': 'admin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username参数名为user'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "98792c483be85649",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码获取维度信息'", "{'code': 'abc_123_xyz'}", "'中'", "'正向用例'", "{'isDelete': '0'}", "'GET'", "'query'", "'维度管理'", "None", "None", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'" ]
}, {
"name" : "反向用例-password正确-username过长",
"uid" : "91ea693b457a252",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username过长'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-username正确-password为特殊字符",
"uid" : "66059d8f450ce930",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}", "'中'", "'反向用例-username正确-password为特殊字符'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "反向用例-password正确-username错误",
"uid" : "4ddd550d22dc935b",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin123', 'password': 'MTIzNDU2'}", "'中'", "'反向用例-password正确-username错误'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "5faca9d6b22f369f",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'添加维度'", "{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}", "'高'", "'正向用例'", "{'message': '添加维度成功'}", "'POST'", "'application/json'", "'维度管理'", "'DELETE FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'delete'", "None", "'http://120.46.172.186:8080/api/demension/v1/dem/addDem'" ]
}, {
"name" : "反向用例-username正确-password为空",
"uid" : "8ac108c9bfb7ab69",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "passed",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'登录系统'", "{'username': 'admin', 'password': ''}", "'中'", "'反向用例-username正确-password为空'", "{'message': '账号或密码错误'}", "'POST'", "'application/json'", "'认证接口'", "None", "None", "None", "'http://120.46.172.186:8080/auth'" ]
}, {
"name" : "正向用例",
"uid" : "4cb85f5fcee9036a",
"parentUid" : "54b74782dd48e3c3ba1272932f0222ee",
"status" : "failed",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"flaky" : false,
"newFailed" : false,
"parameters" : [ "'根据维度编码删除维度'", "{'ids': '不知道'}", "'中'", "'正向用例'", "{'message': '删除维度成功'}", "'DELETE'", "'query'", "'维度管理'", "'select ID_ FROM uc_demension WHERE `CODE_`=\"abc_123_xyz\";'", "'select'", "'ids'", "'http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds'" ]
} ],
"uid" : "54b74782dd48e3c3ba1272932f0222ee"
} ],
"uid" : "549a1bcae91956fca23f34a6c436f615"
} ]
}
\ No newline at end of file
launch_status failed=12 1710834343000000000
launch_status broken=0 1710834343000000000
launch_status passed=20 1710834343000000000
launch_status skipped=0 1710834343000000000
launch_status unknown=0 1710834343000000000
launch_time duration=4299 1710834343000000000
launch_time min_duration=46 1710834343000000000
launch_time max_duration=200 1710834343000000000
launch_time sum_duration=3037 1710834343000000000
launch_problems product_defects=12 1710834343000000000
launch_retries retries=0 1710834343000000000
launch_retries run=32 1710834343000000000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Allure Report summary mail</title>
</head>
<body>
Mail body
</body>
</html>
launch_status_failed 12
launch_status_broken 0
launch_status_passed 20
launch_status_skipped 0
launch_status_unknown 0
launch_time_duration 4299
launch_time_min_duration 46
launch_time_max_duration 200
launch_time_sum_duration 3037
launch_problems_product_defects 12
launch_retries_retries 0
launch_retries_run 32
module.exports = __webpack_public_path__ + "favicon.ico";
\ No newline at end of file
[ {
"data" : {
"Product defects" : 12
}
} ]
\ No newline at end of file
[ {
"data" : {
"duration" : 4299
}
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 12,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 32
}
} ]
\ No newline at end of file
{
"54fa446dd3adfc5c34c749a611aad827" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d74e9c5a614430ce",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
}
} ]
},
"4d7f15aa42496f6b3aac520628b680f8" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "17cff1cb8d42b00f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
}
} ]
},
"72775e34cc18a89b5bc4a4e468d0b424" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "91ea693b457a252",
"status" : "passed",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
}
} ]
},
"78dd40c0137c3cb6a48f7aa1746f3223" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a5dee2821b872e02",
"status" : "passed",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
}
} ]
},
"75828df1b17e2e690d09aafa9ebdad6e" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a8ad59294d698a7f",
"status" : "passed",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
}
} ]
},
"6457de8282ef399aec143b4cafb61250" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e5d29a1f53465782",
"status" : "passed",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
}
} ]
},
"24098579565a4047f5c8d5e8247a5536" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "9c5c2d46e5a9841b",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
}
} ]
},
"5d0d957248c183c0f634313d89fb4b4b" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "70d7772281b269fd",
"status" : "passed",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
}
} ]
},
"cfa4a18ea172217cbbf69b38c72aa394" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4ddd550d22dc935b",
"status" : "passed",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
}
} ]
},
"abc0c8fde646a04d91cb8062c1980c5c" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "666c08fabb09546b",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
}
} ]
},
"0d51b1f1ea14a2b70ecc43dcaf329def" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "66059d8f450ce930",
"status" : "passed",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
}
} ]
},
"3f1d35f4066c84617f08afff18c7d140" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5a83721e6734bba",
"status" : "passed",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
}
} ]
},
"0b4007425d760c6c570fb3eb7e4fac7b" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "1f07a0f97b565232",
"status" : "passed",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
}
} ]
},
"c0a236e02824381a2ef96d3ca6147b92" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a80a907c0e8cdc82",
"status" : "passed",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
}
} ]
},
"60017b91adf587725ed0cf764eff922a" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "7214fee51740fc2c",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
}
} ]
},
"3239d8081f3b600ad0a2f6654d9e9540" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5417c181ededaf1c",
"status" : "passed",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
}
} ]
},
"b1a70deebb94240f070c47d2aaf927ca" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "d3cceed9ff255a58",
"status" : "passed",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
}
} ]
},
"339271251d5b9f0017a531e684ad7baf" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "a41c53be1030ad65",
"status" : "passed",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
}
} ]
},
"fd1e9dc7571725f00460ad181c6eea4a" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2d83f81aa8cdc7b9",
"status" : "passed",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
}
} ]
},
"bb215cb6d210afbe7031470b52dfb522" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "79daafd09653f4c7",
"status" : "passed",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
}
} ]
},
"2827ec579aa9fd4f105f24206a812cd8" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "98792c483be85649",
"status" : "passed",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
}
} ]
},
"84a645c7fde7c9d82679e72341e909ac" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "8ac108c9bfb7ab69",
"status" : "passed",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
}
} ]
},
"49425d368f51d12c96097efd4ffa7652" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "e12af911aa4c6deb",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
}
} ]
},
"e35c07d1a54c9b1864fbca3756d67c5f" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "2131976fd0d53540",
"status" : "passed",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
}
} ]
},
"ae9f137d9bc75e4c0d96d3f89e6b5163" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5faca9d6b22f369f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
}
} ]
},
"bc2a5ac349dd9ba01d70cabcd5c6f12a" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4cb85f5fcee9036a",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
}
} ]
},
"1c1f33c035e6f92d84e4975fce86c461" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "6a59fc30b54b0804",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
}
} ]
},
"f811c3c764a51055a39c4a135caed955" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "28ca9cbfd5012994",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
}
} ]
},
"97aefcf8b99cff5b9dfdfb8fa2ad90ad" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "65c9dd11455e8fb4",
"status" : "passed",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
}
} ]
},
"b9cc5b6cd94099596b0440069eb8d180" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "4c24e4f500730e3f",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
}
} ]
},
"0c28b443652de3fd75b1d682ff543180" : {
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 1,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "88b4a2b9730e8014",
"status" : "passed",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
}
} ]
},
"1a4bdab341a4b17f6776dab9b944dfb7" : {
"statistic" : {
"failed" : 1,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 1
},
"items" : [ {
"uid" : "5fe70193aabfd6db",
"status" : "failed",
"statusDetails" : "AssertionError: 断言失败",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
}
} ]
}
}
\ No newline at end of file
[ {
"data" : {
"run" : 32,
"retry" : 0
}
} ]
\ 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" : 4,
"items" : [ {
"uid" : "6d2cb02a38678aa9e7ac76603800ea33",
"name" : "BPM项目-basic",
"statistic" : {
"failed" : 3,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 3
}
}, {
"uid" : "76c18cc8f6208673d0c44358a39dd6ab",
"name" : "BPM项目-张三",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
}, {
"uid" : "e0d28b73db5838b491aef15d5f6c6f43",
"name" : "BPM项目-李四",
"statistic" : {
"failed" : 2,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 2
}
}, {
"uid" : "ac339a42cac6a94333bb20983ffb9687",
"name" : "BPM-场景",
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 2
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"Product defects" : 12
}
} ]
\ No newline at end of file
{
"total" : 1,
"items" : [ {
"uid" : "8fb3a91ba5aaf9de24cc8a92edc82b5d",
"name" : "Product defects",
"statistic" : {
"failed" : 12,
"broken" : 0,
"skipped" : 0,
"passed" : 0,
"unknown" : 0,
"total" : 12
}
} ]
}
\ No newline at end of file
[ {
"data" : {
"duration" : 4299
}
} ]
\ No newline at end of file
[ {
"uid" : "d74e9c5a614430ce",
"name" : "正向用例",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a8ad59294d698a7f",
"name" : "正向用例",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c24e4f500730e3f",
"name" : "正向用例",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a41c53be1030ad65",
"name" : "添加维度场景用例的正向用例",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6a59fc30b54b0804",
"name" : "正向用例",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "8ac108c9bfb7ab69",
"name" : "反向用例-username正确-password为空",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "66059d8f450ce930",
"name" : "反向用例-username正确-password为特殊字符",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e12af911aa4c6deb",
"name" : "正向用例",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "88b4a2b9730e8014",
"name" : "反向用例-password正确-username参数名为user",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "91ea693b457a252",
"name" : "反向用例-password正确-username过长",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2d83f81aa8cdc7b9",
"name" : "反向用例-username正确-password错误",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "28ca9cbfd5012994",
"name" : "正向用例",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4ddd550d22dc935b",
"name" : "反向用例-password正确-username错误",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "17cff1cb8d42b00f",
"name" : "正向用例",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5417c181ededaf1c",
"name" : "正向用例",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "666c08fabb09546b",
"name" : "正向用例",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a5dee2821b872e02",
"name" : "反向用例-password正确-usrname为特殊字符",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "98792c483be85649",
"name" : "正向用例",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5fe70193aabfd6db",
"name" : "正向用例",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "1f07a0f97b565232",
"name" : "反向用例-username正确-password过短",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d3cceed9ff255a58",
"name" : "正向用例",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9c5c2d46e5a9841b",
"name" : "正向用例",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "7214fee51740fc2c",
"name" : "正向用例",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5a83721e6734bba",
"name" : "正向用例-username和password正确的传入",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "79daafd09653f4c7",
"name" : "场景用例的正向用例",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "70d7772281b269fd",
"name" : "正向用例",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e5d29a1f53465782",
"name" : "根据维度编码获取维度信息的正向用例",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "65c9dd11455e8fb4",
"name" : "正向用例",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2131976fd0d53540",
"name" : "正向用例",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5faca9d6b22f369f",
"name" : "正向用例",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4cb85f5fcee9036a",
"name" : "正向用例",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a80a907c0e8cdc82",
"name" : "反向用例-username正确-password过长",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"data" : {
"failed" : 12,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 32
}
} ]
\ No newline at end of file
[ {
"data" : {
"run" : 32,
"retry" : 0
}
} ]
\ No newline at end of file
[ {
"uid" : "1f07a0f97b565232",
"name" : "反向用例-username正确-password过短",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a80a907c0e8cdc82",
"name" : "反向用例-username正确-password过长",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4ddd550d22dc935b",
"name" : "反向用例-password正确-username错误",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9c5c2d46e5a9841b",
"name" : "正向用例",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "28ca9cbfd5012994",
"name" : "正向用例",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "e12af911aa4c6deb",
"name" : "正向用例",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "8ac108c9bfb7ab69",
"name" : "反向用例-username正确-password为空",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5faca9d6b22f369f",
"name" : "正向用例",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "2131976fd0d53540",
"name" : "正向用例",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5fe70193aabfd6db",
"name" : "正向用例",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "65c9dd11455e8fb4",
"name" : "正向用例",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "70d7772281b269fd",
"name" : "正向用例",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "79daafd09653f4c7",
"name" : "场景用例的正向用例",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4cb85f5fcee9036a",
"name" : "正向用例",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "6a59fc30b54b0804",
"name" : "正向用例",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "e5d29a1f53465782",
"name" : "根据维度编码获取维度信息的正向用例",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "66059d8f450ce930",
"name" : "反向用例-username正确-password为特殊字符",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c24e4f500730e3f",
"name" : "正向用例",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "17cff1cb8d42b00f",
"name" : "正向用例",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "d3cceed9ff255a58",
"name" : "正向用例",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "666c08fabb09546b",
"name" : "正向用例",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "7214fee51740fc2c",
"name" : "正向用例",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "d74e9c5a614430ce",
"name" : "正向用例",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5a83721e6734bba",
"name" : "正向用例-username和password正确的传入",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5417c181ededaf1c",
"name" : "正向用例",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a5dee2821b872e02",
"name" : "反向用例-password正确-usrname为特殊字符",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a41c53be1030ad65",
"name" : "添加维度场景用例的正向用例",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2d83f81aa8cdc7b9",
"name" : "反向用例-username正确-password错误",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "98792c483be85649",
"name" : "正向用例",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "a8ad59294d698a7f",
"name" : "正向用例",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "88b4a2b9730e8014",
"name" : "反向用例-password正确-username参数名为user",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "91ea693b457a252",
"name" : "反向用例-password正确-username过长",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
[ {
"uid" : "d74e9c5a614430ce",
"name" : "正向用例",
"time" : {
"start" : 1710834109929,
"stop" : 1710834109977,
"duration" : 48
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a8ad59294d698a7f",
"name" : "正向用例",
"time" : {
"start" : 1710834109798,
"stop" : 1710834109850,
"duration" : 52
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "4c24e4f500730e3f",
"name" : "正向用例",
"time" : {
"start" : 1710834109994,
"stop" : 1710834110081,
"duration" : 87
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a41c53be1030ad65",
"name" : "添加维度场景用例的正向用例",
"time" : {
"start" : 1710834107857,
"stop" : 1710834108010,
"duration" : 153
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "6a59fc30b54b0804",
"name" : "正向用例",
"time" : {
"start" : 1710834108908,
"stop" : 1710834108954,
"duration" : 46
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "8ac108c9bfb7ab69",
"name" : "反向用例-username正确-password为空",
"time" : {
"start" : 1710834105848,
"stop" : 1710834105901,
"duration" : 53
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "66059d8f450ce930",
"name" : "反向用例-username正确-password为特殊字符",
"time" : {
"start" : 1710834106140,
"stop" : 1710834106235,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e12af911aa4c6deb",
"name" : "正向用例",
"time" : {
"start" : 1710834108633,
"stop" : 1710834108812,
"duration" : 179
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "88b4a2b9730e8014",
"name" : "反向用例-password正确-username参数名为user",
"time" : {
"start" : 1710834106642,
"stop" : 1710834106727,
"duration" : 85
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "91ea693b457a252",
"name" : "反向用例-password正确-username过长",
"time" : {
"start" : 1710834106737,
"stop" : 1710834106832,
"duration" : 95
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2d83f81aa8cdc7b9",
"name" : "反向用例-username正确-password错误",
"time" : {
"start" : 1710834106334,
"stop" : 1710834106422,
"duration" : 88
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "28ca9cbfd5012994",
"name" : "正向用例",
"time" : {
"start" : 1710834107630,
"stop" : 1710834107735,
"duration" : 105
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4ddd550d22dc935b",
"name" : "反向用例-password正确-username错误",
"time" : {
"start" : 1710834106432,
"stop" : 1710834106526,
"duration" : 94
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "17cff1cb8d42b00f",
"name" : "正向用例",
"time" : {
"start" : 1710834106842,
"stop" : 1710834106946,
"duration" : 104
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5417c181ededaf1c",
"name" : "正向用例",
"time" : {
"start" : 1710834109531,
"stop" : 1710834109582,
"duration" : 51
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "666c08fabb09546b",
"name" : "正向用例",
"time" : {
"start" : 1710834107091,
"stop" : 1710834107236,
"duration" : 145
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a5dee2821b872e02",
"name" : "反向用例-password正确-usrname为特殊字符",
"time" : {
"start" : 1710834106537,
"stop" : 1710834106633,
"duration" : 96
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "98792c483be85649",
"name" : "正向用例",
"time" : {
"start" : 1710834108579,
"stop" : 1710834108625,
"duration" : 46
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5fe70193aabfd6db",
"name" : "正向用例",
"time" : {
"start" : 1710834109602,
"stop" : 1710834109778,
"duration" : 176
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "1f07a0f97b565232",
"name" : "反向用例-username正确-password过短",
"time" : {
"start" : 1710834105910,
"stop" : 1710834106011,
"duration" : 101
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "d3cceed9ff255a58",
"name" : "正向用例",
"time" : {
"start" : 1710834109861,
"stop" : 1710834109917,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "9c5c2d46e5a9841b",
"name" : "正向用例",
"time" : {
"start" : 1710834107321,
"stop" : 1710834107521,
"duration" : 200
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "7214fee51740fc2c",
"name" : "正向用例",
"time" : {
"start" : 1710834108426,
"stop" : 1710834108561,
"duration" : 135
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "5a83721e6734bba",
"name" : "正向用例-username和password正确的传入",
"time" : {
"start" : 1710834105782,
"stop" : 1710834105839,
"duration" : 57
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "79daafd09653f4c7",
"name" : "场景用例的正向用例",
"time" : {
"start" : 1710834107754,
"stop" : 1710834107853,
"duration" : 99
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "70d7772281b269fd",
"name" : "正向用例",
"time" : {
"start" : 1710834108830,
"stop" : 1710834108885,
"duration" : 55
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "e5d29a1f53465782",
"name" : "根据维度编码获取维度信息的正向用例",
"time" : {
"start" : 1710834108015,
"stop" : 1710834108106,
"duration" : 91
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "65c9dd11455e8fb4",
"name" : "正向用例",
"time" : {
"start" : 1710834107557,
"stop" : 1710834107621,
"duration" : 64
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "2131976fd0d53540",
"name" : "正向用例",
"time" : {
"start" : 1710834107254,
"stop" : 1710834107310,
"duration" : 56
},
"status" : "passed",
"severity" : "normal"
}, {
"uid" : "5faca9d6b22f369f",
"name" : "正向用例",
"time" : {
"start" : 1710834109377,
"stop" : 1710834109514,
"duration" : 137
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "4cb85f5fcee9036a",
"name" : "正向用例",
"time" : {
"start" : 1710834108973,
"stop" : 1710834109064,
"duration" : 91
},
"status" : "failed",
"severity" : "normal"
}, {
"uid" : "a80a907c0e8cdc82",
"name" : "反向用例-username正确-password过长",
"time" : {
"start" : 1710834106032,
"stop" : 1710834106129,
"duration" : 97
},
"status" : "passed",
"severity" : "normal"
} ]
\ No newline at end of file
{
"total" : 4,
"items" : [ {
"uid" : "d6c27516cfb7fd4d4410f19a31d4e57b",
"name" : "test_case.test_basic",
"statistic" : {
"failed" : 4,
"broken" : 0,
"skipped" : 0,
"passed" : 12,
"unknown" : 0,
"total" : 16
}
}, {
"uid" : "32acd0ef6426b4fe27932fd7ccc34128",
"name" : "test_case.test_李四",
"statistic" : {
"failed" : 4,
"broken" : 0,
"skipped" : 0,
"passed" : 3,
"unknown" : 0,
"total" : 7
}
}, {
"uid" : "259ffd1ef06c069b4d82fe8d755aab38",
"name" : "test_case.test_张三",
"statistic" : {
"failed" : 4,
"broken" : 0,
"skipped" : 0,
"passed" : 2,
"unknown" : 0,
"total" : 6
}
}, {
"uid" : "81839e021a01f0b54823153c6a173112",
"name" : "test_case.test_场景",
"statistic" : {
"failed" : 0,
"broken" : 0,
"skipped" : 0,
"passed" : 3,
"unknown" : 0,
"total" : 3
}
} ]
}
\ No newline at end of file
{
"reportName" : "Allure Report",
"testRuns" : [ ],
"statistic" : {
"failed" : 12,
"broken" : 0,
"skipped" : 0,
"passed" : 20,
"unknown" : 0,
"total" : 32
},
"time" : {
"start" : 1710834105782,
"stop" : 1710834110081,
"duration" : 4299,
"minDuration" : 46,
"maxDuration" : 200,
"sumDuration" : 3037
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
2024-03-18 17:12:33,798 - INFO: 执行的函数或方法为:__init__,其功能为:获取所有的json文件的路径,在使用read_json读取所有的json文件,再获取excel文件路径,加载工作簿,获取工作表
2024-03-18 17:12:33,798 - INFO: 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:get_file_path,其功能为:根据key获取file节点下文件的路径
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:get_file_path,其功能为:根据key获取file节点下文件的路径
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:get_file_path,其功能为:根据key获取file节点下文件的路径
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:get_file_path,其功能为:根据key获取file节点下文件的路径
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:get_table_name,其功能为:根据key获取table节点下key对应的工作表名称
2024-03-18 17:12:33,799 - INFO: 执行的函数或方法为:read_json,其功能为:None
2024-03-18 17:12:33,800 - INFO: 执行的函数或方法为:read_json,其功能为:None
2024-03-18 17:12:33,800 - INFO: 执行的函数或方法为:read_json,其功能为:None
2024-03-18 17:12:33,810 - INFO: 功能:获取所有的测试数据,存放在一个二维列表中方法名称为:get_data
2024-03-18 17:12:33,810 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,812 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,813 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,813 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,813 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,813 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,813 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,813 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,813 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,813 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,813 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,814 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,814 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,815 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,815 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,816 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,816 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,816 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,816 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,816 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,816 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,817 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,817 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,818 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,818 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,819 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,819 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,820 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,820 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,821 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,821 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,823 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,823 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,823 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,823 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,823 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,823 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,824 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,824 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,825 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,825 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,826 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,826 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,827 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,827 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,828 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,828 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,829 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,829 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,830 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,830 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,831 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,831 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,832 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,832 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,832 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,832 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,832 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,832 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,833 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,833 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,834 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,834 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,834 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,834 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,834 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,834 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,835 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,835 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,835 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,835 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,835 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,835 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,836 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,836 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,837 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,837 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,838 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,838 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,839 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,839 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,839 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,839 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,839 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,839 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,840 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,840 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,841 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,841 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,842 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,842 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,843 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,843 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,843 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,843 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,843 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:case_url,其功能为:根据行号,获取用例的url
2024-03-18 17:12:33,843 - INFO: 执行的函数或方法为:get_host,其功能为:根据key获取host节点下key对应的域名
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:case_req_method,其功能为:根据行号,获取用例的请求方法
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:case_mime,其功能为:根据行号,获取用例请求的媒体类型
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:case_data,其功能为:根据行号,获取用例数据
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:expect_data,其功能为:根据行号,获取期望数据
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:sql_type,其功能为:根据行号,获取sql语句类型
2024-03-18 17:12:33,844 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,844 - INFO: 执行的函数或方法为:sql_data,其功能为:根据行号,获取sql语句
2024-03-18 17:12:33,845 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,845 - INFO: 执行的函数或方法为:module_name,其功能为:根据行号获取模块名称
2024-03-18 17:12:33,845 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,845 - INFO: 执行的函数或方法为:api_name,其功能为:根据行号获取接口名称
2024-03-18 17:12:33,845 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,845 - INFO: 执行的函数或方法为:update_key,其功能为:根据行号,获取更新的key
2024-03-18 17:12:33,845 - INFO: 功能为:获取指定单元格数据方法名称为:__get_cell_value
2024-03-18 17:12:33,853 - DEBUG: Looking for locale `en_US` in provider `faker.providers.address`.
2024-03-18 17:12:33,864 - DEBUG: Provider `faker.providers.address` has been localized to `en_US`.
2024-03-18 17:12:33,869 - DEBUG: Looking for locale `en_US` in provider `faker.providers.automotive`.
2024-03-18 17:12:33,876 - DEBUG: Provider `faker.providers.automotive` has been localized to `en_US`.
2024-03-18 17:12:33,879 - DEBUG: Looking for locale `en_US` in provider `faker.providers.bank`.
2024-03-18 17:12:33,885 - DEBUG: Specified locale `en_US` is not available for provider `faker.providers.bank`. Locale reset to `en_GB` for this provider.
2024-03-18 17:12:33,887 - DEBUG: Looking for locale `en_US` in provider `faker.providers.barcode`.
2024-03-18 17:12:33,888 - DEBUG: Provider `faker.providers.barcode` has been localized to `en_US`.
2024-03-18 17:12:33,890 - DEBUG: Looking for locale `en_US` in provider `faker.providers.color`.
2024-03-18 17:12:33,894 - DEBUG: Provider `faker.providers.color` has been localized to `en_US`.
2024-03-18 17:12:33,896 - DEBUG: Looking for locale `en_US` in provider `faker.providers.company`.
2024-03-18 17:12:33,902 - DEBUG: Provider `faker.providers.company` has been localized to `en_US`.
2024-03-18 17:12:33,904 - DEBUG: Looking for locale `en_US` in provider `faker.providers.credit_card`.
2024-03-18 17:12:33,906 - DEBUG: Provider `faker.providers.credit_card` has been localized to `en_US`.
2024-03-18 17:12:33,907 - DEBUG: Looking for locale `en_US` in provider `faker.providers.currency`.
2024-03-18 17:12:33,912 - DEBUG: Provider `faker.providers.currency` has been localized to `en_US`.
2024-03-18 17:12:33,914 - DEBUG: Looking for locale `en_US` in provider `faker.providers.date_time`.
2024-03-18 17:12:33,921 - DEBUG: Provider `faker.providers.date_time` has been localized to `en_US`.
2024-03-18 17:12:33,924 - DEBUG: Provider `faker.providers.emoji` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,924 - DEBUG: Provider `faker.providers.file` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,924 - DEBUG: Looking for locale `en_US` in provider `faker.providers.geo`.
2024-03-18 17:12:33,926 - DEBUG: Provider `faker.providers.geo` has been localized to `en_US`.
2024-03-18 17:12:33,929 - DEBUG: Looking for locale `en_US` in provider `faker.providers.internet`.
2024-03-18 17:12:33,936 - DEBUG: Provider `faker.providers.internet` has been localized to `en_US`.
2024-03-18 17:12:33,941 - DEBUG: Provider `faker.providers.isbn` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,941 - DEBUG: Looking for locale `en_US` in provider `faker.providers.job`.
2024-03-18 17:12:33,947 - DEBUG: Provider `faker.providers.job` has been localized to `en_US`.
2024-03-18 17:12:33,949 - DEBUG: Looking for locale `en_US` in provider `faker.providers.lorem`.
2024-03-18 17:12:33,953 - DEBUG: Provider `faker.providers.lorem` has been localized to `en_US`.
2024-03-18 17:12:33,958 - DEBUG: Looking for locale `en_US` in provider `faker.providers.misc`.
2024-03-18 17:12:33,959 - DEBUG: Provider `faker.providers.misc` has been localized to `en_US`.
2024-03-18 17:12:33,961 - DEBUG: Looking for locale `en_US` in provider `faker.providers.passport`.
2024-03-18 17:12:33,961 - DEBUG: Provider `faker.providers.passport` has been localized to `en_US`.
2024-03-18 17:12:33,962 - DEBUG: Looking for locale `en_US` in provider `faker.providers.person`.
2024-03-18 17:12:33,973 - DEBUG: Provider `faker.providers.person` has been localized to `en_US`.
2024-03-18 17:12:33,980 - DEBUG: Looking for locale `en_US` in provider `faker.providers.phone_number`.
2024-03-18 17:12:33,992 - DEBUG: Provider `faker.providers.phone_number` has been localized to `en_US`.
2024-03-18 17:12:33,994 - DEBUG: Provider `faker.providers.profile` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,994 - DEBUG: Provider `faker.providers.python` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,995 - DEBUG: Provider `faker.providers.sbn` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:33,995 - DEBUG: Looking for locale `en_US` in provider `faker.providers.ssn`.
2024-03-18 17:12:34,003 - DEBUG: Provider `faker.providers.ssn` has been localized to `en_US`.
2024-03-18 17:12:34,005 - DEBUG: Provider `faker.providers.user_agent` does not feature localization. Specified locale `en_US` is not utilized for this provider.
2024-03-18 17:12:34,007 - INFO: 执行的函数或方法为:__init__,其功能为:链接是数据库,获取链接对象和游标对象
2024-03-18 17:12:34,007 - INFO: 执行的函数或方法为:__init__,其功能为:获取ini文件的路径,使用Configparser对象的read方法读取ini文件
2024-03-18 17:12:34,008 - INFO: 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
2024-03-18 17:12:34,008 - INFO: 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
2024-03-18 17:12:34,008 - INFO: 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
2024-03-18 17:12:34,008 - INFO: 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
2024-03-18 17:12:34,008 - INFO: 执行的函数或方法为:get_sql_connect_msg,其功能为:根据key获取sql节点下key对应的数据库链接信息
2024-03-18 17:12:34,223 - DEBUG: Starting new HTTP connection (1): 120.46.172.186:8080
2024-03-18 17:12:34,345 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
2024-03-18 17:12:34,403 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 200 None
2024-03-18 17:12:34,404 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'username': '超级管理员'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA4Mzk1NTIsImlhdCI6MTcxMDc1MzE1Mn0.nptsaS19NUi5LcVcL5NFcqttr7tC9T-mfmlSTDrFByEg3lgNn9sUTd4mTJxv7oExpC-naLEIeX_fQGAKJXuuZw","username":"超级管理员","account":"admin","userId":"1","expiration":86400,"loginStatus":true,"userAttrs":{"tenantId":"-1"}}
2024-03-18 17:12:34,457 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,458 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': ''}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653101465190400"}
2024-03-18 17:12:34,463 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:34,552 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,553 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 's'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653101863649280"}
2024-03-18 17:12:34,557 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:34,647 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,647 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653102257913856"}
2024-03-18 17:12:34,651 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:34,743 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,744 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': '▣▤▥▦▩◘◈'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653102664761344"}
2024-03-18 17:12:34,747 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:34,833 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,834 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin', 'password': 'MTIzNDU232'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653103042248704"}
2024-03-18 17:12:34,838 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:34,931 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:34,932 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'admin123', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653103444901888"}
2024-03-18 17:12:34,935 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:35,027 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:35,027 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': '▣▤▥▦▩◘◈', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653103851749376"}
2024-03-18 17:12:35,031 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:35,115 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:35,117 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'user': 'admin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653104233431040"}
2024-03-18 17:12:35,120 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:35,213 - DEBUG: http://120.46.172.186:8080 "POST /auth HTTP/1.1" 500 None
2024-03-18 17:12:35,214 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/auth,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'username': 'adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin', 'password': 'MTIzNDU2'}, 期望数据为:{'message': '账号或密码错误'},服务器返回的数据为:{"state":false,"message":"账号或密码错误","logId":"1769653104636084224"}
2024-03-18 17:12:35,219 - DEBUG: Resetting dropped connection: 120.46.172.186
2024-03-18 17:12:35,324 - DEBUG: http://120.46.172.186:8080 "GET /refresh HTTP/1.1" 200 None
2024-03-18 17:12:35,324 - ERROR: 断言失败,请求的url为:http://120.46.172.186:8080/refresh,请求的方法为:GET,请求的媒体类型为:None, 请求的用例数据:None, 期望数据为:{'message': '刷新token成功'},服务器返回的数据为:{"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsInRlbmFudElkIjoiLTEiLCJleHAiOjE3MTA4Mzk1NTMsImlhdCI6MTcxMDc1MzE1M30.AT1cu3FgipdcNq1oh7nQKbNdMCyRGSMGbEa0fs2P5EggK9d3EHaGfD_Le3Oc2cPZVHGsBy7H3AJGq_uJjOV4Mw","username":"","account":"","userId":"","loginStatus":true,"userAttrs":{}}
2024-03-18 17:12:35,568 - INFO: 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
2024-03-18 17:12:35,704 - DEBUG: http://120.46.172.186:8080 "POST /api/demension/v1/dem/addDem HTTP/1.1" 200 None
2024-03-18 17:12:35,705 - ERROR: 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/addDem,请求的方法为:POST,请求的媒体类型为:application/json, 请求的用例数据:{'code': 'abc_123_xyz', 'description': 'abc_123_xyz', 'isDefault': 0, 'name': '接口自动化框架'}, 期望数据为:{'message': '添加维度成功'},服务器返回的数据为:{"state":true,"message":"添加维度成功!","value":""}
2024-03-18 17:12:35,764 - DEBUG: http://120.46.172.186:8080 "GET /api/demension/v1/dem/getDem?code=abc_123_xyz HTTP/1.1" 200 None
2024-03-18 17:12:35,766 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/getDem,请求的方法为:GET,请求的媒体类型为:query, 请求的用例数据:{'code': 'abc_123_xyz'}, 期望数据为:{'isDelete': '0'},服务器返回的数据为:{"createTime":"2024-03-18 17:12:34","isDelete":"0","id":"1769653106674515968","demCode":"abc_123_xyz","demName":"接口自动化框架","demDesc":"abc_123_xyz","isDefault":0,"organId":0,"code":"abc_123_xyz","name":"接口自动化框架","pkVal":"1769653106674515968"}
2024-03-18 17:12:35,768 - INFO: 执行的函数或方法为:delete,其功能为:使用游标对象执行删除的sql语句
2024-03-18 17:12:35,853 - INFO: 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
2024-03-18 17:12:35,948 - DEBUG: http://120.46.172.186:8080 "POST /api/org/v1/org/addOrg HTTP/1.1" 200 None
2024-03-18 17:12:35,949 - ERROR: 断言失败,请求的url为:http://120.46.172.186:8080/api/org/v1/org/addOrg,请求的方法为:POST,请求的媒体类型为:json, 请求的用例数据:{'code': 'add_org_test', 'demId': '1769653106674515968', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '接口自动化框架添加的组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}, 期望数据为:{'message': '添加组织成功'},服务器返回的数据为:{"state":true,"message":"添加组织成功!","value":""}
2024-03-18 17:12:36,017 - DEBUG: http://120.46.172.186:8080 "POST /api/org/v1/orgUsers/addUsersForOrg?orgCode=add_org_test&accounts=admin HTTP/1.1" 200 None
2024-03-18 17:12:36,018 - ERROR: 断言成功,请求的url为:http://120.46.172.186:8080/api/org/v1/orgUsers/addUsersForOrg,请求的方法为:post,请求的媒体类型为:params, 请求的用例数据:{'orgCode': 'add_org_test', 'accounts': 'admin'}, 期望数据为:{'state': True, 'message': '加入成功', 'value': ''},服务器返回的数据为:{"state":true,"message":"加入成功","value":""}
2024-03-18 17:12:36,020 - INFO: 执行的函数或方法为:select,其功能为:使用游标对象执行查询的sql语句,并返回查询的结果
2024-03-18 17:12:36,110 - DEBUG: http://120.46.172.186:8080 "DELETE /api/demension/v1/dem/deleteDemByIds?ids=1769653106674515968 HTTP/1.1" 200 None
2024-03-18 17:12:36,112 - ERROR: 断言失败,请求的url为:http://120.46.172.186:8080/api/demension/v1/dem/deleteDemByIds,请求的方法为:DELETE,请求的媒体类型为:query, 请求的用例数据:{'ids': '1769653106674515968'}, 期望数据为:{'message': '删除维度成功'},服务器返回的数据为:{"state":false,"message":"【接口自动化框架(abc_123_xyz)】的维度下存在组织,不允许删除 ","value":""}
2024-03-18 17:12:36,120 - INFO: 执行的函数或方法为:close,其功能为:None
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: requests_method.py
# Author: laozhao
# Datetime: 2024/3/15 16:12
# Description:
#
# ---------------------------------------------------------------------------
import base64
import requests
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_ini import ReadIni
class RequestsMethod:
def __init__(self):
"""关联登录成功的状态--关联token"""
# 获取登录的url
login_url = ReadIni().get_host("bpm_host") + "/auth"
# 配置登录数据
login_data = {"username": "admin", "password": base64.b64encode("123456".encode()).decode()}
# 创建Session对象
self.bpm_session = requests.sessions.Session()
# 使用Session对象发送登录请求
res = self.bpm_session.request(method="post", url=login_url, json=login_data)
# 提取token,将token更新到Session对象的headers中
self.bpm_session.headers["Authorization"] = "Bearer " + res.json().get("token")
def request_all(self, req_url, req_method, req_mime, case_data):
"""
公共的请求方法
:param req_url: 请求的url,字符串格式
:param req_method: 请求的方法,字符串格式
:param req_mime: 请求的媒体类型,字符串格式
:param case_data: 用例数据
:return: Response type
"""
# 判断请求的媒体类型的值是否为application/x-www-form-urlencoded或x-www-form-urlencoded,使用data关键字传参
# 除了json和上传文件以外,在请求体传参的使用data
if req_mime == 'application/x-www-form-urlencoded' or req_mime == 'x-www-form-urlencoded':
return self.bpm_session.request(method=req_method, url=req_url, data=case_data)
# 判断请求的媒体类型的值是否为application/json或json,使用json关键字传参
elif req_mime == 'application/json' or req_mime == 'json':
return self.bpm_session.request(method=req_method, url=req_url, json=case_data)
# 判断请求的媒体类型的值是否为multipart/form-data或form-data,使用files关键字传参
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)
# 判断请求的媒体类型的值是否为query或params,使用params关键字传参
elif req_mime == 'query' or req_mime == 'params':
return self.bpm_session.request(method=req_method, url=req_url, params=case_data)
# 判断请求的媒体类型的值为None,表示没有传参
elif req_mime is None:
return self.bpm_session.request(method=req_method, url=req_url)
# 判断媒体类型是否为query|json 或者为json|query, 表示请求体和地址栏同时传参
elif req_mime == "query|json" or req_mime == "json|query":
return self.bpm_session.request(method=req_method, url=req_url, params=case_data["query"],
json=case_data["body"])
# 其他类型--返回一个错误的提示信息
else:
raise ValueError("传入的媒体类型,没封装,请自行封装")
if __name__ == '__main__':
req = RequestsMethod()
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 17:15
# Description:
#
# ---------------------------------------------------------------------------
"""
pytest输出报告,使用插件:pytest-html. pip install pytest-html
pytest 用例模块/用例包 -vv --html=报告保存的路径 --self-contained-html
"""
"""
失败重跑插件:pip install pytest-rerunfailures
pytest 用例模块/用例包 -vv --html=报告保存的路径 --self-contained-html --reruns 失败重跑的次数 --reruns-delay 失败重跑的间隔时间
"""
# allure
"""
1: 配置allure的环境。验证环境是否正确:allure --version
2: 需要按照allure插件:pip install allure-pytest
生成报告:
1:生成测试结果的json文件
pytest 用例模块/用例包 --alluredir=json文件存放的目录 --clean-alluredir
2:根据第一步生成的json文件生成报告:
方式1:生成本地服务
allure serve 第一步存放json文件的目录
方式2:生成静态的报告
allure generate 第一步存放json文件的目录 -o 报告存放的目录
本地打开allure生成的报告:allure open 报告存放的目录
"""
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 17:15
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: conftest.py
# Author: laozhao
# Datetime: 2024/3/18 16:52
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db import DB
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method import RequestsMethod
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
@pytest.fixture(scope="session")
def req_fix():
req = RequestsMethod()
yield req
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: test_bpm.py
# Author: laozhao
# Datetime: 2024/3/18 16:49
# Description:
#
# ---------------------------------------------------------------------------
import allure
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_excel import ReadExcel
class TestBPM:
@allure.epic("BPM项目-basic") # 项目名称
# @allure.feature("模块名称") # 模块名称
# @allure.story("接口名称") # 接口名称
# @allure.title("接口用例标题") # 接口用例标题
# @allure.severity("接口用例等级") # 接口用例等级
@pytest.mark.parametrize(
"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key",
ReadExcel(username="basic", table_name="登录-维度管理").get_data())
def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,
expect_data, sql_type, sql_data, update_key):
# allure报告中展示的结果
allure.dynamic.feature(module_name)
allure.dynamic.story(api_name)
allure.dynamic.title(case_title)
allure.dynamic.severity(case_level)
# 1.1 判断sql语句类型是否为delete
if sql_type == "delete":
# 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data)
# 1.3 使用RequestsMethod类对象request_all方法发生请求
# 2.1 判断sql语句类型是否为select
elif sql_type == "select":
# 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data)
# 2.3 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 2.3 使用RequestsMethod类对象request_all方法发生请求
# 3.1 判断sql语句的类型是否为select|delete或者为delete|select
elif sql_type == "select|delete" or sql_type == "delete|select":
# 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data["delete"])
# 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data["select"])
# 3.4 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 3.5 使用RequestsMethod类对象request_all方法发生请求
# 使用RequestsMethod类对象request_all方法发生请求
res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)
# 断言
try:
for key in expect_data.keys():
assert expect_data[key] == res.json().get(key)
except AssertionError:
log.error(
f"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
raise AssertionError("断言失败")
else:
log.error(
f"断言成功,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 17:17
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: conftest.py
# Author: laozhao
# Datetime: 2024/3/18 16:52
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db import DB
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method import RequestsMethod
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
@pytest.fixture(scope="session")
def req_fix():
req = RequestsMethod()
yield req
#
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: test_login_addDem_getDemMsg.py
# Author: laozhao
# Datetime: 2024/3/18 17:17
# Description:
#
# ---------------------------------------------------------------------------
import base64
import allure
import pytest
import requests
from faker import Faker
depends_data = {}
# 登录
@allure.epic("BPM-场景")
@allure.feature("认证接口")
@allure.story("登录系统")
@allure.title("场景用例的正向用例")
@allure.severity("高")
@pytest.mark.dependency()
def test_login():
url = "http://120.46.172.186:8080/auth"
data = {"username": "admin", "password": base64.b64encode("123456".encode()).decode()}
res = requests.post(url=url, json=data)
token = res.json().get("token")
depends_data["Authorization"] = "Bearer "+token
assert "超级" in res.text
@allure.epic("BPM-场景")
@allure.feature("维度管理")
@allure.story("添加维度")
@allure.title("添加维度场景用例的正向用例")
@allure.severity("高")
@pytest.mark.dependency(depends=["test_login"])
def test_add_dem():
url = "http://120.46.172.186:8080/api/demension/v1/dem/addDem"
data = Faker(locale="zh_cn")
code = data.phone_number()
data = {
"code": code,
"description": "test_add_dem_1234",
"isDefault": 0,
"name": "test_add_dem_1234"
}
res = requests.post(url=url, json=data, headers={"Authorization": depends_data["Authorization"]})
depends_data["dem_code"] = code
assert "成功" in res.text
@allure.epic("BPM-场景")
@allure.feature("维度管理")
@allure.story("根据维度编码获取维度信息")
@allure.title("根据维度编码获取维度信息的正向用例")
@allure.severity("高")
@pytest.mark.dependency(depends=["test_add_dem"])
def test_get_dem_msg():
url = "http://120.46.172.186:8080/api/demension/v1/dem/getDem"
data = {"code": depends_data["dem_code"]}
res = requests.get(url=url, params=data, headers={"Authorization": depends_data["Authorization"]})
assert "isDelete" in res.text
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 17:15
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: conftest.py
# Author: laozhao
# Datetime: 2024/3/18 16:52
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db import DB
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method import RequestsMethod
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
@pytest.fixture(scope="session")
def req_fix():
req = RequestsMethod()
yield req
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: test_bpm.py
# Author: laozhao
# Datetime: 2024/3/18 16:49
# Description:
#
# ---------------------------------------------------------------------------
import allure
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_excel import ReadExcel
class TestBPM:
@allure.epic("BPM项目-张三") # 项目名称
# @allure.feature("模块名称") # 模块名称
# @allure.story("接口名称") # 接口名称
# @allure.title("接口用例标题") # 接口用例标题
# @allure.severity("接口用例等级") # 接口用例等级
@pytest.mark.parametrize(
"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key",
ReadExcel(username="张三", table_name="组织管理").get_data())
def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,
expect_data, sql_type, sql_data, update_key):
# allure报告中展示的结果
allure.dynamic.feature(module_name)
allure.dynamic.story(api_name)
allure.dynamic.title(case_title)
allure.dynamic.severity(case_level)
# 1.1 判断sql语句类型是否为delete
if sql_type == "delete":
# 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data)
# 1.3 使用RequestsMethod类对象request_all方法发生请求
# 2.1 判断sql语句类型是否为select
elif sql_type == "select":
# 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data)
# 2.3 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 2.3 使用RequestsMethod类对象request_all方法发生请求
# 3.1 判断sql语句的类型是否为select|delete或者为delete|select
elif sql_type == "select|delete" or sql_type == "delete|select":
# 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data["delete"])
# 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data["select"])
# 3.4 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 3.5 使用RequestsMethod类对象request_all方法发生请求
# 使用RequestsMethod类对象request_all方法发生请求
res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)
# 断言
try:
for key in expect_data.keys():
assert expect_data[key] == res.json().get(key)
except AssertionError:
log.error(
f"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
raise AssertionError("断言失败")
else:
log.error(
f"断言成功,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: __init__.py
# Author: laozhao
# Datetime: 2024/3/18 17:15
# Description:
#
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: conftest.py
# Author: laozhao
# Datetime: 2024/3/18 16:52
# Description:
#
# ---------------------------------------------------------------------------
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.db import DB
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.requests_method.requests_method import RequestsMethod
@pytest.fixture(scope="session")
def db_fix():
db = DB()
yield db
db.close()
@pytest.fixture(scope="session")
def req_fix():
req = RequestsMethod()
yield req
# def pytest_collection_modifyitems(items):
# # item表示每个测试用例,解决用例名称中文显示问题
# for item in items:
# item.name = item.name.encode("utf-8").decode("unicode-escape")
# item._nodeid = item._nodeid.encode("utf-8").decode("unicode-escape")
# -*-coding:utf-8 -*- #
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test59
# FileName: test_bpm.py
# Author: laozhao
# Datetime: 2024/3/18 16:49
# Description:
#
# ---------------------------------------------------------------------------
import allure
import pytest
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest import log
from com.rhrc.APIAutoTest.day_05.t.InterfaceAutoTest.common.read_excel import ReadExcel
class TestBPM:
@allure.epic("BPM项目-李四") # 项目名称
# @allure.feature("模块名称") # 模块名称
# @allure.story("接口名称") # 接口名称
# @allure.title("接口用例标题") # 接口用例标题
# @allure.severity("接口用例等级") # 接口用例等级
@pytest.mark.parametrize(
"module_name, api_name, case_title, case_level, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key",
ReadExcel(username="李四", table_name="组织管理").get_data())
def test_bpm(self, db_fix, req_fix, module_name, api_name, case_title, case_level, url, method, mime, case_data,
expect_data, sql_type, sql_data, update_key):
# allure报告中展示的结果
allure.dynamic.feature(module_name)
allure.dynamic.story(api_name)
allure.dynamic.title(case_title)
allure.dynamic.severity(case_level)
# 1.1 判断sql语句类型是否为delete
if sql_type == "delete":
# 1.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data)
# 1.3 使用RequestsMethod类对象request_all方法发生请求
# 2.1 判断sql语句类型是否为select
elif sql_type == "select":
# 2.2 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data)
# 2.3 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 2.3 使用RequestsMethod类对象request_all方法发生请求
# 3.1 判断sql语句的类型是否为select|delete或者为delete|select
elif sql_type == "select|delete" or sql_type == "delete|select":
# 3.2 使用DB类对象使用delete方法执行删除的sql语句。DB类对象就是自定义固件db_fix
db_fix.delete(sql_data["delete"])
# 3.3 使用DB类对象使用select方法执行查询的sql语句,并接收查询的结果。DB类对象就是自定义固件db_fix
select_result = db_fix.select(sql_data["select"])
# 3.4 将查询结果更新到用例数据中
case_data[update_key] = select_result
# 3.5 使用RequestsMethod类对象request_all方法发生请求
# 使用RequestsMethod类对象request_all方法发生请求
res = req_fix.request_all(req_url=url, req_method=method, req_mime=mime, case_data=case_data)
# 断言
try:
for key in expect_data.keys():
assert expect_data[key] == res.json().get(key)
except AssertionError:
log.error(
f"断言失败,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
raise AssertionError("断言失败")
else:
log.error(
f"断言成功,请求的url为:{url},请求的方法为:{method},请求的媒体类型为:{mime}, 请求的用例数据:{case_data}, 期望数据为:{expect_data},服务器返回的数据为:{res.text}")
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