Commit 71e80f88 by 艺术就是爆炸

接口自动化1.0.0

parent 42fab556
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: __init__.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:21
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: __init__.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:27
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
from interfaceAutoTest1.common.log import writelog
log = writelog()
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: db.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:39
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
import pymysql
from interfaceAutoTest1.common.read_ini import Read_ini
from interfaceAutoTest1.common import log
class DB:
def __init__(self):
try:
self.conn = pymysql.connect(
host=Read_ini().get_sql('host'),
port=int(Read_ini().get_sql('port')),
user=Read_ini().get_sql('user'),
password=Read_ini().get_sql('pwd'),
database=Read_ini().get_sql('database'),
charset='utf8'
)
self.cursor = self.conn.cursor()
except:
log.error('链接数据库错误或者获取游标对象失败!!!,请求察看数据库的链接配置.')
raise pymysql.MySQLError('链接数据库错误或者获取游标对象失败!!!,请求察看数据库的链接配置.')
def close(self):
self.cursor.close()
self.conn.close()
def select_sql(self, sql):
try:
self.cursor.execute(sql)
result = self.cursor.fetchall()
return result
except:
log.error("执行删除的sql语句错误,请察看对应的删除的sql语句")
raise ValueError("执行删除的sql语句错误,请察看对应的删除的sql语句")
def delete_sql(self, sql):
try:
self.cursor.execute(sql)
result = self.conn.commit()
return result
except:
log.error("执行删除的sql语句错误,请察看对应的删除的sql语句")
raise ValueError("执行删除的sql语句错误,请察看对应的删除的sql语句")
if __name__ == '__main__':
db = DB()
sql = '''select * from uc_demension where CODE_ = 'lzh';'''
result = db.select_sql(sql)
print(result)
sql = """SELECT * FROM uc_demension"""
print(db.select_sql(sql))
# host = Read_ini().get_sql('host')
# port = Read_ini().get_sql('port')
# user = Read_ini().get_sql('user')
# password = Read_ini().get_sql('pwd')
# database = Read_ini().get_sql('database')
# charset = 'utf8'
# print(host)
# print(port)
# print(user)
# print(password)
# print(database)
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: log.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:27
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
import logging
import os
def writelog():
logger = logging.getLogger("艺术")
logger.level = logging.NOTSET
logger_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),'report/log/日志.log')
handerl = logging.FileHandler(logger_path, mode='a', encoding='utf-8')
format = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s - %(name)s')
handerl.setFormatter(format)
logger.addHandler(handerl)
return logger
if __name__ == '__main__':
log = writelog()
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: read_excel.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:44
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
import openpyxl
from interfaceAutoTest1.common import log
from interfaceAutoTest1.common.read_ini import Read_ini
from interfaceAutoTest1.common.read_json import Read_json
from interfaceAutoTest1.data_config.settings import *
class Read_excel:
def __init__(self, tables='BPM'):
self.re_ini = Read_ini()
excel_path = self.re_ini.get_file_data(EXCEL)
case_path = self.re_ini.get_file_data(CASE)
expect_path = self.re_ini.get_file_data(EXPECT)
sql_path = self.re_ini.get_file_data(SQL)
if tables is not 'BPM':
table_name = self.re_ini.get_table(TABLE_NAME)
else:
table_name = tables
wb = openpyxl.load_workbook(excel_path)
try:
self.ws = wb[table_name]
except:
log.error('获取工作表失败,请察看工作表名称是否配置正确!!!')
raise NameError('获取工作表失败,请察看工作表名称是否配置正确!!!')
self.case_data = Read_json(case_path)
self.expect_data = Read_json(expect_path)
self.sql_data = Read_json(sql_path)
# print(self.case_data)
# print(self.expect_data)
print(self.sql_data)
# print(tables)
def get_cell_value(self, column, row):
try:
value = self.ws[column + str(row)].value
if value is None:
return None
elif value.strip():
return value.strip()
except:
log.error('获取指定单元格数据失败,请察看输入的列号和行号是否正确!!')
raise ValueError('获取指定单元格数据失败,请察看输入的列号和行号是否正确!!')
# 获取模块名称
def module_value(self,row):
# return self.ws[MODULE+str(row)].value
return self.get_cell_value(MODULE, row)
# 获取接口名称
def api_value(self,row):
# return self.ws[API+str(row)].value
return self.get_cell_value(API, row)
# 获取请求方法
def req_method(self,row):
# return self.ws[METHOD+str(row)].value
return self.get_cell_value(METHOD, row)
# 获取请求路径
def req_url(self,row):
# return self.ws[URL+str(row)].value
return self.re_ini.get_host(URL_HOST_CUSTOM) + self.get_cell_value(URL, row)
# 获取传参类型
def req_mime(self,row):
# mine = self.ws[MIME+str(row)].value
mine = self.get_cell_value(MIME, row)
if mine:
return mine.lower()
# 获取用例数据
def case_datas(self,row):
case_value = self.get_cell_value(CASE_DATA, row)
API_value = self.api_value(row)
module_value = self.module_value(row)
if case_value:
try:
return self.case_data[module_value][API_value][case_value]
except:
log.error('请察看是否配置了用例数据!!!')
raise ValueError('请察看是否配置了用例数据!!!')
# 获取期望数据
def expect_datas(self,row):
expect_value = self.get_cell_value(EXPECT_DATA, row)
module_value = self.module_value(row)
API_value = self.api_value(row)
if expect_value:
try:
return self.expect_data[module_value][API_value][expect_value]
except:
log.error('请察看是否配置了期望数据!!!')
raise ValueError('请察看是否配置了期望数据!!!')
# 获取sql语句类型
def sql_type(self,row):
sql_type_data = self.get_cell_value(SQL_TYPE, row)
return sql_type_data
# 获取sql语句
def sql_datas(self,row):
sql_value = self.get_cell_value(SQL_DATA, row)
module_name = self.module_value(row)
API_name = self.api_value(row)
if sql_value:
try:
return self.sql_data[module_name][API_name][sql_value]
except:
log.error('请察看是否配置了sql数据!!!')
raise ValueError('请察看是否配置了sql数据!!!')
# 获取更新key
def update_key(self,row):
return self.get_cell_value(UPDATE_KEY,row)
# 获取实际数据
def get_data(self):
# 存放在一个二维列表中
list_all = []
try:
for row in range(2, self.ws.max_row+1):
# 请求方法
method = self.req_method(row)
# url
url = self.req_url(row)
# 传参类型
mine = self.req_mime(row)
# 用例数据
case_data = self.case_datas(row)
# 期望数据
expect_data = self.expect_datas(row)
# sql类型
sql_type = self.sql_type(row)
# sql语句
sql_data = self.sql_datas(row)
# 更新key
update_key = self.update_key(row)
list_all.append([url, method, mine, case_data, expect_data, sql_type, sql_data, update_key])
return list_all
except:
log.error('请察看excel中是否存在空行,如果存在,请删除空行!!')
raise TypeError('请察看excel中是否存在空行,如果存在,请删除空行!!')
if __name__ == '__main__':
re_ini = Read_ini()
read_excel = Read_excel()
print(read_excel.get_data())
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: read_ini.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:44
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
import os
import configparser
from interfaceAutoTest1.data_config.settings import *
from interfaceAutoTest1.common import log
class Read_ini:
def __init__(self):
self.ini_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data_config')
conf_path = os.path.join(self.ini_path, 'config.ini')
self.conf = configparser.ConfigParser()
self.conf.read(conf_path, encoding='utf-8')
def get_file_data(self, key):
try:
file_data = self.conf.get(FILE, key)
except:
log.error("输入file节点下的key,错误,请求察看配置文件~!!!")
raise KeyError("输入file节点下的key,错误,请求察看配置文件~!!!")
file_path = os.path.join(self.ini_path, file_data)
if os.path.isfile(file_path):
return file_path
else:
log.error("获取file节点下,文件的路径错误,请察看配置文件是否配置正确~!!!")
raise FileExistsError("获取file节点下,文件的路径错误,请察看配置文件是否配置正确~!!!")
def get_host(self, key):
try:
return self.conf.get(URL_HOST, key)
except:
log.error("输入host节点下的key,错误,请求察看配置文件~!!!")
raise KeyError("输入host节点下的key,错误,请求察看配置文件~!!!")
def get_table(self, key):
try:
return self.conf.get(TABLE, key)
except:
log.error("输入table节点下的key,错误,请求察看配置文件~!!!")
raise KeyError("输入table节点下的key,错误,请求察看配置文件~!!!")
def get_sql(self, key):
try:
return self.conf.get(CONN_SQL, key)
except:
log.error("输入sql节点下的key,错误,请求察看配置文件~!!!")
raise KeyError("输入sql节点下的key,错误,请求察看配置文件~!!!")
if __name__ == '__main__':
re_ini = Read_ini()
print("*"*67)
print(re_ini.get_file_data('sql'))
print(re_ini.get_host('url'))
print(re_ini.get_table('table_name'))
print(re_ini.get_sql('host'))
print("*"*67)
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: login.py
# FileName: read_json.py
# Author: xxxxxxx
# Datetime: 2023/11/4 9:44
# Description:
# 命名规范:文件名全小写+下划线,类名大驼峰,方法和变量小写+下划线连接,
# 常量大写,变量和常量用名词,方法用动词
# ---------------------------------------------------------------------------
import json
import os
from interfaceAutoTest1.common import log
def Read_json(filepath):
if os.path.isfile(filepath) and filepath.endswith('.json'):
try:
with open(filepath, mode='r', encoding='utf-8') as fp:
return json.loads(fp.read())
except:
log.error('打开json文件获取json文件的内容序列化为python对象失败,请察看json文件是否有错误!!!')
raise FileExistsError('打开json文件获取json文件的内容序列化为python对象失败,请察看json文件是否有错误!!!')
else:
log.error("json文件的路径不合法")
raise FileNotFoundError("json文件的路径不合法")
if __name__ == '__main__':
path = 'E:/train_test/7python/笔记/interfaceAutoTest1/data_config/case_data.json'
result = Read_json(path)
print(path)
print(result['认证接口'])
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"password": "MTIzNDU2","username": "admin"},
"LoginErrorUsernameLong":{"password": "MTIzNDU2","username": "adminadminadminadminadminadmin"},
"LoginErrorUsernameShort":{"password": "MTIzNDU2","username": "a"},
"LoginErrorUsernameNone":{"password": "MTIzNDU2","username": ""},
"LoginErrorUsernameSpecial":{"password": "MTIzNDU2","username": "@#!@#!@"},
"LoginErrorPwdLong":{"password": "MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2MTIzNDU2","username": "admin"},
"LoginErrorPwdShort":{"password": "m","username": "admin"},
"LoginErrorPwdNone":{"password": "","username": "admin"},
"LoginErrorPwdSpecial":{"password": "@#!@#!@","username": "admin"},
"LoginErrorPwdError":{"password": "MTIzNDU222","username": "admin"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {
"code": "dem_test57_abc",
"description": "测试维度57",
"isDefault": 0,
"name": "测试57期的维度"
}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"code": "dem_test57_abc"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"ids": "不知道"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"code": "test_org_57",
"demId": "不知道",
"exceedLimitNum": 0,
"grade": "",
"limitNum": 0,
"name": "测试组织",
"nowNum": 0,
"orderNo": 0,
"parentId": "0"
}
},
"添加组织参数": {
"AddOrgParamsSuccess": {"query": {"orgCode": "test_org_57"}, "body": [{"alias":"sz","value":9000}]}
},
"删除组织": {
"DelOrgSuccess": "test_org_57"
}
}
}
[file]
;case为用例数据文件
case=case_data.json
;expect为期望数据文件
expect=expect_data.json
;excel为用例管理文件
excel=APIAutoTest.xlsx
;sql语句的json文件
sql=sql_data.json
[url]
;host为被测系统的域名
url=http://120.46.172.186:8080
[table]
;table_name为excel的工作表名称
table_name=BPM
[sql]
;链接数据库的配置
host=120.46.172.186
port=3306
user=root
pwd=root@2023
database=eipsaas
\ No newline at end of file
{
"认证接口":{
"登录系统":{
"LoginSuccess": {"username": "超级管理员","account": "admin", "loginStatus": true},
"LoginErrorUsernameLong":{"state": false, "message":"账号或密码错误"},
"LoginErrorUsernameShort":{"state": false, "message":"账号或密码错误"},
"LoginErrorUsernameNone":{"state": false, "message":"账号或密码错误"},
"LoginErrorUsernameSpecial":{"state": false, "message":"账号或密码错误"},
"LoginErrorPwdLong":{"state": false, "message":"账号或密码错误"},
"LoginErrorPwdShort":{"state": false, "message":"账号或密码错误"},
"LoginErrorPwdNone":{"state": false, "message":"账号或密码错误"},
"LoginErrorPwdSpecial":{"state": false, "message":"账号或密码错误"},
"LoginErrorPwdError":{"state": false, "message":"账号或密码错误"}
},
"刷新token": {
"RefreshSuccess": {"message": "刷新成功"}
}
},
"维度管理": {
"添加维度": {
"AddDemSuccess": {"state": true, "message": "添加维度成功!"}
},
"根据维度编码获取维度信息": {
"GetDemMessageSuccess": {"demCode": "dem_test57_abc", "name": "测试57期的维度"}
},
"根据维度编码删除维度": {
"DeleteDemSuccess": {"state": true, "message": "删除维度成功!"}
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {"state": true, "message": "添加组织成功!"}
},
"添加组织参数": {
"AddOrgParamsSuccess": {"state":true,"message":"保存组织参数成功!"}
},
"删除组织": {
"DelOrgSuccess": {"state":true,"message":"删除组织成功!"}
}
}
}
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test_57
# FileName: settings.py
# Author: xxxxxxx
# Datetime: 2023/11/3 17:03
# Description:
#
# ---------------------------------------------------------------------------
# file节点名称====================
FILE = "file"
# file节点名称=key的名称===================
CASE = "case"
EXPECT = "expect"
EXCEL = "excel"
SQL = "sql"
# table节点名称========================
TABLE = "table"
# table节点名称=key的名称=======================
TABLE_NAME = "table_name"
# url节点名称=================
URL_HOST = "url"
# url节点名称=key的名称================
URL_HOST_CUSTOM = "url"
# sql节点名称==========================
CONN_SQL = "sql"
# sql节点名称=key的名称=========================
HOST = "host"
PORT = "port"
USER = "user"
PWD = "pwd"
DATABASE = "database"
# excel文件中的列号
NUMBER = "A"
MODULE = "B"
API = "C"
TITLE = "D"
LEVEL = "E"
URL = "G"
METHOD = "F"
MIME = "H"
CASE_DATA = "I"
EXPECT_DATA = "J"
SQL_TYPE = "K"
SQL_DATA = "L"
UPDATE_KEY = "M"
{
"维度管理": {
"添加维度": {
"AddDemSuccess": "DELETE FROM uc_demension WHERE `CODE_`=\"dem_test57_abc\";"
},
"根据维度编码删除维度": {
"DeleteDemSuccess": "SELECT ID_ from uc_demension WHERE `CODE_`=\"dem_test57_abc\";"
}
},
"组织管理": {
"添加组织": {
"AddOrgSuccess": {
"select": "SELECT ID_ from uc_demension WHERE `CODE_`=\"dem_test57_abc\";",
"delete": "DELETE FROM uc_org WHERE `CODE_`=\"test_org_57\";"
}
}
}
}
\ No newline at end of file
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 12px;
/* do not increase min-width as some may use split screens */
min-width: 800px;
color: #999;
}
h1 {
font-size: 24px;
color: black;
}
h2 {
font-size: 16px;
color: black;
}
p {
color: black;
}
a {
color: #999;
}
table {
border-collapse: collapse;
}
/******************************
* SUMMARY INFORMATION
******************************/
#environment td {
padding: 5px;
border: 1px solid #E6E6E6;
}
#environment tr:nth-child(odd) {
background-color: #f6f6f6;
}
/******************************
* TEST RESULT COLORS
******************************/
span.passed, .passed .col-result {
color: green;
}
span.skipped, span.xfailed, span.rerun, .skipped .col-result, .xfailed .col-result, .rerun .col-result {
color: orange;
}
span.error, span.failed, span.xpassed, .error .col-result, .failed .col-result, .xpassed .col-result {
color: red;
}
/******************************
* RESULTS TABLE
*
* 1. Table Layout
* 2. Extra
* 3. Sorting items
*
******************************/
/*------------------
* 1. Table Layout
*------------------*/
#results-table {
border: 1px solid #e6e6e6;
color: #999;
font-size: 12px;
width: 100%;
}
#results-table th, #results-table td {
padding: 5px;
border: 1px solid #E6E6E6;
text-align: left;
}
#results-table th {
font-weight: bold;
}
/*------------------
* 2. Extra
*------------------*/
.log:only-child {
height: inherit;
}
.log {
background-color: #e6e6e6;
border: 1px solid #e6e6e6;
color: black;
display: block;
font-family: "Courier New", Courier, monospace;
height: 230px;
overflow-y: scroll;
padding: 5px;
white-space: pre-wrap;
}
div.image {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px;
}
div.image img {
width: 320px;
}
div.video {
border: 1px solid #e6e6e6;
float: right;
height: 240px;
margin-left: 5px;
overflow: hidden;
width: 320px;
}
div.video video {
overflow: hidden;
width: 320px;
height: 240px;
}
.collapsed {
display: none;
}
.expander::after {
content: " (show details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
.collapser::after {
content: " (hide details)";
color: #BBB;
font-style: italic;
cursor: pointer;
}
/*------------------
* 3. Sorting items
*------------------*/
.sortable {
cursor: pointer;
}
.sort-icon {
font-size: 0px;
float: left;
margin-right: 5px;
margin-top: 5px;
/*triangle*/
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
}
.inactive .sort-icon {
/*finish triangle*/
border-top: 8px solid #E6E6E6;
}
.asc.active .sort-icon {
/*finish triangle*/
border-bottom: 8px solid #999;
}
.desc.active .sort-icon {
/*finish triangle*/
border-top: 8px solid #999;
}
{"uuid": "b8ec3776-b411-424f-a060-6fa1545e8bc6", "befores": [{"name": "mine", "status": "passed", "start": 1699240393814, "stop": 1699240393814}], "start": 1699240393814, "stop": 1699240393940}
\ No newline at end of file
{"uuid": "6baa32fa-054a-4758-bab8-18e4bc4168c3", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240393651, "stop": 1699240393651}], "start": 1699240393651, "stop": 1699240393801}
\ No newline at end of file
{"uuid": "27094c50-428f-4e54-8a2d-cbf8a5198fce", "befores": [{"name": "case_data", "status": "passed", "start": 1699240393650, "stop": 1699240393650}], "start": 1699240393650, "stop": 1699240393803}
\ No newline at end of file
{"uuid": "6a992b74-0d93-4544-9e81-8aec3bc2fdd4", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240393502, "stop": 1699240393502}], "start": 1699240393502, "stop": 1699240393621}
\ No newline at end of file
{"uuid": "09a37d05-2392-42e8-9009-3baf7d9af5b5", "children": ["019f49fb-9917-4d18-88e6-793e8b89b26e", "d2ea3287-5ab5-4ec6-ade2-b437a298a207", "483d6c9d-d487-4347-86ca-3f909523e61c", "f389337c-3929-4e15-88db-db87bed7ed26", "93577a56-d932-4f0e-9af9-8c3e95a2376a", "3d8900f5-c85a-4a04-b662-649492392cc6", "6899ff54-b111-46e4-be70-677cbdc513f4", "a3d380de-0552-4504-9bca-d429cd751916", "5c69bf8f-8158-48a9-a9a1-f98bfee2cf6a", "c236ef77-6677-4892-803b-90ab945d42f4", "32cc1a1c-b0c7-49e0-940d-f0c14bde80fa", "13e2e7db-e001-44a3-9b63-f7155e034133", "c24b0107-5d8c-40a5-a9d2-60e2985cadba", "e918b2ea-1b49-4be2-a63d-32239d4e6437", "fd94191b-973f-401f-a8cf-18bd99b049a4", "ccd16a7e-932d-479d-97eb-b504e884ef7f", "c92a81a0-2ddf-4149-8285-7b47b35a6522"], "befores": [{"name": "_session_faker", "status": "passed", "start": 1699240391763, "stop": 1699240392113}], "start": 1699240391763, "stop": 1699240394808}
\ No newline at end of file
{"uuid": "90cb8a50-cc9a-4525-a6ed-3154a30dbd38", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240393947, "stop": 1699240393947}], "start": 1699240393946, "stop": 1699240394135}
\ No newline at end of file
{"name": "test_bpm[http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams-POST-body|query-case_data14-expect_data14-None-None-None]", "status": "broken", "statusDetails": {"message": "TypeError: string indices must be integers", "trace": "self = <interfaceAutoTest1.test_run.test_run.TestBpm object at 0x0000016390230B88>\nreq_fix = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, db_fix = <interfaceAutoTest1.common.db.DB object at 0x0000016390310DC8>\nurl = 'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams', method = 'POST', mine = 'body|query'\ncase_data = {'body': [{'alias': 'sz', 'value': 9000}], 'query': {'orgCode': 'test_org_57'}}, expect_data = {'message': '保存组织参数成功!', 'state': True}, sql_type = None, sql_data = None\nupdate_key = None\n\n @pytest.mark.parametrize('url, method, mine, case_data, expect_data, sql_type, sql_data, update_key', Read_excel().get_data())\n def test_bpm(self, req_fix, db_fix, url, method, mine, case_data, expect_data, sql_type, sql_data, update_key):\n if sql_type == 'delete':\n db_fix.delete_sql(sql_data)\n elif sql_type == 'select':\n result = db_fix.select_sql(sql_data)\n case_data[update_key] = result\n \n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象执行删除的sql语句\n db_fix.delete(sql_data.get(\"delete\"))\n # 使用DB类对象执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data.get(\"select\"))\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestsMethod类对象发送请求\n> res = req_fix.request_all(method, url, mine, case_data)\n\ntest_run\\test_run.py:36: \n_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _\n\nself = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, method = 'POST'\nurl = 'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams', types = 'body|query', data = {'body': [{'alias': 'sz', 'value': 9000}], 'query': {'orgCode': 'test_org_57'}}\n\n def request_all(self, method, url, types='json', data=None):\n if types == 'json' or types == 'application/json':\n return self.bpm_session.request(method=method, url=url, json=data)\n elif types == \"x-www-form-urlencoded\" or types == \"application/x-www-form-urlencoded\":\n return self.bpm_session.request(method=method, url=url, data=data)\n \n elif types == \"form-data\" or types == \"multipart/form-data\":\n return self.bpm_session.request(method=method, url=url, files=data)\n \n elif types == \"query\" or types == \"params\" or types == \"param\":\n return self.bpm_session.request(method=method, url=url, params=data)\n \n elif types == \"query|body\" or types == \"body|query\" or types == \"json|query\" or types == \"query|json\":\n> return self.bpm_session.request(method=types, url=types, params=types[\"query\"], json=types[\"body\"])\nE TypeError: string indices must be integers\n\nrequest_method\\request_method.py:42: TypeError"}, "parameters": [{"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/orgParam/saveOrgParams'"}, {"name": "method", "value": "'POST'"}, {"name": "mine", "value": "'body|query'"}, {"name": "case_data", "value": "{'query': {'orgCode': 'test_org_57'}, 'body': [{'alias': 'sz', 'value': 9000}]}"}, {"name": "expect_data", "value": "{'state': True, 'message': '保存组织参数成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1699240394576, "stop": 1699240394577, "uuid": "fd94191b-973f-401f-a8cf-18bd99b049a4", "historyId": "6b0445686d774ec2e84670bdaccde109", "testCaseId": "b806f6a011e36a7767fe837ccf8e2825", "fullName": "test_run.TestBpm#test_bpm", "labels": [{"name": "suite", "value": "test_run"}, {"name": "subSuite", "value": "TestBpm"}, {"name": "host", "value": "LZH"}, {"name": "thread", "value": "15936-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_run"}]}
\ No newline at end of file
{"uuid": "7cd18d5e-d8da-4aac-8c21-5540a0470f83", "befores": [{"name": "mine", "status": "passed", "start": 1699240394480, "stop": 1699240394480}], "start": 1699240394480, "stop": 1699240394565}
\ No newline at end of file
ERROR  艺术:test_run.py:44 断言失败,用例数据为:{'code': 'test_org_57', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'},期望数据为:{'state': True, 'message': '添加组织成功!'},服务器返回的数据为:{"state":false,"message":"添加组织失败,组织编码[test_org_57]已存在!","value":"保存失败"}
\ No newline at end of file
{"uuid": "ddd1f8c6-bbec-476a-9151-dfdd5cc37956", "befores": [{"name": "mine", "status": "passed", "start": 1699240394607, "stop": 1699240394607}], "start": 1699240394607, "stop": 1699240394703}
\ No newline at end of file
ERROR  艺术:request_method.py:44 传入的媒体类型的值错误,请察看excel中是否填入正确
\ No newline at end of file
{"uuid": "d5a800be-9d1c-4ccb-b21d-58e7b1baaaff", "befores": [{"name": "mine", "status": "passed", "start": 1699240393076, "stop": 1699240393076}], "start": 1699240393076, "stop": 1699240393202}
\ No newline at end of file
{"name": "test_bpm[http://120.46.172.186:8080/api/org/v1/org/addOrg-POST-application/json-case_data13-expect_data13-Select|delete-sql_data13-demId]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <interfaceAutoTest1.test_run.test_run.TestBpm object at 0x0000016390230EC8>\nreq_fix = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, db_fix = <interfaceAutoTest1.common.db.DB object at 0x0000016390310DC8>\nurl = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mine = 'application/json'\ncase_data = {'code': 'test_org_57', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功!', 'state': True}, sql_type = 'Select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_org_57\";', 'select': 'SELECT ID_ from uc_demension WHERE `CODE_`=\"dem_test57_abc\";'}, update_key = 'demId'\n\n @pytest.mark.parametrize('url, method, mine, case_data, expect_data, sql_type, sql_data, update_key', Read_excel().get_data())\n def test_bpm(self, req_fix, db_fix, url, method, mine, case_data, expect_data, sql_type, sql_data, update_key):\n if sql_type == 'delete':\n db_fix.delete_sql(sql_data)\n elif sql_type == 'select':\n result = db_fix.select_sql(sql_data)\n case_data[update_key] = result\n \n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象执行删除的sql语句\n db_fix.delete(sql_data.get(\"delete\"))\n # 使用DB类对象执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data.get(\"select\"))\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestsMethod类对象发送请求\n res = req_fix.request_all(method, url, mine, case_data)\n \n \n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert True == False\nE + where False = <built-in method get of dict object at 0x00000163903D2408>('state')\nE + where <built-in method get of dict object at 0x00000163903D2408> = {'message': '添加组织失败,组织编码[test_org_57]已存在!', 'state': False, 'value': '保存失败'}.get\nE + where {'message': '添加组织失败,组织编码[test_org_57]已存在!', 'state': False, 'value': '保存失败'} = <bound method Response.json of <Response [200]>>()\nE + where <bound method Response.json of <Response [200]>> = <Response [200]>.json\n\ntest_run\\test_run.py:42: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <interfaceAutoTest1.test_run.test_run.TestBpm object at 0x0000016390230EC8>\nreq_fix = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, db_fix = <interfaceAutoTest1.common.db.DB object at 0x0000016390310DC8>\nurl = 'http://120.46.172.186:8080/api/org/v1/org/addOrg', method = 'POST', mine = 'application/json'\ncase_data = {'code': 'test_org_57', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', ...}, expect_data = {'message': '添加组织成功!', 'state': True}, sql_type = 'Select|delete'\nsql_data = {'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_org_57\";', 'select': 'SELECT ID_ from uc_demension WHERE `CODE_`=\"dem_test57_abc\";'}, update_key = 'demId'\n\n @pytest.mark.parametrize('url, method, mine, case_data, expect_data, sql_type, sql_data, update_key', Read_excel().get_data())\n def test_bpm(self, req_fix, db_fix, url, method, mine, case_data, expect_data, sql_type, sql_data, update_key):\n if sql_type == 'delete':\n db_fix.delete_sql(sql_data)\n elif sql_type == 'select':\n result = db_fix.select_sql(sql_data)\n case_data[update_key] = result\n \n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象执行删除的sql语句\n db_fix.delete(sql_data.get(\"delete\"))\n # 使用DB类对象执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data.get(\"select\"))\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestsMethod类对象发送请求\n res = req_fix.request_all(method, url, mine, case_data)\n \n \n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except:\n log.error(\"断言失败\"+\",用例数据为:\"+str(case_data)+\",期望数据为:\"+str(expect_data)+\",服务器返回的数据为:\"+res.text)\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_run\\test_run.py:45: AssertionError"}, "attachments": [{"name": "log", "source": "0a49a046-cdb9-4c0a-8f92-4824c8449bdd-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/addOrg'"}, {"name": "method", "value": "'POST'"}, {"name": "mine", "value": "'application/json'"}, {"name": "case_data", "value": "{'code': 'test_org_57', 'demId': '不知道', 'exceedLimitNum': 0, 'grade': '', 'limitNum': 0, 'name': '测试组织', 'nowNum': 0, 'orderNo': 0, 'parentId': '0'}"}, {"name": "expect_data", "value": "{'state': True, 'message': '添加组织成功!'}"}, {"name": "sql_type", "value": "'Select|delete'"}, {"name": "sql_data", "value": "{'select': 'SELECT ID_ from uc_demension WHERE `CODE_`=\"dem_test57_abc\";', 'delete': 'DELETE FROM uc_org WHERE `CODE_`=\"test_org_57\";'}"}, {"name": "update_key", "value": "'demId'"}], "start": 1699240394483, "stop": 1699240394541, "uuid": "e918b2ea-1b49-4be2-a63d-32239d4e6437", "historyId": "f8567b5f15355050e558a5d3bedea6da", "testCaseId": "b806f6a011e36a7767fe837ccf8e2825", "fullName": "test_run.TestBpm#test_bpm", "labels": [{"name": "suite", "value": "test_run"}, {"name": "subSuite", "value": "TestBpm"}, {"name": "host", "value": "LZH"}, {"name": "thread", "value": "15936-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_run"}]}
\ No newline at end of file
{"uuid": "bee8d76c-beff-4789-a072-16b69144e72b", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240392782, "stop": 1699240392782}], "start": 1699240392782, "stop": 1699240392902}
\ No newline at end of file
{"name": "test_bpm[http://120.46.172.186:8080/api/org/v1/org/deleteOrg-POST-x-www-form-urlencoded-test_org_57-expect_data15-None-None-None]", "status": "failed", "statusDetails": {"message": "AssertionError: 断言失败", "trace": "self = <interfaceAutoTest1.test_run.test_run.TestBpm object at 0x0000016390230808>\nreq_fix = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, db_fix = <interfaceAutoTest1.common.db.DB object at 0x0000016390310DC8>\nurl = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'POST', mine = 'x-www-form-urlencoded', case_data = 'test_org_57'\nexpect_data = {'message': '删除组织成功!', 'state': True}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize('url, method, mine, case_data, expect_data, sql_type, sql_data, update_key', Read_excel().get_data())\n def test_bpm(self, req_fix, db_fix, url, method, mine, case_data, expect_data, sql_type, sql_data, update_key):\n if sql_type == 'delete':\n db_fix.delete_sql(sql_data)\n elif sql_type == 'select':\n result = db_fix.select_sql(sql_data)\n case_data[update_key] = result\n \n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象执行删除的sql语句\n db_fix.delete(sql_data.get(\"delete\"))\n # 使用DB类对象执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data.get(\"select\"))\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestsMethod类对象发送请求\n res = req_fix.request_all(method, url, mine, case_data)\n \n \n # 断言\n try:\n for key in expect_data:\n> assert expect_data[key] == res.json().get(key)\nE AssertionError: assert '删除组织成功!' == '部分删除成功,其中编码为...rg_57】的组织不存在;'\nE - 部分删除成功,其中编码为【test_org_57】的组织不存在;\nE + 删除组织成功!\n\ntest_run\\test_run.py:42: AssertionError\n\nDuring handling of the above exception, another exception occurred:\n\nself = <interfaceAutoTest1.test_run.test_run.TestBpm object at 0x0000016390230808>\nreq_fix = <interfaceAutoTest1.request_method.request_method.RequestStep object at 0x00000163902A7D48>, db_fix = <interfaceAutoTest1.common.db.DB object at 0x0000016390310DC8>\nurl = 'http://120.46.172.186:8080/api/org/v1/org/deleteOrg', method = 'POST', mine = 'x-www-form-urlencoded', case_data = 'test_org_57'\nexpect_data = {'message': '删除组织成功!', 'state': True}, sql_type = None, sql_data = None, update_key = None\n\n @pytest.mark.parametrize('url, method, mine, case_data, expect_data, sql_type, sql_data, update_key', Read_excel().get_data())\n def test_bpm(self, req_fix, db_fix, url, method, mine, case_data, expect_data, sql_type, sql_data, update_key):\n if sql_type == 'delete':\n db_fix.delete_sql(sql_data)\n elif sql_type == 'select':\n result = db_fix.select_sql(sql_data)\n case_data[update_key] = result\n \n elif sql_type == \"select|delete\" or sql_type == \"delete|select\":\n # 使用DB类对象执行删除的sql语句\n db_fix.delete(sql_data.get(\"delete\"))\n # 使用DB类对象执行查询的sql语句,并接收查询的结果\n select_result = db_fix.select(sql_data.get(\"select\"))\n # 将查询结果更新到用例数据中\n case_data[update_key] = select_result\n \n # 使用RequestsMethod类对象发送请求\n res = req_fix.request_all(method, url, mine, case_data)\n \n \n # 断言\n try:\n for key in expect_data:\n assert expect_data[key] == res.json().get(key)\n except:\n log.error(\"断言失败\"+\",用例数据为:\"+str(case_data)+\",期望数据为:\"+str(expect_data)+\",服务器返回的数据为:\"+res.text)\n> raise AssertionError(\"断言失败\")\nE AssertionError: 断言失败\n\ntest_run\\test_run.py:45: AssertionError"}, "attachments": [{"name": "log", "source": "16e45dd2-dcbe-4197-84b8-167d645f19a1-attachment.txt", "type": "text/plain"}], "parameters": [{"name": "url", "value": "'http://120.46.172.186:8080/api/org/v1/org/deleteOrg'"}, {"name": "method", "value": "'POST'"}, {"name": "mine", "value": "'x-www-form-urlencoded'"}, {"name": "case_data", "value": "'test_org_57'"}, {"name": "expect_data", "value": "{'state': True, 'message': '删除组织成功!'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1699240394610, "stop": 1699240394672, "uuid": "ccd16a7e-932d-479d-97eb-b504e884ef7f", "historyId": "18cb0a9ec05bf88f938b5d4cd3f3573b", "testCaseId": "b806f6a011e36a7767fe837ccf8e2825", "fullName": "test_run.TestBpm#test_bpm", "labels": [{"name": "suite", "value": "test_run"}, {"name": "subSuite", "value": "TestBpm"}, {"name": "host", "value": "LZH"}, {"name": "thread", "value": "15936-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_run"}]}
\ No newline at end of file
{"uuid": "53b68a1f-feb9-46d4-baea-0be6c67affe0", "befores": [{"name": "url", "status": "passed", "start": 1699240392780, "stop": 1699240392780}], "start": 1699240392780, "stop": 1699240392930}
\ No newline at end of file
{"uuid": "abdfc616-602b-48ee-8418-612fc0f5e94a", "befores": [{"name": "update_key", "status": "passed", "start": 1699240392936, "stop": 1699240392936}], "start": 1699240392936, "stop": 1699240393058}
\ No newline at end of file
{"uuid": "582c1aa4-1671-497c-8d51-39b337af02dc", "befores": [{"name": "method", "status": "passed", "start": 1699240392609, "stop": 1699240392609}], "start": 1699240392609, "stop": 1699240392707}
\ No newline at end of file
{"uuid": "b0f8e0f1-f927-438f-9cd0-45d3e1dc2d80", "befores": [{"name": "url", "status": "passed", "start": 1699240393212, "stop": 1699240393212}], "start": 1699240393212, "stop": 1699240393333}
\ No newline at end of file
{"uuid": "a8f6cd0a-c050-42e8-9bf7-15d8aa42aa78", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240394714, "stop": 1699240394715}], "start": 1699240394714, "stop": 1699240394801}
\ No newline at end of file
{"uuid": "eb3d233c-7040-43d3-aac8-e23d0dd0d8f6", "befores": [{"name": "method", "status": "passed", "start": 1699240393814, "stop": 1699240393814}], "start": 1699240393814, "stop": 1699240393940}
\ No newline at end of file
{"uuid": "ca4c7749-547c-4c85-989e-758467dc6cc4", "befores": [{"name": "mine", "status": "passed", "start": 1699240393946, "stop": 1699240393946}], "start": 1699240393946, "stop": 1699240394138}
\ No newline at end of file
ERROR  艺术:test_run.py:44 断言失败,用例数据为:test_org_57,期望数据为:{'state': True, 'message': '删除组织成功!'},服务器返回的数据为:{"state":true,"message":"部分删除成功,其中编码为【test_org_57】的组织不存在;","value":""}
\ No newline at end of file
{"uuid": "e34880c7-2ab5-4dc6-901e-41b1d6533a58", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240394149, "stop": 1699240394149}], "start": 1699240394149, "stop": 1699240394392}
\ No newline at end of file
{"uuid": "b2053a3f-ea36-4003-b04e-5a22fab967c3", "befores": [{"name": "url", "status": "passed", "start": 1699240393340, "stop": 1699240393340}], "start": 1699240393339, "stop": 1699240393495}
\ No newline at end of file
{"uuid": "68d0f3db-aa09-4e84-953e-fc5ea19d53d5", "befores": [{"name": "update_key", "status": "passed", "start": 1699240392714, "stop": 1699240392714}], "start": 1699240392714, "stop": 1699240392771}
\ No newline at end of file
{"uuid": "c0a0ede5-a136-4e22-a613-537d75f39f13", "befores": [{"name": "mine", "status": "passed", "start": 1699240392610, "stop": 1699240392610}], "start": 1699240392610, "stop": 1699240392706}
\ No newline at end of file
{"uuid": "36ccf686-294e-4483-8c02-dcc3c738d74f", "befores": [{"name": "case_data", "status": "passed", "start": 1699240393501, "stop": 1699240393501}], "start": 1699240393501, "stop": 1699240393625}
\ No newline at end of file
{"uuid": "71718033-d7d5-40fe-bc33-24b9d290a8c9", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240392714, "stop": 1699240392714}], "start": 1699240392714, "stop": 1699240392773}
\ No newline at end of file
{"uuid": "31088acc-1499-4d1c-a1f2-49da804b123c", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240392610, "stop": 1699240392610}], "start": 1699240392610, "stop": 1699240392702}
\ No newline at end of file
{"uuid": "38a78eb6-f407-450c-a8de-7af099b324b7", "befores": [{"name": "mine", "status": "passed", "start": 1699240394574, "stop": 1699240394574}], "start": 1699240394574, "stop": 1699240394601}
\ No newline at end of file
{"uuid": "3c88352c-8e7a-4c3c-ae71-2f307047629e", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240393947, "stop": 1699240393947}], "start": 1699240393947, "stop": 1699240394134}
\ No newline at end of file
{"uuid": "be458ee1-fb98-426a-8230-65a7aa7888fd", "befores": [{"name": "update_key", "status": "passed", "start": 1699240394482, "stop": 1699240394482}], "start": 1699240394482, "stop": 1699240394557}
\ No newline at end of file
{"uuid": "5557d9a1-8150-452b-8505-dc87d5824949", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240392781, "stop": 1699240392781}], "start": 1699240392781, "stop": 1699240392903}
\ No newline at end of file
{"uuid": "d5afe095-20b2-48e5-b09f-0df4bbc686b0", "befores": [{"name": "url", "status": "passed", "start": 1699240394573, "stop": 1699240394574}], "start": 1699240394573, "stop": 1699240394603}
\ No newline at end of file
{"uuid": "5f3d3e0a-3103-43a6-b603-cf998b73a44a", "befores": [{"name": "case_data", "status": "passed", "start": 1699240393946, "stop": 1699240393946}], "start": 1699240393946, "stop": 1699240394137}
\ No newline at end of file
{"uuid": "d3b29868-e5c2-4697-85f6-3f5027992739", "befores": [{"name": "method", "status": "passed", "start": 1699240393946, "stop": 1699240393946}], "start": 1699240393945, "stop": 1699240394139}
\ No newline at end of file
{"uuid": "d4de761f-1617-4e4a-89f8-a0291bdea3e2", "befores": [{"name": "mine", "status": "passed", "start": 1699240393340, "stop": 1699240393340}], "start": 1699240393340, "stop": 1699240393493}
\ No newline at end of file
{"uuid": "40e93da4-6f8a-4c56-a1ac-1b37003c8619", "befores": [{"name": "method", "status": "passed", "start": 1699240394574, "stop": 1699240394574}], "start": 1699240394574, "stop": 1699240394602}
\ No newline at end of file
{"uuid": "68c7f6d8-80f5-4578-876f-f340b88eff69", "befores": [{"name": "method", "status": "passed", "start": 1699240393076, "stop": 1699240393076}], "start": 1699240393076, "stop": 1699240393203}
\ No newline at end of file
{"uuid": "df365cb6-b956-4a85-be3c-99e9edc05972", "befores": [{"name": "update_key", "status": "passed", "start": 1699240394608, "stop": 1699240394608}], "start": 1699240394608, "stop": 1699240394694}
\ No newline at end of file
{"uuid": "f43fd706-00e3-424a-b31c-268b457f64d6", "befores": [{"name": "url", "status": "passed", "start": 1699240394713, "stop": 1699240394714}], "start": 1699240394713, "stop": 1699240394804}
\ No newline at end of file
{"uuid": "f7ba29b5-0d05-47ee-bdf4-af759d33280c", "befores": [{"name": "method", "status": "passed", "start": 1699240392935, "stop": 1699240392935}], "start": 1699240392935, "stop": 1699240393069}
\ No newline at end of file
{"uuid": "ba41c925-76b7-4027-9f01-91301d8ca9d3", "befores": [{"name": "url", "status": "passed", "start": 1699240393945, "stop": 1699240393945}], "start": 1699240393945, "stop": 1699240394140}
\ No newline at end of file
{"uuid": "0f6b828e-c299-48e1-9b28-9533039faf59", "befores": [{"name": "update_key", "status": "passed", "start": 1699240394150, "stop": 1699240394150}], "start": 1699240394150, "stop": 1699240394388}
\ No newline at end of file
{"uuid": "c0b7cd69-f28f-4c16-ae27-bb40bff4edc2", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240393815, "stop": 1699240393815}], "start": 1699240393815, "stop": 1699240393938}
\ No newline at end of file
{"uuid": "d4f7bcce-5ea3-45ff-b9b9-5ff511730c91", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240393077, "stop": 1699240393077}], "start": 1699240393077, "stop": 1699240393198}
\ No newline at end of file
{"uuid": "446c7497-5778-4ad4-8ddf-afeedab35cbb", "befores": [{"name": "update_key", "status": "passed", "start": 1699240394575, "stop": 1699240394575}], "start": 1699240394575, "stop": 1699240394591}
\ No newline at end of file
{"uuid": "e40bd1a7-a1c8-4aab-a69b-de9c0f8811e0", "befores": [{"name": "url", "status": "passed", "start": 1699240394402, "stop": 1699240394402}], "start": 1699240394402, "stop": 1699240394472}
\ No newline at end of file
{"uuid": "32f6ad3a-2eee-4a5a-9b1b-bf7b27b1e9f6", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240392936, "stop": 1699240392936}], "start": 1699240392936, "stop": 1699240393062}
\ No newline at end of file
{"name": "test_bpm[http://120.46.172.186:8080/api/demension/v1/dem/getDem-GET-query-case_data12-expect_data12-None-None-None]", "status": "passed", "parameters": [{"name": "url", "value": "'http://120.46.172.186:8080/api/demension/v1/dem/getDem'"}, {"name": "method", "value": "'GET'"}, {"name": "mine", "value": "'query'"}, {"name": "case_data", "value": "{'code': 'dem_test57_abc'}"}, {"name": "expect_data", "value": "{'demCode': 'dem_test57_abc', 'name': '测试57期的维度'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1699240394405, "stop": 1699240394462, "uuid": "c24b0107-5d8c-40a5-a9d2-60e2985cadba", "historyId": "873f1721f866aae473920aad1c146bd0", "testCaseId": "b806f6a011e36a7767fe837ccf8e2825", "fullName": "test_run.TestBpm#test_bpm", "labels": [{"name": "suite", "value": "test_run"}, {"name": "subSuite", "value": "TestBpm"}, {"name": "host", "value": "LZH"}, {"name": "thread", "value": "15936-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_run"}]}
\ No newline at end of file
{"uuid": "de557594-9df5-433a-9f23-9b72cb00aaf7", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240392935, "stop": 1699240392936}], "start": 1699240392935, "stop": 1699240393064}
\ No newline at end of file
{"uuid": "f3c78e9e-6325-4494-a7c1-e191c0c5478a", "befores": [{"name": "method", "status": "passed", "start": 1699240393212, "stop": 1699240393212}], "start": 1699240393212, "stop": 1699240393331}
\ No newline at end of file
{"uuid": "8a73910a-e521-4472-b5bf-7be12ae7fe4c", "befores": [{"name": "case_data", "status": "passed", "start": 1699240392610, "stop": 1699240392610}], "start": 1699240392610, "stop": 1699240392705}
\ No newline at end of file
{"uuid": "81a87f42-e295-4ee2-8b01-bbcedd0aaef9", "befores": [{"name": "url", "status": "passed", "start": 1699240394147, "stop": 1699240394147}], "start": 1699240394147, "stop": 1699240394398}
\ No newline at end of file
{"uuid": "b14fd709-6b4e-41b3-9216-801991b72658", "befores": [{"name": "url", "status": "passed", "start": 1699240393075, "stop": 1699240393075}], "start": 1699240393075, "stop": 1699240393205}
\ No newline at end of file
{"uuid": "eefe646c-ac1c-49af-9e17-222af3d9539e", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240393213, "stop": 1699240393213}], "start": 1699240393213, "stop": 1699240393324}
\ No newline at end of file
{"uuid": "26468c0b-fcad-4cc9-bc68-26a26400aded", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240392610, "stop": 1699240392611}], "start": 1699240392610, "stop": 1699240392701}
\ No newline at end of file
{"uuid": "c60e6cce-be68-47e5-87c3-c7c08e45984a", "befores": [{"name": "method", "status": "passed", "start": 1699240394714, "stop": 1699240394714}], "start": 1699240394714, "stop": 1699240394803}
\ No newline at end of file
{"uuid": "48338584-7ee1-48c6-806f-f4e47d34162d", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240393650, "stop": 1699240393651}], "start": 1699240393650, "stop": 1699240393802}
\ No newline at end of file
{"uuid": "33e4d583-179b-4bac-8c6c-8f3325cd1def", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240394575, "stop": 1699240394575}], "start": 1699240394575, "stop": 1699240394597}
\ No newline at end of file
{"uuid": "8cfe589c-de4b-468b-b93c-672384fb3ecb", "befores": [{"name": "mine", "status": "passed", "start": 1699240394403, "stop": 1699240394403}], "start": 1699240394403, "stop": 1699240394469}
\ No newline at end of file
{"uuid": "8cf706b8-cbb6-4298-a3a2-10bfe2cba8ff", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240393815, "stop": 1699240393815}], "start": 1699240393815, "stop": 1699240393937}
\ No newline at end of file
{"uuid": "84fe6cf4-4a5d-4d20-be74-104f3d9f03a5", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240392610, "stop": 1699240392610}], "start": 1699240392610, "stop": 1699240392703}
\ No newline at end of file
{"uuid": "cc3c4bd4-7aa5-402f-b610-8932e247c3d0", "befores": [{"name": "mine", "status": "passed", "start": 1699240394714, "stop": 1699240394714}], "start": 1699240394714, "stop": 1699240394803}
\ No newline at end of file
{"uuid": "8421be5a-7d63-45dc-b188-bb550bd40df8", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240392714, "stop": 1699240392714}], "start": 1699240392714, "stop": 1699240392772}
\ No newline at end of file
{"uuid": "d7b790f8-cd38-4c06-88b7-a2b7fb95cb98", "befores": [{"name": "mine", "status": "passed", "start": 1699240392780, "stop": 1699240392781}], "start": 1699240392780, "stop": 1699240392929}
\ No newline at end of file
{"uuid": "d64bed47-05ef-4853-83c7-9096374cba18", "befores": [{"name": "mine", "status": "passed", "start": 1699240392713, "stop": 1699240392713}], "start": 1699240392713, "stop": 1699240392775}
\ No newline at end of file
{"uuid": "dbdf61df-551a-4438-8fb0-029d151cb12a", "befores": [{"name": "case_data", "status": "passed", "start": 1699240392713, "stop": 1699240392713}], "start": 1699240392713, "stop": 1699240392774}
\ No newline at end of file
ERROR  艺术:test_run.py:44 断言失败,用例数据为:{'ids': '不知道'},期望数据为:{'state': True, 'message': '删除维度成功!'},服务器返回的数据为:{"state":false,"message":"","logId":"1721365095323287552"}
\ No newline at end of file
{"uuid": "4e4cfb36-8299-4631-b723-42ea06ed4e52", "befores": [{"name": "mine", "status": "passed", "start": 1699240393212, "stop": 1699240393212}], "start": 1699240393212, "stop": 1699240393330}
\ No newline at end of file
{"name": "test_bpm[http://120.46.172.186:8080/auth-POST-application/json-case_data8-expect_data8-None-None-None]", "status": "passed", "parameters": [{"name": "url", "value": "'http://120.46.172.186:8080/auth'"}, {"name": "method", "value": "'POST'"}, {"name": "mine", "value": "'application/json'"}, {"name": "case_data", "value": "{'password': '@#!@#!@', 'username': 'admin'}"}, {"name": "expect_data", "value": "{'state': False, 'message': '账号或密码错误'}"}, {"name": "sql_type", "value": "None"}, {"name": "sql_data", "value": "None"}, {"name": "update_key", "value": "None"}], "start": 1699240393652, "stop": 1699240393799, "uuid": "5c69bf8f-8158-48a9-a9a1-f98bfee2cf6a", "historyId": "417a58ab96aa03972062a416b54739ae", "testCaseId": "b806f6a011e36a7767fe837ccf8e2825", "fullName": "test_run.TestBpm#test_bpm", "labels": [{"name": "suite", "value": "test_run"}, {"name": "subSuite", "value": "TestBpm"}, {"name": "host", "value": "LZH"}, {"name": "thread", "value": "15936-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "test_run"}]}
\ No newline at end of file
{"uuid": "90448786-7d67-457c-8af1-477f52f9f8f1", "befores": [{"name": "expect_data", "status": "passed", "start": 1699240394608, "stop": 1699240394608}], "start": 1699240394608, "stop": 1699240394701}
\ No newline at end of file
{"uuid": "227312c1-5781-406f-9a19-9dd7d92b226d", "befores": [{"name": "url", "status": "passed", "start": 1699240392934, "stop": 1699240392934}], "start": 1699240392934, "stop": 1699240393070}
\ No newline at end of file
{"uuid": "f63fa8a1-7857-41ee-805f-dd18fa122290", "befores": [{"name": "case_data", "status": "passed", "start": 1699240394403, "stop": 1699240394403}], "start": 1699240394403, "stop": 1699240394468}
\ No newline at end of file
{"uuid": "5b39446a-a6e6-49a4-b25f-79a7289df6d3", "befores": [{"name": "mine", "status": "passed", "start": 1699240394147, "stop": 1699240394148}], "start": 1699240394147, "stop": 1699240394396}
\ No newline at end of file
{"uuid": "bbc60a56-f195-4e0c-8ba3-d6cdb8972783", "befores": [{"name": "sql_data", "status": "passed", "start": 1699240394149, "stop": 1699240394149}], "start": 1699240394149, "stop": 1699240394390}
\ No newline at end of file
{"uuid": "3687967d-9d57-4748-82ff-a201bb9b08af", "befores": [{"name": "case_data", "status": "passed", "start": 1699240394148, "stop": 1699240394148}], "start": 1699240394148, "stop": 1699240394395}
\ No newline at end of file
{"uuid": "da8cf55e-3ccb-48a9-a18b-7172159d762e", "befores": [{"name": "sql_type", "status": "passed", "start": 1699240392714, "stop": 1699240392714}], "start": 1699240392714, "stop": 1699240392772}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment