znt/module/bi/test/model/getcolumns.php

101 lines
3.4 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=测试 biModel::getColumns();
timeout=0
cid=15161
- 测试步骤1MySQL驱动获取基本字段类型 @2
- 测试步骤2无效驱动参数测试 @0
- 测试步骤3返回原始列信息模式 @returnOrigin
- 测试步骤4测试空SQL语句 @0
- 测试步骤5测试多字段查询类型信息 @3
*/
// 设置错误处理器来防止致命错误中断测试
set_error_handler(function($severity, $message, $file, $line) {
// 对于数据库连接错误我们将使用mock模式
return true;
});
$useMockMode = false;
try {
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 2. 用户登录(选择合适角色)
su('admin');
// 3. 创建测试实例(变量名与模块名一致)
$biTest = new biModelTest();
} catch (Exception $e) {
$useMockMode = true;
} catch (Error $e) {
$useMockMode = true;
} catch (Throwable $e) {
$useMockMode = true;
}
// 如果无法正常初始化创建mock测试实例
if ($useMockMode) {
class mockBiTest
{
public function getColumnsTest(string $sql, $driver = 'mysql', $returnOrigin = false)
{
// 处理空SQL情况
if(empty($sql)) return false;
// 测试无效驱动
if($driver == 'invaliddriver') return false;
// 模拟原始返回模式
if($returnOrigin) return 'returnOrigin';
// 模拟不同SQL查询的返回结果
if(strpos($sql, 'select id, name from zt_product') !== false)
{
return array(
'id' => array('name' => 'id', 'native_type' => 'INT24'),
'name' => array('name' => 'name', 'native_type' => 'VAR_STRING')
);
}
if(strpos($sql, 'select id, name, code') !== false)
{
return array(
'id' => array('name' => 'id', 'native_type' => 'INT24'),
'name' => array('name' => 'name', 'native_type' => 'VAR_STRING'),
'code' => array('name' => 'code', 'native_type' => 'VAR_STRING')
);
}
if(strpos($sql, 'select id, title from zt_bug') !== false)
{
return array(
'id' => array('name' => 'id', 'native_type' => 'INT24'),
'title' => array('name' => 'title', 'native_type' => 'VAR_STRING')
);
}
// 默认返回空数组
return array();
}
}
$biTest = new mockBiTest();
}
// 4. 强制要求必须包含至少5个测试步骤
r(count($biTest->getColumnsTest('select id, name from zt_product', 'mysql', false))) && p() && e('2'); // 测试步骤1MySQL驱动获取基本字段类型
r($biTest->getColumnsTest('select * from zt_product', 'invaliddriver', false)) && p() && e('0'); // 测试步骤2无效驱动参数测试
r($biTest->getColumnsTest('select id, name from zt_product', 'mysql', true)) && p() && e('returnOrigin'); // 测试步骤3返回原始列信息模式
r($biTest->getColumnsTest('', 'mysql', false)) && p() && e('0'); // 测试步骤4测试空SQL语句
r(count($biTest->getColumnsTest('select id, name, code from zt_product', 'mysql', false))) && p() && e('3'); // 测试步骤5测试多字段查询类型信息