+ [misc] Add unit tests for testcaseModel::processStepsChanged() 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:24 +08:00
co-authored by Claude
parent 29fa9cfa03
commit 9cc49e1574
3 changed files with 153 additions and 0 deletions
@@ -1992,4 +1992,80 @@ class testcaseTest
return $result;
}
/**
* Test processStepsChanged method.
*
* @param string $testType
* @access public
* @return bool
*/
public function processStepsChangedTest(string $testType): bool
{
// 创建测试用例对象
$case = new stdclass();
// 创建旧步骤数据
$oldStep = array();
$oldStep1 = new stdclass();
$oldStep1->desc = '步骤描述1';
$oldStep1->expect = '期望结果1';
$oldStep1->type = 'step';
$oldStep[] = $oldStep1;
$oldStep2 = new stdclass();
$oldStep2->desc = '步骤描述2';
$oldStep2->expect = '期望结果2';
$oldStep2->type = 'group';
$oldStep[] = $oldStep2;
// 根据测试类型设置不同的新步骤数据
switch($testType)
{
case 'same_content':
// 相同内容
$case->steps = array('步骤描述1', '步骤描述2');
$case->expects = array('期望结果1', '期望结果2');
$case->stepType = array('step', 'group');
break;
case 'different_count':
// 不同数量
$case->steps = array('步骤描述1');
$case->expects = array('期望结果1');
$case->stepType = array('step');
break;
case 'different_desc':
// 不同描述
$case->steps = array('步骤描述1修改', '步骤描述2');
$case->expects = array('期望结果1', '期望结果2');
$case->stepType = array('step', 'group');
break;
case 'different_expect':
// 不同期望
$case->steps = array('步骤描述1', '步骤描述2');
$case->expects = array('期望结果1修改', '期望结果2');
$case->stepType = array('step', 'group');
break;
case 'different_type':
// 不同类型
$case->steps = array('步骤描述1', '步骤描述2');
$case->expects = array('期望结果1', '期望结果2');
$case->stepType = array('item', 'group');
break;
}
// 使用反射来调用保护方法
$reflection = new ReflectionClass($this->objectModel);
$method = $reflection->getMethod('processStepsChanged');
$method->setAccessible(true);
$result = $method->invoke($this->objectModel, $case, $oldStep);
if(dao::isError()) return dao::getError();
return $result;
}
}
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env php
<?php
/**
title=测试 testcaseModel::processStepsChanged();
timeout=0
cid=0
- 步骤1:相同内容 @0
- 步骤2:不同数量 @1
- 步骤3:不同描述 @1
- 步骤4:不同期望 @1
- 步骤5:不同类型 @1
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/testcase.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$table = zenData('casestep');
$table->id->range('1-10');
$table->case->range('1-3');
$table->version->range('1');
$table->type->range('step,group,item');
$table->desc->range('步骤描述1,步骤描述2,步骤描述3');
$table->expect->range('期望结果1,期望结果2,期望结果3');
$table->gen(6);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$testcaseTest = new testcaseTest();
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($testcaseTest->processStepsChangedTest('same_content')) && p() && e('0'); // 步骤1:相同内容
r($testcaseTest->processStepsChangedTest('different_count')) && p() && e('1'); // 步骤2:不同数量
r($testcaseTest->processStepsChangedTest('different_desc')) && p() && e('1'); // 步骤3:不同描述
r($testcaseTest->processStepsChangedTest('different_expect')) && p() && e('1'); // 步骤4:不同期望
r($testcaseTest->processStepsChangedTest('different_type')) && p() && e('1'); // 步骤5:不同类型
@@ -0,0 +1,34 @@
---
title: 测试用例步骤数据
desc: 用于测试processStepsChanged方法的测试用例步骤数据
author: Claude
version: 1.0
fields:
- field: id
note: 步骤ID
range: 1-10
- field: parent
note: 父步骤ID
range: 0
- field: case
note: 测试用例ID
range: 1-3
- field: version
note: 版本号
range: 1
- field: type
note: 步骤类型
range: step{4},group{2},item{4}
- field: desc
note: 步骤描述
range: '步骤描述1,步骤描述2,步骤描述3,步骤描述4,步骤描述5'
- field: expect
note: 期望结果
range: '期望结果1,期望结果2,期望结果3,期望结果4,期望结果5'