+ [misc] Add unit tests for testtaskModel::importRunOfUnitResult() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:06:25 +08:00
co-authored by Claude
parent 7a9e7015ba
commit 880fcecb48
2 changed files with 83 additions and 0 deletions
@@ -847,4 +847,41 @@ class testtaskTest
$tester->config->global->flow = $oldConfig;
}
}
/**
* Test importRunOfUnitResult method.
*
* @param object $case
* @param int $caseID
* @param object $testRun
* @access public
* @return mixed
*/
public function importRunOfUnitResultTest(object $case, int $caseID, object $testRun)
{
// 确保case对象包含必需的属性
if(!isset($case->version)) $case->version = 1;
if(!isset($case->lastRunner)) $case->lastRunner = '';
if(!isset($case->lastRunDate)) $case->lastRunDate = '';
if(!isset($case->lastRunResult)) $case->lastRunResult = '';
$reflection = new ReflectionClass($this->objectModel);
$method = $reflection->getMethod('importRunOfUnitResult');
$method->setAccessible(true);
try {
$result = $method->invokeArgs($this->objectModel, [$case, $caseID, $testRun]);
if(dao::isError()) {
$errors = dao::getError();
return 'dao_error: ' . (is_array($errors) ? implode(', ', $errors) : $errors);
}
// 返回插入成功的标志,而不是具体的ID
return $result > 0 ? 'success' : 'failed';
} catch(Exception $e) {
return 'exception: ' . $e->getMessage();
} catch(Error $e) {
return 'error: ' . $e->getMessage();
}
}
}
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env php
<?php
/**
title=测试 testtaskModel::importRunOfUnitResult();
timeout=0
cid=0
- 步骤1:正常导入测试运行数据 @success
- 步骤2:测试不同参数的测试运行数据 @success
- 步骤3:测试最小caseID为0 @success
- 步骤4:测试不同版本的测试运行数据 @success
- 步骤5:测试完整的测试运行数据导入 @success
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/testtask.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$testrun = zenData('testrun');
$testrun->id->range('1-10');
$testrun->task->range('1-5');
$testrun->case->range('1-20');
$testrun->version->range('1-3');
$testrun->assignedTo->range('admin,user1,user2,test3,dev4');
$testrun->lastRunner->range('admin,user1,user2');
$testrun->lastRunDate->range('`2024-01-01 10:00:00`,`2024-01-02 11:00:00`,`2024-01-03 12:00:00`');
$testrun->lastRunResult->range('pass,fail,blocked');
$testrun->status->range('normal,wait,done');
$testrun->gen(5);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$testtaskTest = new testtaskTest();
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 2, 'lastRunner' => 'testuser', 'lastRunDate' => '2024-01-01 15:00:00', 'lastRunResult' => 'pass'), 101, (object)array('task' => 6, 'status' => 'normal'))) && p() && e('success'); // 步骤1:正常导入测试运行数据
r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'testuser2', 'lastRunDate' => '2024-01-02 15:00:00', 'lastRunResult' => 'pass'), 102, (object)array('task' => 7, 'status' => 'normal'))) && p() && e('success'); // 步骤2:测试不同参数的测试运行数据
r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'admin', 'lastRunDate' => '2024-01-02 10:00:00', 'lastRunResult' => 'fail'), 0, (object)array('task' => 8, 'status' => 'wait'))) && p() && e('success'); // 步骤3:测试最小caseID为0
r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 3, 'lastRunner' => 'testuser4', 'lastRunDate' => '2024-01-04 15:00:00', 'lastRunResult' => 'blocked'), 103, (object)array('task' => 9, 'status' => 'normal'))) && p() && e('success'); // 步骤4:测试不同版本的测试运行数据
r($testtaskTest->importRunOfUnitResultTest((object)array('version' => 1, 'lastRunner' => 'developer', 'lastRunDate' => '2024-01-03 14:30:00', 'lastRunResult' => 'blocked'), 104, (object)array('task' => 10, 'status' => 'done', 'assignedTo' => 'tester'))) && p() && e('success'); // 步骤5:测试完整的测试运行数据导入