zoukankan      html  css  js  c++  java
  • Ruby元编程:执行某个目录下的全部测试用例

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

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

    1 class TC_100 < Test::Unit::TestCase
    2   # ...
    3 end

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

     1 require 'test/unit/testsuite'
     2 require 'test/unit/ui/console/testrunner'
     3 
     4 path = ARGV[0]    # 测试脚本所在的目录
     5 $suite_names = []
     6 
     7 Dir.foreach(path) do |filename|
     8   if /d+_/ =~ filename    # 我们的命名规范是数字开头,下划线然后是简单描述。
     9     require "#{path}/#{filename}"
    10     testcase_id = filename.split('_')[0]
    11     $suite_names << "TC_#{testcase_id}"
    12   end
    13 end
    14 
    15 class Suites << Test::Unit::TestSuite
    16   def self.suit
    17     suites = self.new('Suites')
    18     suite_names.each do |suite_name|
    19       suites << eval("::#{suite_name}.suite")    # 这段是关键,利用eval就等于动态的插入了一段代码。
    20     end
    21   end
    22 end
    23  
    24 Test::Unit::UI::Console::TestRunner.run(Suites)
  • 相关阅读:
    spring-boot:run启动时,如何带设置环境参数dev,test.
    git多人参与的项目 -> 分支代码如何合并到主干
    如何使用IDEA运行 一个分布式的项目
    学习反射 并尝试写一个反射的工具类
    SVN提交大量无效文件补救方法
    IDEA基础配置
    Eclipse常用快捷键与IDEA中的对比.
    如何运行一个分布式的Maven项目
    Java常考面试题整理(六)
    python并发——多进程中的异常捕获
  • 原文地址:https://www.cnblogs.com/panda_lin/p/3363575.html
Copyright © 2011-2022 走看看