目前手里有个测试项目各个feature的测试用例都放在对应的子目录下,虽然有自动化测试框架的帮助执行起来很方便,但是偶尔也有需要在本地执行某个feature的全部测试用例集合。因为本人对shell脚本不熟悉,所以Ruby的问题还是用Ruby来解决。

每个测试脚本的命名遵循如下规范:Testlink ID + 测试用例名字。比如100_invalid_signature.rb表示该测试用例在Testlink里的ID是100,用来测试无效签名。在脚本的实现中,测试用例的名字就对应为TC_100。例子代码如下:

 class TC_100 < Test::Unit::TestCase
# ...
end

既然有规范存在,那么一切都好说。我只要把100_invalid_signature.rb文件读入,那么通过文件名分析就知道必然存在一个测试用例类名为TC_100,把它塞到测试集合中,最后运行这个测试集合就可以了。例子代码如下:

 require 'test/unit/testsuite'
require 'test/unit/ui/console/testrunner' path = ARGV[0] # 测试脚本所在的目录
$suite_names = [] Dir.foreach(path) do |filename|
if /d+_/ =~ filename # 我们的命名规范是数字开头,下划线然后是简单描述。
require "#{path}/#{filename}"
testcase_id = filename.split('_')[0]
$suite_names << "TC_#{testcase_id}"
end
end class Suites << Test::Unit::TestSuite
def self.suit
suites = self.new('Suites')
suite_names.each do |suite_name|
suites << eval("::#{suite_name}.suite") # 这段是关键,利用eval就等于动态的插入了一段代码。
end
end
end Test::Unit::UI::Console::TestRunner.run(Suites)

最新文章

  1. MySQL 指定各分区路径
  2. socket编程基础
  3. Mysql表分区几种方式
  4. jquery隐藏table表格的某一列
  5. 【20160924】GOCVHelper 图像处理部分(2)
  6. Python类
  7. Java系列: 关于HttpSessionListener的sessionDestroyed什么时候触发
  8. Debian类系统必做——将【你的用户】加入sudoers用户组
  9. Codis使用教程
  10. HDU 5458 Stability (树链剖分+并查集+set)
  11. 2016多校第六场题解(hdu5793&amp;hdu5794&amp;hdu5795&amp;hdu5800&amp;hdu5802)
  12. APUE学习笔记-文件I/O
  13. MySql数据库学习--存储过程(1)
  14. HDU 1312 Red and Black(bfs)
  15. Sort list by merge sort
  16. plsql导入一个目录下全部excel
  17. JS之For---in 语句
  18. Android 视频编辑 SDK
  19. 替换应用程序DLL动态库的详细方法步骤 (gts.dll为例)
  20. MySQL/MariaDB系列文章目录

热门文章

  1. Oracle停止一个JOB
  2. Android源码分析-点击事件派发机制
  3. JTextpane 加入的行号
  4. Windows下MinGW跨平台编译和使用log4cpp
  5. Delphi MD5加密
  6. XBMC 最新版本号错误
  7. 关于iis里面 .net framework 版本的切换
  8. SharePoint Iframe 一个错误此内容不能显示在一帧&amp;lt;继续&amp;gt;
  9. 新版【CefSharp】 禁用右键菜单 43.00+
  10. CheckBox IsHitTestVisible