Files

100 lines
6.1 KiB
Python
Raw Permalink Normal View History

2025-04-29 18:09:00 +08:00
from apps.project.models import Project
from utils.chapter_tools.csx_chapter import create_csx_chapter_dict
from utils.util import get_testType, get_case_ident
# 传入项目对象、dut的类型例如'XQ'、round_str字符串表示例如第一轮为'XQ',测试项其实章节前缀例如
def create_bg_round1_zhui(project_obj: Project, dut_str='XQ', round_str='0'):
"""传入项目对象,返回{仅第一轮}的design_list渲染到模版的列表"""
# 首先定义后面用问题单前缀
problem_prefix = "".join(['PT_', project_obj.ident, '_'])
# 如果是第一轮测试项章节号前缀则为6.2其他轮次为4.1
demand_prefix = '6.2' if round_str == '0' else "3.1"
design_list = []
round_obj = project_obj.pField.filter(key=round_str).first() # 轮次对象
case_index = 1
if round_obj:
testType_list, last_chapter_items = create_csx_chapter_dict(round_obj)
specific_dut = round_obj.rdField.filter(type=dut_str).first() # design的列表
if dut_str == 'XQ':
so_dut = round_obj.rdField.filter(type='SO').first()
if so_dut:
designs = so_dut.rsField.all()
for design in designs:
design_dict = {'name': "/", 'chapter': "/", 'test_demand': []}
# 获取一个design的所以测试项包括关联测试项
test_items = []
test_items.extend(design.dtField.all())
test_items.extend(design.odField.all())
for test_item in test_items:
key_index = int(test_item.key.split("-")[-1]) + 1
test_index = str(key_index).rjust(3, '0')
reveal_ident = "_".join(
["XQ", get_testType(test_item.testType, "testType"),
test_item.ident, test_index])
test_item_last_chapter = last_chapter_items[test_item.testType].index(test_item.key) + 1
test_chapter = ".".join([demand_prefix, str(testType_list.index(test_item.testType) + 1),
str(test_item_last_chapter)])
test_item_dict = {'name': test_item.name, 'chapter': test_chapter, 'ident': reveal_ident,
'case_list': []}
for case in test_item.tcField.all():
# 用例如果关联了问题单,那么直接判断未通过,如果没有关联问题单,则找步骤里面是否有未执行
# 如果未执行,不显示未执行,显示“/”斜杠
is_passed = '通过'
problem_ident_list = []
for problem in case.caseField.all():
problem_ident_list.append("".join([problem_prefix, problem.ident]))
if len(problem_ident_list) > 0:
is_passed = '未通过'
case_dict = {
'index': case_index,
'name': case.name,
'ident': get_case_ident(reveal_ident, case),
'passed': is_passed,
'problem_ident_list': "\a".join(problem_ident_list)
}
test_item_dict['case_list'].append(case_dict)
case_index += 1
design_dict['test_demand'].append(test_item_dict)
design_list.append(design_dict)
if specific_dut:
designs = specific_dut.rsField.all()
for design in designs:
design_dict = {'name': design.name, 'chapter': design.chapter, 'test_demand': []}
# 获取一个design的所以测试项包括关联测试项
test_items = []
test_items.extend(design.dtField.all())
test_items.extend(design.odField.all())
for test_item in test_items:
key_index = int(test_item.key.split("-")[-1]) + 1
test_index = str(key_index).rjust(3, '0')
reveal_ident = "_".join(
["XQ", get_testType(test_item.testType, "testType"),
test_item.ident, test_index])
test_item_last_chapter = last_chapter_items[test_item.testType].index(test_item.key) + 1
test_chapter = ".".join([demand_prefix, str(testType_list.index(test_item.testType) + 1),
str(test_item_last_chapter)])
test_item_dict = {'name': test_item.name, 'chapter': test_chapter, 'ident': reveal_ident,
'case_list': []}
for case in test_item.tcField.all():
# 用例如果关联了问题单,那么直接判断未通过,如果没有关联问题单,则找步骤里面是否有未执行
# 如果未执行,不显示未执行,显示“/”斜杠
is_passed = '通过'
problem_ident_list = []
for problem in case.caseField.all():
problem_ident_list.append("".join([problem_prefix, problem.ident]))
if len(problem_ident_list) > 0:
is_passed = '未通过'
case_dict = {
"index": case_index,
'name': case.name,
'ident': get_case_ident(reveal_ident, case),
'passed': is_passed,
'problem_ident_list': "\a".join(problem_ident_list)
}
test_item_dict['case_list'].append(case_dict)
case_index += 1
design_dict['test_demand'].append(test_item_dict)
design_list.append(design_dict)
return design_list