| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-
- """生成实验室安全智能监测与管控中心大屏测试用例 XLS 文件"""
- import xlwt
- import os
- # ─────────────────────────────────────────────────────────────────────────────
- # 测试用例数据:(模块名, 测试场景, 测试类型, 前置条件, 测试操作, 预期结果, 优先级, 设计方法)
- # 使用单引号,避免内部双引号冲突
- # ─────────────────────────────────────────────────────────────────────────────
- TEST_CASES = [
- # ━━ 一、顶部导航栏 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('顶部导航栏', '实时时钟格式与每秒刷新', '正常场景',
- '系统正常运行,网络连接正常,页面已完整加载',
- '观察顶部导航栏左侧时钟区域',
- '以 HH:MM:SS 格式正确显示(如 17:19:36),每秒刷新一次且无闪烁',
- 'P0', '场景法'),
- ('顶部导航栏', '日期与星期显示正确性', '正常场景',
- '系统正常运行,页面已完整加载',
- '对比左侧日期星期与系统本地时间',
- '日期与星期与系统本地时间完全一致',
- 'P1', '等价类划分'),
- ('顶部导航栏', '中间区域LOGO与标题水平居中对齐', '正常场景',
- '系统正常运行,页面已完整加载',
- '检查中间区域:LOGO图标、单位名称、竖向分隔线、大标题的排列与对齐',
- '四项元素水平居中对齐,无错位、无溢出',
- 'P1', '场景法'),
- ('顶部导航栏', '右侧天气信息三项同行显示', '正常场景',
- '系统正常运行,网络连接正常',
- '观察右侧天气区域显示内容',
- '正常显示城市/天气状况、温度、AQI,三项同行排列',
- 'P1', '等价类划分'),
- ('顶部导航栏', 'border-beam动态流动效果渲染', '正常场景',
- '系统正常运行,页面已完整加载',
- '观察导航栏边框动效',
- '路径沿边框连续流动,效果正常渲染',
- 'P2', '场景法'),
- ('顶部导航栏', '网络断开时天气区域兜底展示', '异常场景',
- '系统正常运行,页面已加载;断开网络连接',
- '断网后观察右侧天气区域',
- '显示 -- 或暂无数据兜底,无空白区域或 JS 报错',
- 'P0', '错误推测法'),
- ('顶部导航栏', '系统时区配置错误时时钟仍读取本地时间', '异常场景',
- '将操作系统时区配置为非本地时区',
- '观察时钟显示值',
- '时钟仍读取本地时间,不出现 UTC 偏移显示',
- 'P1', '错误推测法'),
- ('顶部导航栏', '跨日00:00:00日期星期同步切换', '边界场景',
- '系统持续运行至接近午夜',
- '在 00:00:00 前后观察日期与星期变化',
- '日期与星期同步切换,不出现跨日延迟',
- 'P0', '边界值分析'),
- ('顶部导航栏', '跨年元旦零点年份正确切换', '边界场景',
- '系统运行至 12 月 31 日 23:59:59',
- '观察 00:00:00 时刻年份变化',
- '年份正确切换至新年',
- 'P1', '边界值分析'),
- ('顶部导航栏', '标题字符串极长时中间区域不溢出', '边界场景',
- '系统正常运行,页面已加载',
- '将标题设为超长字符串,观察中间区域布局',
- '中间区域不溢出至左右两侧,布局完整',
- 'P2', '边界值分析'),
- # ━━ 二、实验室基本情况统计 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验室基本情况统计', 'SVG圆弧仪表图形正确渲染圆心数字一致', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察左侧 SVG 仪表图形区域(占 40%)',
- '圆弧仪表图形正确渲染,圆心显示 128 间,与接口数据一致',
- 'P0', '场景法'),
- ('实验室基本情况统计', '分级比例色条顺序与宽度正确', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察仪表图下方分级色条',
- 'I~IV 级依次显示红橙黄蓝四色,色块宽度与各级数量占比一致',
- 'P1', '等价类划分'),
- ('实验室基本情况统计', '环形图各扇区颜色与标注完整性', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察右侧(60%)环形图及外侧引线标注',
- '各扇区颜色与分级色规一致,外侧引线标注级别名称、数量(间)、百分比三项齐全',
- 'P0', '场景法'),
- ('实验室基本情况统计', '环形图圆心总数与仪表图数字保持一致', '正常场景',
- '系统正常运行,数据接口正常返回',
- '对比环形图圆心数字与左侧仪表图数字',
- '两者均显示 128,保持一致',
- 'P0', '等价类划分'),
- ('实验室基本情况统计', '状态徽章三栏数量之和等于实验室总数', '正常场景',
- '系统正常运行,数据接口正常返回',
- '查看下部三栏使用、异常、空闲数量,计算总和',
- '使用数+异常数+空闲数=实验室总数(128),逻辑自洽',
- 'P0', '场景法'),
- ('实验室基本情况统计', '某分级数量为0时扇区不渲染无孤立标签', '异常场景',
- '系统正常运行,某分级数量后台配置为 0',
- '观察环形图对应扇区及引线标注',
- '对应扇区不渲染,不出现 0间/0% 孤立标签',
- 'P1', '错误推测法'),
- ('实验室基本情况统计', '数据接口超时图表降级显示暂无数据', '异常场景',
- '模拟数据接口超时或报错',
- '观察图表区域响应',
- '图表区域显示暂无数据占位块,不触发 JS 异常',
- 'P0', '错误推测法'),
- ('实验室基本情况统计', '所有实验室属同一分级时环形图渲染完整圆形', '边界场景',
- '后台配置所有实验室归属同一分级',
- '观察环形图渲染结果',
- '环形图渲染为完整圆形,无多余间隔',
- 'P1', '边界值分析'),
- ('实验室基本情况统计', '实验室总数为1时图表渲染不塌陷', '边界场景',
- '后台配置实验室总数为 1',
- '观察 SVG 仪表图与环形图渲染',
- '两图均正常渲染,不出现布局塌陷',
- 'P2', '边界值分析'),
- # ━━ 三、实验室安全分级统计 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验室安全分级统计', '堆叠柱状图图例颜色与图形一一对应', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察图例区域',
- '显示 I~IV 级,颜色红橙黄蓝与图形颜色一一对应',
- 'P1', '场景法'),
- ('实验室安全分级统计', '默认一屏显示6个柱子X轴含名称与总数', '正常场景',
- '系统正常运行,X 轴数据>=6 个',
- '观察初始加载时 X 轴柱子数量',
- '一屏展示 6 个柱子,X 轴每柱下方同时显示二级单位名称及实验室总数',
- 'P0', '场景法'),
- ('实验室安全分级统计', '超过6个数据时每5秒自动向左滚动1个单位', '正常场景',
- '系统正常运行,X 轴数据>6 个',
- '等待 5 秒观察图表滚动行为',
- '每隔 5 秒自动向左滚动 1 个 X 轴单位,动画流畅',
- 'P0', '场景法'),
- ('实验室安全分级统计', '滚动到最后数据后自动循环从第一个开始', '正常场景',
- '系统正常运行,X 轴数据>6 个,已滚动至最后一个',
- '等待下次滚动',
- '自动循环从第一个数据重新开始',
- 'P1', '场景法'),
- ('实验室安全分级统计', 'X轴标签过长时自动截断省略号悬停可见完整', '异常场景',
- '后台配置某二级单位名称字符数超长',
- '观察 X 轴标签显示与悬停效果',
- '标签自动截断并显示省略号,悬停可见完整名称,不遮挡相邻柱子',
- 'P1', '错误推测法'),
- ('实验室安全分级统计', '某单位实验室总数为0时柱子高度为0', '异常场景',
- '后台配置某二级单位实验室总数为 0',
- '观察对应柱子渲染及 X 轴总数显示',
- '对应柱子不渲染或高度为 0,X 轴总数显示 0',
- 'P1', '错误推测法'),
- ('实验室安全分级统计', 'X轴数据恰好6个时不触发自动滚动', '边界场景',
- '后台配置 X 轴数据恰好为 6 个',
- '等待超过 5 秒观察是否滚动',
- '不触发自动滚动,图表静态展示',
- 'P1', '边界值分析'),
- ('实验室安全分级统计', 'X轴数据为1个时单柱居中不触发滚动', '边界场景',
- '后台配置 X 轴数据仅 1 个',
- '观察图表展示',
- '单柱居中显示,不触发滚动',
- 'P2', '边界值分析'),
- ('实验室安全分级统计', 'X轴数据为7个时滚动1步即循环', '边界场景',
- '后台配置 X 轴数据为 7 个',
- '等待滚动并观察循环行为',
- '滚动仅 1 步即循环,展示正常',
- 'P2', '边界值分析'),
- # ━━ 四、实验室进入人数统计及走势 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验室进入人数统计及走势', '翻牌器同行显示今日总进入与当前实验人数', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察翻牌器区域布局与数值',
- '今日总进入人数与当前正在实验人数在同一行显示,字号突出',
- 'P0', '场景法'),
- ('实验室进入人数统计及走势', '数据更新时翻牌器触发逐位滚动动效', '正常场景',
- '系统正常运行,等待数据更新',
- '触发数据更新,观察翻牌动效',
- '翻牌器从旧数值逐位滚动至新数值,动画正确触发',
- 'P1', '场景法'),
- ('实验室进入人数统计及走势', '折线图展示0到24点9个时段两条折线颜色区分', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察折线图区域',
- '正确展示 0~24 点 9 个分隔时段的进入人数与当前实验人数两条折线,颜色区分明确,图例正确',
- 'P0', '场景法'),
- ('实验室进入人数统计及走势', '今日进入人数为0时翻牌器显示0不出现NaN', '异常场景',
- '后台配置今日进入人数为 0',
- '观察翻牌器显示',
- '翻牌器显示 0,不出现空白或 NaN',
- 'P0', '错误推测法'),
- ('实验室进入人数统计及走势', '当前实验人数异常超出总进入人数时标红警示', '异常场景',
- '后台配置当前实验人数大于今日总进入人数',
- '观察异常数值旁的警示展示',
- '对应数值旁标红警示,提示数据异常',
- 'P1', '错误推测法'),
- ('实验室进入人数统计及走势', '23:59时折线图最后时段数据无断档', '边界场景',
- '系统运行至 23:59',
- '观察折线图最后时段数据',
- '最后时段数据正确填入,不出现数据断档',
- 'P1', '边界值分析'),
- ('实验室进入人数统计及走势', '人数位数增加时翻牌器自动扩展不截断', '边界场景',
- '后台配置人数从 3 位数跳变为 4 位数',
- '观察翻牌器位数变化',
- '翻牌器自动扩展位数,不出现数字截断',
- 'P1', '边界值分析'),
- # ━━ 五、智能环境感知应用设备统计 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('智能环境感知应用设备统计', '顶部各类设备图标在线离线数量正确标注', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察顶部各类设备图标旁标注数量',
- '每类图标旁分别标注在线数量与离线数量',
- 'P0', '场景法'),
- ('智能环境感知应用设备统计', '速度仪表盘在线率展示与指针位置对应', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察左侧速度仪表盘图表',
- '正确渲染设备在线率百分比(示例 94.5%),指针位置与数值对应',
- 'P0', '场景法'),
- ('智能环境感知应用设备统计', '右侧3加2布局五类设备总数正确显示', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察右侧 3+2 布局区域',
- '上 3 下 2 居中对齐,五类设备总数均正确显示',
- 'P1', '场景法'),
- ('智能环境感知应用设备统计', '设备在线率计算值与展示值一致', '正常场景',
- '系统正常运行,数据接口正常返回',
- '计算在线率=在线数 除以(在线数+离线数),与展示值对比',
- '展示值与计算值完全一致',
- 'P0', '等价类划分'),
- ('智能环境感知应用设备统计', '所有设备均离线时在线率显示0%指针最低', '异常场景',
- '后台配置所有设备均离线',
- '观察在线率显示和仪表盘指针',
- '在线率显示 0%,指针指向最低档位,不出现 NaN 或空白',
- 'P0', '错误推测法'),
- ('智能环境感知应用设备统计', '某类设备数量为0时图标标注显示0布局不塌陷', '异常场景',
- '后台配置某类设备数量为 0',
- '观察对应图标数量标注与布局',
- '标注显示 0,布局不塌陷',
- 'P1', '错误推测法'),
- ('智能环境感知应用设备统计', '在线率恰好50%时仪表盘指针居中', '边界场景',
- '后台配置在线数等于离线数',
- '观察仪表盘指针位置',
- '指针指向表盘正中位置',
- 'P2', '边界值分析'),
- ('智能环境感知应用设备统计', '设备总数为1且在线时在线率显示100%满格', '边界场景',
- '后台配置设备总数为 1 且在线',
- '观察在线率显示和仪表盘',
- '在线率显示 100%,仪表盘满格',
- 'P2', '边界值分析'),
- # ━━ 六、实验室设备分类及使用统计 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验室设备分类及使用统计', '环形图设备分类分布及图例四项完整', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察上部环形图及右侧图例',
- '各分类分布正确,右侧图例含圆形色块、名称、数量(台)、占比四项完整',
- 'P0', '场景法'),
- ('实验室设备分类及使用统计', '三统计卡片数值格式正确使用率含百分号', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察下部上方三网格统计卡片',
- '设备总数、使用总时长、设备使用率数值格式正确(使用率含 % 单位)',
- 'P0', '等价类划分'),
- ('实验室设备分类及使用统计', '设备使用率计算逻辑验证', '正常场景',
- '系统正常运行,数据接口正常返回',
- '计算设备使用率=使用数 除以(使用数+空闲数),与展示值对比',
- '展示值与计算值一致',
- 'P0', '等价类划分'),
- ('实验室设备分类及使用统计', '左侧饼图标题青色发光字体样式视觉紧贴顶部', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察左侧设备状态统计饼图标题样式',
- '标题居中,青色发光字体,字间距 3px,底部有细分隔线,视觉紧贴饼图顶部',
- 'P1', '场景法'),
- ('实验室设备分类及使用统计', '左侧饼图三类扇区外侧引线标注无侧边图例', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察左侧饼图(正常、维修、报废)',
- '扇区外侧引线标注名称+数量+占比,无侧边图例',
- 'P0', '场景法'),
- ('实验室设备分类及使用统计', '右侧饼图使用状态两类引线标注正确', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察右侧使用状态统计饼图(使用、空闲)',
- '扇区外侧引线标注正确,无侧边图例',
- 'P0', '场景法'),
- ('实验室设备分类及使用统计', '设备数量逻辑自洽双等式验证', '正常场景',
- '系统正常运行,数据接口正常返回',
- '验证:正常+维修+报废=设备总数;使用数+空闲数=正常状态数',
- '两个逻辑等式均成立',
- 'P0', '等价类划分'),
- ('实验室设备分类及使用统计', '某分类设备数量为0时图表不出现NaN或标注漂移', '异常场景',
- '后台配置某分类设备数量为 0',
- '观察环形图和饼图对应扇区',
- '对应扇区不渲染,不出现 NaN 或零值引线标注漂移',
- 'P1', '错误推测法'),
- ('实验室设备分类及使用统计', '设备使用率100%时右侧饼图空闲扇区为0不渲染错误', '异常场景',
- '后台配置设备使用率为 100%',
- '观察右侧饼图空闲扇区',
- '空闲扇区为 0,不出现渲染错误',
- 'P1', '错误推测法'),
- ('实验室设备分类及使用统计', '只有1种设备分类时环形图渲染完整圆形', '边界场景',
- '后台配置只有 1 种设备分类',
- '观察环形图渲染',
- '渲染为完整圆形',
- 'P2', '边界值分析'),
- ('实验室设备分类及使用统计', '设备总数为0时统计卡片显示0饼图显示暂无数据', '边界场景',
- '后台配置设备总数为 0',
- '观察三统计卡片和两饼图',
- '三卡片均显示 0,两饼图区域显示暂无数据',
- 'P1', '边界值分析'),
- # ━━ 七、化学品库存动态统计 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('化学品库存动态统计', '饼图两类化学品外侧引线标注三项完整', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察饼图两扇区及外侧引线标注',
- '管控与非管控两类扇区外侧引线标注分类名称+数量(L)+占比,无侧边图例',
- 'P0', '场景法'),
- ('化学品库存动态统计', '右侧统计区四项数据完整且配色正确', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察右侧统计区各项展示',
- '正确展示总量(L)、管控类总量及占比、非管控类总量及占比、总类目数,配色与 SVG 进度环均正确',
- 'P0', '场景法'),
- ('化学品库存动态统计', '管控类红色系配色SVG进度环与占比一致', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察管控类统计区配色和 SVG 进度环',
- '使用红色系配色,SVG 圆弧进度环进度与占比一致',
- 'P1', '场景法'),
- ('化学品库存动态统计', '管控类加非管控类等于存量总量逻辑自洽', '正常场景',
- '系统正常运行,数据接口正常返回',
- '验证:管控类数量+非管控类数量=存量化学品总量',
- '逻辑等式成立',
- 'P0', '等价类划分'),
- ('化学品库存动态统计', '管控类化学品数量为0时饼图不渲染进度环归零', '异常场景',
- '后台配置管控类化学品数量为 0',
- '观察饼图扇区、SVG 进度环及占比',
- '饼图该扇区不渲染,SVG 进度环进度为 0,占比显示 0%',
- 'P0', '错误推测法'),
- ('化学品库存动态统计', '数据接口异常时统计区显示占位SVG进度环归零', '异常场景',
- '模拟数据接口异常',
- '观察右侧各统计项和 SVG 进度环',
- '各统计项显示 -- 占位,SVG 进度环归零',
- 'P0', '错误推测法'),
- ('化学品库存动态统计', '存量总量极大时自动换算不出现溢出截断', '边界场景',
- '后台配置存量总量超过 999999L',
- '观察右侧统计区数值显示',
- '自动换算或保留合理精度,不出现溢出截断',
- 'P1', '边界值分析'),
- ('化学品库存动态统计', '两类各占50%时饼图平分引线不重叠', '边界场景',
- '后台配置两类各占 50%',
- '观察饼图引线排列',
- '饼图平分且两侧引线不重叠',
- 'P2', '边界值分析'),
- # ━━ 八、实时监控 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实时监控', '搜索框输入关键词树状图实时过滤', '正常场景',
- '系统正常运行,建筑树状图已加载',
- '在搜索框输入楼栋/楼层关键词',
- '树状图实时过滤展示匹配节点',
- 'P0', '场景法'),
- ('实时监控', '二级单位下拉筛选后对应节点高亮展开', '正常场景',
- '系统正常运行,建筑树状图已加载',
- '打开二级单位下拉框并选择某单位',
- '树状图对应单位节点高亮展开',
- 'P1', '场景法'),
- ('实时监控', '建筑树状图四级层级可独立展开折叠', '正常场景',
- '系统正常运行,建筑树状图已加载',
- '逐级点击院区→楼栋→楼层→房间节点展开/折叠',
- '四级层级正确展示,每级可独立展开/折叠',
- 'P0', '流程分析法'),
- ('实时监控', '点击楼层节点面包屑自动更新为三级路径', '正常场景',
- '系统正常运行,建筑树状图已加载',
- '点击某楼层节点',
- '右侧面包屑自动更新为:院区 > 楼栋名称 > 楼层名称',
- 'P0', '场景法'),
- ('实时监控', '右侧9宫格3x3排列16:9比例边框均匀', '正常场景',
- '系统正常运行,摄像头数据已加载',
- '观察右侧 9 宫格区域',
- '3x3 排列,16:9 比例,画面边框与间距均匀',
- 'P0', '场景法'),
- ('实时监控', '第一个摄像头显示智能标识和危险检测框', '正常场景',
- '系统正常运行,摄像头数据已加载',
- '观察左上角第一个摄像头画面',
- '显示智能摄像头标识,含危险行为检测框(矩形框标注),检测框随模拟数据更新位置',
- 'P1', '场景法'),
- ('实时监控', '翻页按钮切换摄像头组面包屑同步更新', '正常场景',
- '系统正常运行,摄像头总数>9',
- '点击上一页/下一页翻页按钮',
- '切换至对应组(每组 9 个),面包屑与摄像头信息同步更新',
- 'P0', '场景法'),
- ('实时监控', '搜索无匹配时树状图显示无匹配结果提示', '异常场景',
- '系统正常运行,建筑树状图已加载',
- '输入无匹配的搜索关键词',
- '树状图显示无匹配结果提示,不出现空白区域',
- 'P1', '错误推测法'),
- ('实时监控', '某摄像头Canvas加载失败时对应格子显示信号丢失', '异常场景',
- '系统正常运行,模拟某摄像头加载失败',
- '观察对应格子显示',
- '显示信号丢失占位,不影响其他 8 个格子正常显示',
- 'P0', '错误推测法'),
- ('实时监控', '当前楼层无摄像头时9宫格全部显示暂无信号', '异常场景',
- '选择无摄像头的楼层',
- '观察 9 宫格区域',
- '9 宫格全部显示暂无信号占位格',
- 'P1', '错误推测法'),
- ('实时监控', '搜索框清空后树状图恢复完整展示', '异常场景',
- '搜索框已有内容',
- '清空搜索框',
- '树状图恢复完整展示',
- 'P1', '场景法'),
- ('实时监控', '树状图仅1个根节点时折叠展开按钮不显示或置灰', '边界场景',
- '后台配置树状图仅 1 个根节点',
- '观察折叠/展开按钮状态',
- '折叠/展开按钮不显示或置灰',
- 'P2', '边界值分析'),
- ('实时监控', '摄像头总数恰好9个时下一页按钮置灰', '边界场景',
- '后台配置摄像头总数为 9',
- '观察翻页按钮状态',
- '下一页按钮置灰不可点击',
- 'P1', '边界值分析'),
- ('实时监控', '摄像头总数10个时第2页仅显示1个画面其余占位', '边界场景',
- '后台配置摄像头总数为 10',
- '翻至第 2 页观察画面数量',
- '第 2 页仅显示 1 个画面,其余 8 个格子显示占位',
- 'P1', '边界值分析'),
- ('实时监控', '摄像头总数0个时9宫格全占位翻页按钮均置灰', '边界场景',
- '后台配置摄像头总数为 0',
- '观察 9 宫格和翻页按钮',
- '9 宫格全部显示占位,翻页按钮均置灰',
- 'P1', '边界值分析'),
- # ━━ 九、实验环境安全智能感知 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验环境安全智能感知', '实验室条目由下向上自动滚动流畅无卡顿', '正常场景',
- '系统正常运行,实验室条目已加载',
- '观察条目列表滚动行为',
- '由下向上自动滚动,流畅无卡顿',
- 'P0', '场景法'),
- ('实验环境安全智能感知', '每个条目完整显示名称单位传感器图标实时数值', '正常场景',
- '系统正常运行,数据接口正常返回',
- '观察每个实验室条目内容',
- '正确显示实验室名称(房号)-二级单位、传感器图标组、实时数值(温度、湿度、TVOC、CO2、O2等)',
- 'P0', '场景法'),
- ('实验环境安全智能感知', '传感器超阈值时条目红色高亮并显示报警图标', '正常场景',
- '系统正常运行,某传感器数据后台配置超出阈值',
- '观察对应实验室条目显示',
- '条目整体触发红色渐变高亮效果,对应数值旁显示报警图标',
- 'P0', '场景法'),
- ('实验环境安全智能感知', '异常条目触发全屏预警弹窗自动弹出', '正常场景',
- '系统正常运行,传感器数据超出阈值',
- '观察是否弹出全屏预警弹窗',
- '全屏预警弹窗自动弹出',
- 'P0', '场景法'),
- ('实验环境安全智能感知', '传感器全部离线时数值显示横杠不触发误报警', '异常场景',
- '后台配置某实验室传感器全部离线',
- '观察该条目各传感器数值与报警图标',
- '各传感器数值显示 --,不触发误报警,不渲染报警图标',
- 'P0', '错误推测法'),
- ('实验环境安全智能感知', '数据刷新超时时页面不卡死数值保持最后有效数据', '异常场景',
- '模拟数据刷新超时',
- '观察页面响应和数值显示',
- '页面不卡死,数值保持最后一次有效数据并显示更新时间戳',
- 'P0', '错误推测法'),
- ('实验环境安全智能感知', '条目超100条时滚动帧率不低于30FPS', '边界场景',
- '后台配置实验室条目数量超过 100 条',
- '观察滚动帧率',
- '滚动性能不出现明显卡顿(FPS 不低于 30)',
- 'P1', '边界值分析'),
- ('实验环境安全智能感知', '传感器数值恰好等于阈值时明确触发或不触发报警', '边界场景',
- '后台配置传感器数值恰好等于阈值',
- '观察是否触发报警',
- '明确触发或不触发报警,验证临界值判断逻辑(>= 还是 >)',
- 'P0', '边界值分析'),
- ('实验环境安全智能感知', '滚动至最后一条后列表循环回第一条无空白帧', '边界场景',
- '系统正常运行,条目列表持续滚动',
- '等待列表滚动至最后一条后观察',
- '列表循环从第一条重新开始,不出现空白帧',
- 'P1', '边界值分析'),
- # ━━ 十、实验室实时风险预警 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('实验室实时风险预警', '预警列表按时间倒序轮播最新在最顶部', '正常场景',
- '系统正常运行,本月有预警记录',
- '观察预警列表排序',
- '按时间倒序轮播,最新一条始终在最顶部',
- 'P0', '场景法'),
- ('实验室实时风险预警', '应急风险预警条目含警报标识琥珀色字体及三项信息', '正常场景',
- '系统正常运行,有应急风险预警记录',
- '观察应急风险预警条目',
- '含应急标识,字体颜色琥珀/橙色高亮,包含实验室名称、异常传感器名称及值、预警时间',
- 'P0', '场景法'),
- ('实验室实时风险预警', '危化品违规带离预警含危化品标识及正确信息', '正常场景',
- '系统正常运行,有危化品违规带离记录',
- '观察危化品违规带离预警条目',
- '含危化品标识,包含实验室名称、违规带离描述、预警时间',
- 'P0', '场景法'),
- ('实验室实时风险预警', '两类计数器数值与列表条数完全一致', '正常场景',
- '系统正常运行,有预警记录',
- '统计列表中两类预警数量,对比标题栏计数器',
- '两类计数器数值与列表中对应类型历史通知条数完全一致',
- 'P0', '等价类划分'),
- ('实验室实时风险预警', '本月无预警记录时列表显示占位两类计数器显示0', '异常场景',
- '后台配置本月无任何预警记录',
- '观察列表和计数器',
- '列表显示暂无预警记录,两类计数器均显示 0',
- 'P0', '错误推测法'),
- ('实验室实时风险预警', '预警超1000条时滚动不卡顿不影响其他模块', '异常场景',
- '后台配置预警通知数量超过 1000 条',
- '观察滚动性能和其他模块渲染',
- '滚动不出现性能卡顿,不影响其他模块正常渲染',
- 'P1', '错误推测法'),
- ('实验室实时风险预警', '同一实验室同一秒触发两类预警各自独立计数', '边界场景',
- '模拟同一实验室同一秒内触发两类预警',
- '观察两条通知显示与计数器',
- '两条通知独立显示,时间戳一致但均正确计入各自计数器',
- 'P1', '边界值分析'),
- ('实验室实时风险预警', '跨月数据排序正确不混入当月计数', '边界场景',
- '系统运行至月底最后一秒',
- '观察跨月前后通知排序和计数',
- '跨月数据不混入当月计数,排序正确',
- 'P1', '边界值分析'),
- # ━━ 十一、全屏预警弹窗 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('全屏预警弹窗', '传感器超阈值时弹窗自动弹出覆盖视口z-index最高', '正常场景',
- '系统正常运行,传感器数据超出阈值',
- '观察全屏预警弹窗是否弹出',
- '弹窗自动弹出,覆盖整个视口,z-index 高于所有大屏内容层',
- 'P0', '场景法'),
- ('全屏预警弹窗', '弹窗整体呈科幻红色报警样式与大屏形成对比', '正常场景',
- '系统正常运行,弹窗已触发',
- '观察弹窗整体视觉风格',
- '红色渐变、闪烁光效,与深蓝大屏形成强对比',
- 'P1', '场景法'),
- ('全屏预警弹窗', '弹窗左侧Canvas900x700右侧正确显示异常详情', '正常场景',
- '系统正常运行,弹窗已触发',
- '观察弹窗左侧 Canvas 区域和右侧信息',
- '左侧 Canvas 模拟区域 900x700px,对应触发预警实验室;右侧正确显示实验室名称、异常传感器名称、当前值、超限阈值',
- 'P0', '场景法'),
- ('全屏预警弹窗', '底部三按钮完整显示颜色样式正确', '正常场景',
- '系统正常运行,弹窗已触发',
- '观察底部三个按钮',
- '稍后处理(灰色)、确认处理(蓝色)、应急疏散(琥珀色)均完整显示',
- 'P0', '场景法'),
- ('全屏预警弹窗', '点击确认处理弹窗关闭预警标记已处理不再重复弹出', '正常场景',
- '弹窗已触发',
- '点击确认处理按钮',
- '弹窗关闭,对应预警条目标记为已处理,不再触发同一条预警弹窗',
- 'P0', '场景法'),
- ('全屏预警弹窗', '点击稍后处理弹窗关闭预警保持未处理可二次触发', '正常场景',
- '弹窗已触发',
- '点击稍后处理按钮',
- '弹窗关闭,预警条目状态保持未处理,可二次触发',
- 'P0', '场景法'),
- ('全屏预警弹窗', '点击应急疏散按钮弹出疏散弹窗预警弹窗保留底层', '正常场景',
- '弹窗已触发',
- '点击应急疏散按钮',
- '应急疏散全屏弹窗弹出(z-index 更高),当前预警弹窗保留在底层',
- 'P0', '场景法'),
- ('全屏预警弹窗', '多实验室同时触发预警时弹窗按顺序逐一弹出', '异常场景',
- '模拟多个实验室同时触发预警',
- '观察弹窗弹出行为',
- '弹窗按优先级或时间顺序逐一弹出,不出现多窗口叠加错乱',
- 'P0', '错误推测法'),
- ('全屏预警弹窗', '弹窗Canvas加载失败时左侧显示占位右侧不受影响', '异常场景',
- '弹窗已触发,模拟左侧 Canvas 加载失败',
- '观察左侧区域和右侧详情',
- '左侧显示摄像头信号丢失占位,右侧详情不受影响',
- 'P1', '错误推测法'),
- ('全屏预警弹窗', '弹窗期间传感器恢复正常时弹窗不自动关闭需手动', '边界场景',
- '弹窗已触发,传感器数据快速恢复正常',
- '观察弹窗是否自动关闭',
- '弹窗不自动关闭,需用户手动操作',
- 'P1', '边界值分析'),
- ('全屏预警弹窗', '弹窗未处理时同实验室再次触发不重复弹出防抖', '边界场景',
- '弹窗已触发且未处理',
- '同一实验室再次触发相同预警',
- '不重复弹出新弹窗(防抖机制)',
- 'P0', '边界值分析'),
- # ━━ 十二、应急疏散弹窗 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('应急疏散弹窗', '弹窗全屏弹出层级高于预警弹窗进场动画流畅', '正常场景',
- '全屏预警弹窗已触发',
- '点击应急疏散按钮,观察应急疏散弹窗弹出',
- '弹窗全屏弹出,z-index 高于预警弹窗,两层弹窗同时可见互不遮挡,进场动画流畅',
- 'P0', '场景法'),
- ('应急疏散弹窗', '关闭按钮仅关闭疏散弹窗底层预警弹窗保持完整', '正常场景',
- '应急疏散弹窗已打开',
- '点击右上角关闭按钮',
- '仅关闭应急疏散弹窗,底层全屏预警弹窗保持完整可见',
- 'P0', '场景法'),
- ('应急疏散弹窗', 'SVG平面图告警房间红色边框高亮与预警信息一致', '正常场景',
- '应急疏散弹窗已打开',
- '观察左侧 SVG 平面图,对比告警房间与预警弹窗中实验室信息',
- 'SVG 深蓝科幻风格正确渲染,告警房间红色边框高亮,编号与预警信息一致',
- 'P0', '场景法'),
- ('应急疏散弹窗', '疏散路线蓝色边框集合点标记虚线箭头指向出口', '正常场景',
- '应急疏散弹窗已打开',
- '观察 SVG 平面图中蓝色边框房间、集合点圆形标记、蓝色虚线箭头',
- '疏散路线关键房间蓝色边框,集合点圆形标记位置合理,蓝色虚线箭头指向两端紧急出口,方向清晰',
- 'P0', '场景法'),
- ('应急疏散弹窗', 'SVG右上方图例颜色语义与图形一致', '正常场景',
- '应急疏散弹窗已打开',
- '观察 SVG 右上方应急疏散路线图图例',
- '红色=告警房间、蓝色=疏散路线的颜色语义与图形一致',
- 'P1', '等价类划分'),
- ('应急疏散弹窗', '右侧3路监控占位区等宽等高16:9含楼层标签', '正常场景',
- '应急疏散弹窗已打开',
- '观察右侧 3 路视频监控区域',
- '纵向排列 3 路,高宽比 16:9,各路等宽等高,含楼层分区标签,Canvas 模拟画面有动态内容',
- 'P1', '场景法'),
- ('应急疏散弹窗', '底部告警指标明细格式指标名称当前值阈值', '正常场景',
- '应急疏散弹窗已打开',
- '观察底部左侧告警指标明细',
- '按「指标名称|当前值|阈值」逐行展示,数值与预警弹窗完全一致',
- 'P0', '等价类划分'),
- ('应急疏散弹窗', '播放设备选择展开列表选中后按钮文字更新', '正常场景',
- '应急疏散弹窗已打开,有可用播放设备',
- '点击播放设备选择按钮,选择某设备',
- '展开显示全部设备名称,选择后按钮文字更新为已选设备名称并高亮',
- 'P0', '场景法'),
- ('应急疏散弹窗', '喊话内容发送后输入框清空发送按钮短暂禁用2秒', '正常场景',
- '应急疏散弹窗已打开,已选择播放设备',
- '输入喊话内容后点击发送',
- '内容成功提交,输入框自动清空,发送按钮短暂禁用约 2 秒防重复提交,恢复后可再次发送',
- 'P0', '场景法'),
- ('应急疏散弹窗', '执行疏散按钮点击后置灰显示已下达并写入日志', '正常场景',
- '应急疏散弹窗已打开',
- '点击执行疏散按钮',
- '疏散指令成功下达,按钮立即置灰,界面显示疏散指令已下达,操作记录含时间和人员信息正确写入系统日志',
- 'P0', '场景法'),
- ('应急疏散弹窗', '稍后处理按钮关闭疏散弹窗焦点返回预警弹窗', '正常场景',
- '应急疏散弹窗已打开',
- '点击底部稍后处理按钮',
- '应急疏散弹窗关闭,焦点返回至底层全屏预警弹窗',
- 'P0', '场景法'),
- ('应急疏散弹窗', '喊话内容为空时点击发送不提交空请求', '异常场景',
- '应急疏散弹窗已打开,喊话输入框为空',
- '点击发送按钮',
- '按钮不可点击或显示请输入喊话内容提示,不提交空请求',
- 'P0', '错误推测法'),
- ('应急疏散弹窗', '播放设备列表为空时设备按钮置灰发送禁用', '异常场景',
- '后台配置无可用播放设备',
- '观察设备选择按钮和发送按钮状态',
- '设备选择按钮置灰显示无可用设备,发送按钮同步禁用',
- 'P0', '错误推测法'),
- ('应急疏散弹窗', '喊话发送网络失败时输入内容不丢失并提示重试', '异常场景',
- '应急疏散弹窗已打开,模拟网络请求失败',
- '点击发送,网络失败',
- '按钮恢复可点击,显示发送失败请重试,输入内容不丢失',
- 'P0', '错误推测法'),
- ('应急疏散弹窗', 'SVG平面图资源加载失败时显示占位提示其他区域不受影响', '异常场景',
- '模拟 SVG 平面图资源加载失败',
- '观察左侧区域显示',
- '显示平面图加载失败占位提示,右侧监控区及底部操作栏功能不受影响',
- 'P1', '错误推测法'),
- ('应急疏散弹窗', '右侧某路监控Canvas失败时显示信号丢失其余正常', '异常场景',
- '模拟右侧某路 Canvas 加载失败',
- '观察对应监控路显示',
- '显示信号丢失占位,其余两路正常显示',
- 'P1', '错误推测法'),
- ('应急疏散弹窗', '执行疏散网络失败时按钮恢复可点击不记录无效日志', '异常场景',
- '点击执行疏散后模拟网络请求失败',
- '观察按钮状态和提示',
- '按钮恢复可点击,显示指令下达失败请重试,不记录无效疏散日志',
- 'P0', '错误推测法'),
- ('应急疏散弹窗', '喊话内容达到最大字符上限时边框标红并提示', '边界场景',
- '应急疏散弹窗已打开',
- '输入恰好达到最大字符上限的内容',
- '输入框停止接受新字符,边框标红,显示已达字符上限',
- 'P1', '边界值分析'),
- ('应急疏散弹窗', '喊话内容仅1个字符时点击发送正常提交', '边界场景',
- '应急疏散弹窗已打开',
- '输入 1 个字符后点击发送',
- '正常提交,不因字数过少被拦截',
- 'P2', '边界值分析'),
- ('应急疏散弹窗', '喊话内容含特殊字符提交后不出现XSS注入', '边界场景',
- '应急疏散弹窗已打开',
- '输入特殊字符如 & < > 单引号 等后提交',
- '提交后不出现 XSS 注入或显示异常',
- 'P0', '错误推测法'),
- ('应急疏散弹窗', '多房间告警时SVG所有告警房间均红色高亮', '边界场景',
- '模拟多个房间同时告警',
- '观察 SVG 平面图告警房间高亮情况',
- '所有告警房间均红色边框高亮,疏散路线覆盖所有告警位置',
- 'P0', '边界值分析'),
- ('应急疏散弹窗', '连续多次点击执行疏散防抖机制仅记录一次', '边界场景',
- '应急疏散弹窗已打开',
- '快速连续点击执行疏散按钮',
- '系统仅记录一次疏散操作,不重复下达指令',
- 'P0', '边界值分析'),
- ('应急疏散弹窗', '关闭后再次打开弹窗输入框清空设备选择恢复默认', '边界场景',
- '已打开并关闭应急疏散弹窗',
- '再次点击应急疏散打开弹窗',
- '弹窗重新正常打开,喊话输入框已清空,设备选择恢复默认',
- 'P1', '边界值分析'),
- ('应急疏散弹窗', '执行疏散后再次打开时执行疏散按钮恢复可点击', '边界场景',
- '已执行疏散并关闭弹窗',
- '再次打开应急疏散弹窗',
- '执行疏散按钮恢复可点击状态,不保留上次禁用状态',
- 'P1', '边界值分析'),
- ('应急疏散弹窗', '播放设备仅1台时自动选中无需手动操作', '边界场景',
- '后台配置播放设备仅 1 台',
- '打开应急疏散弹窗观察设备选择状态',
- '设备选择按钮自动选中该设备,无需手动选择',
- 'P2', '边界值分析'),
- ('应急疏散弹窗', '播放设备超10台时下拉列表支持滚动不溢出', '边界场景',
- '后台配置播放设备超过 10 台',
- '打开设备选择下拉列表',
- '支持滚动查看,不出现列表溢出遮挡',
- 'P2', '边界值分析'),
- ('应急疏散弹窗', '9600x2800分辨率下弹窗各区域布局比例正确', '边界场景',
- '在 9600x2800px 分辨率设备上',
- '观察弹窗各区域布局比例',
- 'SVG、监控、底部栏布局比例与设计稿一致,无溢出',
- 'P0', '场景法'),
- ('应急疏散弹窗', '低分辨率设备上弹窗内容可正常访问不遮挡按钮', '边界场景',
- '在低于 9600x2800px 的普通显示器上',
- '观察弹窗内容可访问性',
- '弹窗内容可正常访问,必要时出现内部滚动条,不遮挡操作按钮',
- 'P1', '场景法'),
- # ━━ 十三、整体页面与通用功能 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- ('整体页面与通用功能', '整体CSS Grid四列宽度比例2:1.5:4.5:2正确', '正常场景',
- '系统正常运行,页面已完整加载',
- '检查整体布局 CSS Grid 列宽比例',
- 'grid-template-columns: 2fr 1.5fr 4.5fr 2fr,四列宽度比例与设计稿一致',
- 'P0', '场景法'),
- ('整体页面与通用功能', '页面按9600x2800px固定像素显示不使用scale缩放', '正常场景',
- '系统正常运行,页面已完整加载',
- '在 9600x2800px 分辨率下查看页面',
- '按固定像素显示,不使用 transform:scale 缩放',
- 'P0', '场景法'),
- ('整体页面与通用功能', '初次进入页面自动触发Fullscreen API全屏', '正常场景',
- '使用支持 Fullscreen API 的浏览器首次打开页面',
- '观察页面是否自动全屏',
- '自动触发全屏显示(Fullscreen API)',
- 'P1', '场景法'),
- ('整体页面与通用功能', '所有模块border-beam动效与四角装饰线正常', '正常场景',
- '系统正常运行,页面已完整加载',
- '观察所有模块边框动效',
- '所有模块边框均有 border-beam 动态路径流动动效,各模块四角有科幻装饰线框',
- 'P1', '场景法'),
- ('整体页面与通用功能', '主色调变量全局渲染颜色一致', '正常场景',
- '系统正常运行,页面已完整加载',
- '检查主色调变量(--bg-deep、--blue、--cyan、--gold)全局使用情况',
- '颜色变量全局渲染一致',
- 'P1', '等价类划分'),
- ('整体页面与通用功能', '面板圆角15px边框颜色rgba统一', '正常场景',
- '系统正常运行,页面已完整加载',
- '检查各面板圆角和边框颜色',
- '面板圆角统一 15px,边框颜色统一 rgba(30,144,255,0.22)',
- 'P1', '等价类划分'),
- ('整体页面与通用功能', 'ECharts版本5.4.3图表渲染无控制台版本兼容警告', '正常场景',
- '系统正常运行,页面已完整加载',
- '打开浏览器控制台,观察 ECharts 相关日志',
- '图表基于 ECharts 5.4.3 API 渲染,无控制台版本兼容警告',
- 'P1', '场景法'),
- ('整体页面与通用功能', '页面为单一HTML内联CSS无构建依赖双击可运行', '正常场景',
- '本地环境无 Web 服务器',
- '双击 HTML 文件在浏览器中打开',
- '页面可正常运行,内联 CSS+JavaScript,无需构建工具',
- 'P0', '场景法'),
- ('整体页面与通用功能', '浏览器不支持Fullscreen API时页面正常显示不报错', '异常场景',
- '使用不支持 Fullscreen API 的浏览器',
- '打开页面观察显示和错误',
- '页面正常显示,不出现白屏、黑屏或 JS 报错,提示用户手动全屏',
- 'P1', '错误推测法'),
- ('整体页面与通用功能', 'ECharts资源加载失败时对应图表区域显示占位块', '异常场景',
- '模拟 ECharts 资源加载失败',
- '观察图表区域响应',
- '对应图表区域显示图表加载失败占位块,不影响其他模块渲染',
- 'P0', '错误推测法'),
- ('整体页面与通用功能', '多动效同时运行时页面帧率保持流畅无卡顿', '异常场景',
- '系统正常运行,所有动效同时运行',
- '观察页面帧率和流畅度',
- '页面帧率保持流畅,无明显卡顿',
- 'P1', '错误推测法'),
- ('整体页面与通用功能', '9600x2800分辨率下各模块排版无错位内容无溢出', '边界场景',
- '在 9600x2800px 分辨率设备上',
- '检查各模块排版、内容和文字',
- '各模块排版无错位、内容无溢出、文字无截断',
- 'P0', '边界值分析'),
- ('整体页面与通用功能', '低分辨率下页面不强制缩放滚动条正常出现', '边界场景',
- '在低于 9600x2800px 分辨率设备上',
- '打开页面观察缩放和滚动条',
- '页面不强制缩放,滚动条正常出现,可浏览全部内容',
- 'P1', '边界值分析'),
- ('整体页面与通用功能', '页面持续运行8小时以上各实时模块无内存泄漏退化', '边界场景',
- '系统正常运行超过 8 小时',
- '持续观察各实时刷新模块性能',
- '时钟、传感器数据、预警通知等模块不出现因内存泄漏导致的性能退化',
- 'P0', '边界值分析'),
- ('整体页面与通用功能', '快速切换标签页再切回时动效与数据刷新自动恢复', '边界场景',
- '系统正常运行',
- '快速切换至其他标签页再切回',
- '所有实时动效与数据刷新自动恢复,不出现动画卡死',
- 'P1', '边界值分析'),
- ]
- def create_xls():
- wb = xlwt.Workbook(encoding='utf-8')
- ws = wb.add_sheet('测试用例')
- # ── 样式定义 ──────────────────────────────────────────────
- def make_style(bold=False, bg_colour=None,
- halign=xlwt.Alignment.HORZ_LEFT,
- font_colour=None, font_height=200):
- font = xlwt.Font()
- font.name = 'Microsoft YaHei'
- font.height = font_height
- font.bold = bold
- if font_colour is not None:
- font.colour_index = font_colour
- borders = xlwt.Borders()
- for attr in ('left', 'right', 'top', 'bottom'):
- setattr(borders, attr, xlwt.Borders.THIN)
- alignment = xlwt.Alignment()
- alignment.horz = halign
- alignment.vert = xlwt.Alignment.VERT_CENTER
- alignment.wrap = 1
- style = xlwt.XFStyle()
- style.font = font
- style.borders = borders
- style.alignment = alignment
- if bg_colour is not None:
- pattern = xlwt.Pattern()
- pattern.pattern = xlwt.Pattern.SOLID_PATTERN
- pattern.pattern_fore_colour = xlwt.Style.colour_map[bg_colour]
- style.pattern = pattern
- return style
- header_style = make_style(
- bold=True, bg_colour='dark_blue',
- halign=xlwt.Alignment.HORZ_CENTER,
- font_colour=xlwt.Style.colour_map['white'],
- font_height=220
- )
- CENTER = xlwt.Alignment.HORZ_CENTER
- styles = {
- '正常场景': {
- 'text': make_style(bg_colour='light_turquoise'),
- 'center': make_style(bg_colour='light_turquoise', halign=CENTER),
- },
- '异常场景': {
- 'text': make_style(bg_colour='rose'),
- 'center': make_style(bg_colour='rose', halign=CENTER),
- },
- '边界场景': {
- 'text': make_style(bg_colour='light_yellow'),
- 'center': make_style(bg_colour='light_yellow', halign=CENTER),
- },
- }
- # ── 表头 ──────────────────────────────────────────────────
- headers = [
- '用例编号', '模块名称', '测试场景', '测试类型',
- '前置条件', '测试操作', '预期结果', '优先级', '设计方法', '测试结果'
- ]
- col_widths = [4000, 5500, 9000, 3500, 10000, 12000, 14000, 2800, 4000, 3500]
- for col, (h, w) in enumerate(zip(headers, col_widths)):
- ws.write(0, col, h, header_style)
- ws.col(col).width = w
- ws.row(0).height_mismatch = True
- ws.row(0).height = 600
- # ── 模块编号映射 ──────────────────────────────────────────
- MODULE_INDEX = {
- '顶部导航栏': 1,
- '实验室基本情况统计': 2,
- '实验室安全分级统计': 3,
- '实验室进入人数统计及走势': 4,
- '智能环境感知应用设备统计': 5,
- '实验室设备分类及使用统计': 6,
- '化学品库存动态统计': 7,
- '实时监控': 8,
- '实验环境安全智能感知': 9,
- '实验室实时风险预警': 10,
- '全屏预警弹窗': 11,
- '应急疏散弹窗': 12,
- '整体页面与通用功能': 13,
- }
- module_counters = {}
- # ── 写入数据行 ─────────────────────────────────────────────
- for row_idx, case in enumerate(TEST_CASES, start=1):
- module, scenario, case_type, precond, operation, expected, priority, method = case
- mod_num = MODULE_INDEX.get(module, 0)
- module_counters[module] = module_counters.get(module, 0) + 1
- seq = module_counters[module]
- case_id = 'TC-%02d-%03d' % (mod_num, seq)
- st = styles.get(case_type, styles['正常场景'])
- s_text = st['text']
- s_center = st['center']
- ws.write(row_idx, 0, case_id, s_center)
- ws.write(row_idx, 1, module, s_text)
- ws.write(row_idx, 2, scenario, s_text)
- ws.write(row_idx, 3, case_type, s_center)
- ws.write(row_idx, 4, precond, s_text)
- ws.write(row_idx, 5, operation, s_text)
- ws.write(row_idx, 6, expected, s_text)
- ws.write(row_idx, 7, priority, s_center)
- ws.write(row_idx, 8, method, s_center)
- ws.write(row_idx, 9, '', s_center) # 测试结果留空
- ws.row(row_idx).height_mismatch = True
- ws.row(row_idx).height = 500
- # ── 冻结首行 ──────────────────────────────────────────────
- ws.set_panes_frozen(True)
- ws.set_horz_split_pos(1)
- # ── 保存 ──────────────────────────────────────────────────
- out_path = os.path.join(
- os.path.dirname(os.path.abspath(__file__)),
- 'test_case', 'test_case_new.xls'
- )
- wb.save(out_path)
- print('已生成:%s,共 %d 条测试用例' % (out_path, len(TEST_CASES)))
- if __name__ == '__main__':
- create_xls()
|