目录
一、递归形成用例集树
二、处理树形结构点击事件:
三、最终形成的执行语句。
提供一种思路,解决以下问题:
1、通过RIDE执行测试用例的话,无法调换待执行测试集顺序。
2、无法将当前选择保存为自己的测试集。
鉴于此,需要有方案加以解决。
思路其实也很简单,通过将测试集文件夹、测试集路径加以拼接,利用已有的pybot命令直接执行即可。为了简化操作,可以开发一个界面,读取用例文件夹形成用例树,供使用者手动选择单个或一批用例,拼接形成执行语句。列表可以保存、读取、拷贝到cmd执行,或通过界面直接执行。
以下结合代码,讲解下测试集文件夹形成树状结构的过程:
一、递归形成用例集树
private void createTreeView(string autoPath, TreeNode node)
{
//先遍历处理文件夹
DirectoryInfo directoryInfo = new DirectoryInfo(autoPath);
foreach (DirectoryInfo childDirectoryInfo in directoryInfo.GetDirectories())
{
//找到一个子文件夹,定义为一个文件夹节点
TreeNode directoryNode = new TreeNode(childDirectoryInfo.Name.ToString());
//Tag属性里存放路径,路径采取拼接方式形成,顶层路径可直接定义为Root
directoryNode.Tag = node.Tag + "/" + childDirectoryInfo.Name.ToString();
directoryNode.ImageIndex = 0;
//将此节点往下递归
createTreeView(autoPath + "//" + childDirectoryInfo.Name.ToString(), directoryNode);
//将此节点加入到用例树的父节点下
node.Nodes.Add(directoryNode);
}
//再处理用例集文件,形成叶子
//Py3的用例集默认是.robot格式,所以这里做了筛选
foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.robot"))
{
//定义一个空叶子节点
TreeNode leafNode = new TreeNode();
//将测试集名称作为叶子节点的名称
leafNode.Text = fileInfo.Name.ToString().Substring(0, fileInfo.Name.ToString().IndexOf(".robot"));
//排除系统自动生成的init文件
if (leafNode.Text != "__init__")
{
//Tag属性里存放路径,路径采取拼接方式形成,直接存放文件名,实际调用会用到
leafNode.Tag = node.Tag + "/" + fileInfo.Name.ToString();
leafNode.ImageIndex = 1;
leafNode.SelectedImageIndex = 1;
//叶子节点不用再做递归
//将叶子节点添加到父节点上
node.Nodes.Add(leafNode);
}
}
}
二、处理树形结构点击事件:
这里就不展开了,毕竟不同语言各有各的写法。简单说下思路:
1、鼠标单击获取坐标并定位焦点,改变节点“选中”、“未选中”状态。
2、鼠标双击提取节点tag,按叶子节点-测试集名称,非叶子节点-用例集文件夹名称提取。
3、鼠标右键点击节点,按叶子节点-测试集名称,非叶子节点-展开用例集文件夹,逐个用例集名称提取等。
以下是不同的点击效果,均可以正常利用pybot执行。
三、最终形成的执行语句。
即可在界面直接运行,也可以复制到cmd里执行。
以上程序稍加优化,也可以实现多测试机load balance的并发执行。只不过slave上需要开agent向回发送测试结果。
以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了
各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~