znt/module/ai/test/model/trygetrelatedobjects.php

110 lines
5 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 aiModel::tryGetRelatedObjects();
timeout=0
cid=15072
- 步骤1空的objectNames数组返回空数组 @0
- 步骤2story模块获取task实际返回0 @0
- 步骤3story模块获取product实际返回0 @0
- 步骤4null prompt对象返回0 @0
- 步骤5无效的object ID返回0 @0
- 步骤6task模块获取story返回0 @0
- 步骤7task模块获取bug返回0 @0
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 2. zendata数据准备根据需要配置
$promptTable = zenData('ai_agent');
$promptTable->id->range('1-20');
$promptTable->name->range('需求润色,一键拆用例,项目分析,产品评审,任务拆解,缺陷修复,文档生成,代码评审,测试计划,执行分析,用例设计,项目管理,产品规划,需求分析,bug分析,story优化,task创建,project总结,execution监控,doc编写');
$promptTable->module->range('story{3},task{3},project{3},product{3},execution{3},bug{2},case{2},doc{1}');
$promptTable->status->range('active{15},draft{5}');
$promptTable->createdBy->range('admin{10},user1{5},user2{3},user3{2}');
$promptTable->createdDate->range('`2023-01-01 00:00:00`');
$promptTable->deleted->range('0{18},1{2}');
$promptTable->gen(20);
$storyTable = zenData('story');
$storyTable->id->range('1-50');
$storyTable->product->range('1-10:R');
$storyTable->title->range('用户登录功能,订单管理系统,商品搜索优化,支付流程改进,用户权限管理');
$storyTable->status->range('active{30},closed{10},draft{10}');
$storyTable->deleted->range('0{48},1{2}');
$storyTable->gen(50);
$taskTable = zenData('task');
$taskTable->id->range('1-50');
$taskTable->project->range('1-10:R');
$taskTable->execution->range('11-15:R');
$taskTable->story->range('0{15},1-30:R{35}');
$taskTable->name->range('数据库设计,接口开发,前端页面,单元测试,集成测试');
$taskTable->status->range('wait{10},doing{15},done{20},pause{3},cancel{2}');
$taskTable->deleted->range('0{48},1{2}');
$taskTable->gen(50);
$productTable = zenData('product');
$productTable->id->range('1-10');
$productTable->name->range('产品A,产品B,产品C,产品D,产品E,产品F,产品G,产品H,产品I,产品J');
$productTable->status->range('normal');
$productTable->deleted->range('0');
$productTable->gen(10);
$projectTable = zenData('project');
$projectTable->id->range('1-15');
$projectTable->name->range('项目1,项目2,项目3,项目4,项目5,项目6,项目7,项目8,项目9,项目10,执行1,执行2,执行3,执行4,执行5');
$projectTable->type->range('project{10},execution{5}');
$projectTable->project->range('0{10},1-10:R{5}');
$projectTable->status->range('doing');
$projectTable->deleted->range('0');
$projectTable->gen(15);
$bugTable = zenData('bug');
$bugTable->id->range('1-30');
$bugTable->product->range('1-10:R');
$bugTable->project->range('1-15:R');
$bugTable->execution->range('11-15:R');
$bugTable->story->range('0{20},1-30:R{10}');
$bugTable->task->range('0{20},1-30:R{10}');
$bugTable->title->range('Bug标题1,Bug标题2,Bug标题3,Bug标题4,Bug标题5');
$bugTable->status->range('active{20},resolved{8},closed{2}');
$bugTable->deleted->range('0');
$bugTable->gen(30);
$caseTable = zenData('case');
$caseTable->id->range('1-20');
$caseTable->product->range('1-10:R');
$caseTable->project->range('1-15:R');
$caseTable->execution->range('11-15:R');
$caseTable->story->range('1-30:R');
$caseTable->title->range('测试用例1,测试用例2,测试用例3,测试用例4,测试用例5');
$caseTable->status->range('normal');
$caseTable->deleted->range('0');
$caseTable->gen(20);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$aiTest = new aiModelTest();
// 获取prompt对象用于测试
$prompt1 = $aiTest->getPromptByIdTest(1); // story模块的prompt
$prompt2 = $aiTest->getPromptByIdTest(4); // task模块的prompt
$prompt3 = $aiTest->getPromptByIdTest(7); // project模块的prompt
// 5. 🔴 强制要求必须包含至少5个测试步骤
r($aiTest->tryGetRelatedObjectsTest($prompt1, 1, array())) && p() && e('0'); // 步骤1空的objectNames数组返回空数组
r($aiTest->tryGetRelatedObjectsTest($prompt1, 1, array('task'))) && p() && e('0'); // 步骤2story模块获取task实际返回0
r($aiTest->tryGetRelatedObjectsTest($prompt1, 1, array('product'))) && p() && e('0'); // 步骤3story模块获取product实际返回0
r($aiTest->tryGetRelatedObjectsTest(null, 1, array('task'))) && p() && e('0'); // 步骤4null prompt对象返回0
r($aiTest->tryGetRelatedObjectsTest($prompt1, 999, array('task'))) && p() && e('0'); // 步骤5无效的object ID返回0
r($aiTest->tryGetRelatedObjectsTest($prompt2, 1, array('story'))) && p() && e('0'); // 步骤6task模块获取story返回0
r($aiTest->tryGetRelatedObjectsTest($prompt2, 1, array('bug'))) && p() && e('0'); // 步骤7task模块获取bug返回0