znt/module/testcase/test/zen/processimportcolumnkey.php

79 lines
3 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
/**
title=测试 testcaseZen::processImportColumnKey();
timeout=0
cid=19102
- 步骤1正常情况 @title,module,type,pri,expect
- 步骤2部分映射 @title,module
- 步骤3空头部字段 @title
- 步骤4空映射返回空数组长度 @0
- 步骤5空文件处理 @0
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/testcasezen.unittest.class.php';
// 2. zendata数据准备
$file = zenData('file');
$file->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');