+ [misc] Add unit tests for screenModel::filterMetricData() method
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,24 @@ class screenTest
|
||||
return $this->objectModel->getList($dimensionID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test filterMetricData method.
|
||||
*
|
||||
* @param array $data
|
||||
* @param string $dateType
|
||||
* @param bool $isObjectMetric
|
||||
* @param array $filters
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function filterMetricDataTest($data, $dateType, $isObjectMetric, $filters = array())
|
||||
{
|
||||
$result = $this->objectModel->filterMetricData($data, $dateType, $isObjectMetric, $filters);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试getByID。
|
||||
* Test getByID.
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 screenModel::filterMetricData();
|
||||
timeout=0
|
||||
cid=0
|
||||
|
||||
- 步骤1:空过滤器,返回原始数据数量 @3
|
||||
- 步骤2:时间范围过滤,检查第一个元素的scope字段第0条的scope属性 @project1
|
||||
- 步骤3:时间范围过滤,检查第一个元素的2024-01字段第0条的2024-01属性 @10
|
||||
- 步骤4:非对象度量时间过滤,检查第一个元素的date字段第0条的date属性 @2024-01-01
|
||||
- 步骤5:边界值测试 - 空数据 @0
|
||||
- 步骤6:时间过滤后数量验证 @3
|
||||
|
||||
*/
|
||||
|
||||
// 1. 导入依赖(路径固定,不可修改)
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/screen.unittest.class.php';
|
||||
|
||||
// 2. 用户登录(选择合适角色)
|
||||
su('admin');
|
||||
|
||||
// 3. 创建测试实例(变量名与模块名一致)
|
||||
$screenTest = new screenTest();
|
||||
|
||||
// 测试数据准备
|
||||
$objectMetricData = array(
|
||||
array('scope' => 'project1', '2024-01' => 10, '2024-02' => 20, '2024-03' => 30),
|
||||
array('scope' => 'project2', '2024-01' => 15, '2024-02' => 25, '2024-03' => 35),
|
||||
array('scope' => 'project3', '2024-01' => 12, '2024-02' => 22, '2024-03' => 32)
|
||||
);
|
||||
|
||||
$nonObjectMetricData = array(
|
||||
array('date' => '2024-01-01', 'value' => 100),
|
||||
array('date' => '2024-02-01', 'value' => 200),
|
||||
array('date' => '2024-03-01', 'value' => 300),
|
||||
array('date' => '2024-04-01', 'value' => 400)
|
||||
);
|
||||
|
||||
// 过滤器对象
|
||||
$scopeFilter = new stdClass();
|
||||
$scopeFilter->type = 'project';
|
||||
$scopeFilter->value = array('project1', 'project2');
|
||||
|
||||
$beginFilter = new stdClass();
|
||||
$beginFilter->month = '2024-01';
|
||||
|
||||
$endFilter = new stdClass();
|
||||
$endFilter->month = '2024-02';
|
||||
|
||||
// 4. 🔴 强制要求:必须包含至少5个测试步骤
|
||||
r(count($screenTest->filterMetricDataTest($objectMetricData, 'month', true, array()))) && p() && e('3'); // 步骤1:空过滤器,返回原始数据数量
|
||||
|
||||
r($screenTest->filterMetricDataTest($objectMetricData, 'month', true, array('begin' => $beginFilter, 'end' => $endFilter))) && p('0:scope') && e('project1'); // 步骤2:时间范围过滤,检查第一个元素的scope字段
|
||||
|
||||
r($screenTest->filterMetricDataTest($objectMetricData, 'month', true, array('begin' => $beginFilter, 'end' => $endFilter))) && p('0:2024-01') && e('10'); // 步骤3:时间范围过滤,检查第一个元素的2024-01字段
|
||||
|
||||
r($screenTest->filterMetricDataTest($nonObjectMetricData, 'month', false, array('begin' => $beginFilter, 'end' => $endFilter))) && p('0:date') && e('2024-01-01'); // 步骤4:非对象度量时间过滤,检查第一个元素的date字段
|
||||
|
||||
r(count($screenTest->filterMetricDataTest(array(), 'month', true, array('begin' => $beginFilter, 'end' => $endFilter)))) && p() && e('0'); // 步骤5:边界值测试 - 空数据
|
||||
|
||||
r(count($screenTest->filterMetricDataTest($objectMetricData, 'month', true, array('begin' => $beginFilter, 'end' => $endFilter)))) && p() && e('3'); // 步骤6:时间过滤后数量验证
|
||||
Reference in New Issue
Block a user