#!/usr/bin/env php loadYaml('file_processimportcolumnkey', false, 2)->gen(5); // 3. 用户登录 su('admin'); // 4. 创建测试CSV文件 $csvContent1 = "用例标题,所属模块,用例类型,优先级,预期结果\n测试用例1,功能模块,功能测试,高,预期通过\n测试用例2,界面模块,界面测试,中,预期通过"; $csvContent2 = "标题,模块,备注\n测试用例A,模块A,备注A\n测试用例B,模块B,备注B"; $csvContent3 = "用例标题,,用例类型,,预期结果\n测试用例X,,功能测试,,预期通过"; $csvContent4 = "unknown1,unknown2,unknown3\n数据1,数据2,数据3"; $csvContent5 = "\n"; // 空内容只有换行 // 确保创建在zentao路径下 $testDir = dirname(__FILE__, 5) . '/tmp/unittest/'; if(!is_dir($testDir)) mkdir($testDir, 0777, true); file_put_contents($testDir . 'normal_test.csv', $csvContent1); file_put_contents($testDir . 'partial_test.csv', $csvContent2); file_put_contents($testDir . 'empty_header_test.csv', $csvContent3); file_put_contents($testDir . 'unknown_fields_test.csv', $csvContent4); file_put_contents($testDir . 'empty_test.csv', $csvContent5); // 5. 创建测试实例 $testcaseTest = new testcaseZenTest(); // 6. 定义字段映射 $normalFields = array( '用例标题' => 'title', '所属模块' => 'module', '用例类型' => 'type', '优先级' => 'pri', '预期结果' => 'expect' ); $partialFields = array( '标题' => 'title', '模块' => 'module' ); $emptyFields = array(); // 7. 强制要求:必须包含至少5个测试步骤 r($testcaseTest->processImportColumnKeyTest($testDir . 'normal_test.csv', $normalFields)) && p() && e('title,module,type,pri,expect'); // 步骤1:正常情况 r($testcaseTest->processImportColumnKeyTest($testDir . 'partial_test.csv', $partialFields)) && p() && e('title,module'); // 步骤2:部分映射 r($testcaseTest->processImportColumnKeyTest($testDir . 'empty_header_test.csv', $normalFields)) && p() && e('title'); // 步骤3:空头部字段 r($testcaseTest->processImportColumnKeyTest($testDir . 'unknown_fields_test.csv', $emptyFields)) && p() && e('0'); // 步骤4:空映射返回空数组长度 r($testcaseTest->processImportColumnKeyTest($testDir . 'empty_test.csv', $normalFields)) && p() && e('0'); // 步骤5:空文件处理 // 8. 清理测试文件 unlink($testDir . 'normal_test.csv'); unlink($testDir . 'partial_test.csv'); unlink($testDir . 'empty_header_test.csv'); unlink($testDir . 'unknown_fields_test.csv'); unlink($testDir . 'empty_test.csv');