好长时间没发帖子了,先说一下事情的起因吧。我们公司测试使用 testlink 管理测试用例,之前有同学跟我反馈过,导入用例操作步骤、期望结果不换行,看起来特别费劲。一直忙把这事给忘了,这几天我检查工具使用情况时,有同学反应他们现在还是用 Excel 执行用例,完成后每天更新一次 testlink 中的用例状态。(听完好有罪恶感,感觉给大家添了不少麻烦)昨天花了些时间检查了一下 testlink 准备修改。
修改不换行这个问题有两种方式,第一种直接在数据导入的时候给每一行加上<p></p>
,第二种在页面展示的时候加上<p></p>
最终还是第二种方式更科学,不会破坏原始数据。
开始分析:
既然是展示,那我们先打开一个测试用例,然后查看调用接口,返现只有 testlink/lib/testcases/archiveData.php?version_id=undefined&edit=testcase&id=1691&form_token=1898459100 被调用,直接查看 archiveData.php 文件,展示部分代码。
以下代码都是节选,避免篇幅太长
list($args,$gui,$grants) = initializeEnv($db); // **找到我们传入的参数**
switch($args->feature) // **参数处理过程**
{
case 'testproject': // **测试项目**
case 'testsuite': // **测试用例集**
case 'testcase': // **测试用例,我们修改的就是测试用例展示方式,接口请求时带了参数testcase(可以看上面请求),就是它了,读代码**
查找 processTestCase 方法,也在 archiveData.php 文件中
function processTestCase(&$dbHandler,$tplEngine,$args,&$gui,$grants,$cfg)
{
try
{
$item_mgr->show($tplEngine,$gui,$identity,$grants); // **这个方法名字有些赤裸裸,我们就先找它的方法体吧**
}
catch (Exception $e)
{
echo $e->getMessage();
}
exit();
}
查找 show 方法体,在 testcase.class.php 中找到了
foreach($idSet as $key => $tc_id)
{
// using $version_id has sense only when we are working on ONE SPECIFIC Test Case
// if we are working on a set of test cases $version_id will be ALL VERSIONS
if( !$tc_array = $this->get_by_id($tc_id,$version_id,null,$gopt) )
{
continue;
}
$tc_array[0]['tc_external_id'] = $gui->tcasePrefix . $tc_array[0]['tc_external_id'];
$tc_array[0]['ghost'] = '[ghost]"TestCase":"' . $tc_array[0]['tc_external_id'] . '","Version":"' .
$tc_array[0]['version'] . '"[/ghost]';
// status quo of execution and links of tc versions
$gui->status_quo[] = $this->get_versions_status_quo($tc_id);
if($cfg->show_tplan_usage)
{
$gui->linked_versions[] = $this->get_linked_versions($tc_id);
}
$gui->keywords_map[] = isset($allTCKeywords[$tc_id]) ? $allTCKeywords[$tc_id] : null;
$tc_current = $tc_array[0];
// **加入如下代买处理换行**
foreach( $tc_current['steps'] as $k=>&$v ){
$v['expected_results'] = self::nl2p( $v['expected_results'] );
$v['actions'] = self::nl2p( $v['actions'] );
}
另外还需要在 testcase.class.php 文件中加一个方法 nl2p,此方法按照既定格式将文本分行并加上<p></p>
,方法体如下:
public static function nl2p($str)
{
$strTemp = '';
$string_arr = explode(" ", $str );
foreach($string_arr as $val){
$strTemp .= str_replace('<p></p>', '', '<p>' . preg_replace('#\n|\r#', '</p>$0<p>', $val) . '</p>'); //MS
}
return $strTemp;
}
此方法是按照中文空格拆长字符串,一般也符合大家写测试用例习惯,当然如果想按照其他字符拆长字符串修改
$string_arr = explode(" ", $str ); // **修改 “ ”里面的内容即可**
以上就是修改操作步骤和期望结果换行,看看效果图
希望能帮助到大家。感谢李鹏支持!