Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
   [VB] [VB6] [C#] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [CE] [LTSA] [自動化] [Qt] [OCaml] [TOOLS]
   [3Dプリンタ] [RAA] [Forge]   [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [Java] [EA] [マクロ]

2008-12-10

remoteTestLinkリリースしました

remoteTestLinkリリースしました - Rubyの魔神 を含むブックマーク はてなブックマーク - remoteTestLinkリリースしました - Rubyの魔神 remoteTestLinkリリースしました - Rubyの魔神 のブックマークコメント

以下のエントリーで書いたremoteTestLinkをデバッグ・リリースしました。

以下を参照願います。

http://testlinkjp.org/modules/news/article.php?storyid=10

目標はTestLinkに自動テスト機能をつける(自動テストツールと連携させる)ことですね。

ファイル名:remoteTestLink.rb(リリース版)


#!/usr/bin/env ruby 

require 'xmlrpc/client'
class TestlinkAPIClient  

  def initialize(server_url,dev_key)
    @server = XMLRPC::Client.new2(server_url + "/lib/api/xmlrpc.php")
    @devKey = dev_key
  end

  def getProjectID
    args = {"devKey"=>@devKey}
    ret = @server.call("tl.getProjects",args)
    ret.each{|prj|
      if prj["active"] == "1" then
         return prj["id"]
      end
    }
    raise "ProjectID error"
  end

  def getTestPlanID(pid)
    args = {"devKey"=>@devKey,"testprojectid"=>pid}     
    ret = @server.call("tl.getProjectTestPlans",args)
    ret.each{|tp|
      tp.each{|id,val|
        if val["active"] == "1" then
          return val["id"]
        end
      }
    }
    raise "TestPlanID error"
  end

  def getBuildID(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getBuildsForTestPlan",args)
    ret.each{|val|
      if val["active"] == "1" then
        return val["id"]
      end
    }
    raise "BuildID error"
  end  

  def getTestSwiteID(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestSuitesForTestPlan",args)
  end  

  def getTestSuitesForTestPlan(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestSuitesForTestPlan",args)
  end  

  def getTestCasesForTestSuite(ts)
    args = {"devKey"=>@devKey,"testsuiteid"=>ts}     
    ret = @server.call("tl.getTestCasesForTestSuite",args)
  end  

  def getTestCasesForTestPlan(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestCasesForTestPlan",args)
  end  

  def getTestCaseIDByName(name)
    args = {"devKey"=>@devKey,"testcasename"=>name}     
    ret = @server.call("tl.getTestCaseIDByName",args)
  end  

  def getTestCaseIDByNameWithSuiteName(name,testsuitename)
    args = {"devKey"=>@devKey,"testcasename"=>name,"testsuitename"=>testsuitename}
    ret = @server.call("tl.getTestCaseIDByName",args)
  end  

  def reportTCResult(tpid,bid,tcid,status)
    args = {"devKey"=>@devKey,"testcaseid"=>tcid.to_i,"testplanid"=>tpid,"status"=>status,"buildid"=>bid}
    ret = @server.call("tl.reportTCResult",args)
  end  

end

SERVER_URL = 0
DEV_KEY = 1
TESTCASE_STATUS = 2
TESTCASE_NAME = 3
TESTSUITE_NAME = 4

if ARGV.size == TESTCASE_NAME + 1 or ARGV.size == TESTSUITE_NAME + 1 then

  client = TestlinkAPIClient.new(ARGV[SERVER_URL],ARGV[DEV_KEY])
  pid = client.getProjectID
  tpid = client.getTestPlanID(pid)
  bid = client.getBuildID(tpid)

  if ARGV.size == TESTSUITE_NAME + 1 then
    ret = client.getTestCaseIDByNameWithSuiteName(ARGV[TESTCASE_NAME],ARGV[TESTSUITE_NAME])
  else
    ret = client.getTestCaseIDByName(ARGV[TESTCASE_NAME])
  end
  tcInfo = ret[0]
  tcid = tcInfo["id"]
  ret = client.reportTCResult(tpid,bid,tcid,ARGV[TESTCASE_STATUS])
 	p ret
	
  if ret[0]["status"] == true then
    exit(0)
  else
    exit(1)
  end
else
  puts "USAGE #{File::basename($0)} serverURL dev_key status(p or f or b) testcase_name [testsuite_name]"
  exit(2)
end



remoteTestLink

remoteTestLink - Rubyの魔神 を含むブックマーク はてなブックマーク - remoteTestLink - Rubyの魔神 remoteTestLink - Rubyの魔神 のブックマークコメント

 remoteTestLinkというのを考えてみました。(未デバッグ)

 テストケース名、またはテストスイート名+テストケース名と試験結果を引数で与えると

 リモートのTestLinkに試験結果を設定するツールです。

 自動テストツール(xUnitWEB自動操作、アプリ自動操作ツール)の試験結果をTestLinkに設定するのに使います。


ファイル名:remoteTestLink.rb(未デバッグなので動きません)

使用方法:remoteTestLink サーバーURL dev_key テスト結果(p or f or b) テストケース名 [テストスイート名]

注意事項:テストケース名、テストスイート名は英数字でお願いします。日本語不可(文字化けするため)

     テストケース名、テストスイート名がスペースを含む場合は""で囲って下さい。


#!/usr/bin/env ruby 

require 'xmlrpc/client'
class TestlinkAPIClient  

  def initialize(server_url,dev_key)
    @server = XMLRPC::Client.new2(server_url + "/lib/api/xmlrpc.php")
    @devKey = dev_key
  end
  
  def getProjectID
    args = {"devKey"=>@devKey}
    ret = @server.call("tl.getProjects",args)
    ret.each{|prj|
      if prj["active"] == "1" then
         return prj["id"]
      end
    }
    nil
  end

  def getTestPlanID(pid)
    args = {"devKey"=>@devKey,"testprojectid"=>pid}     
    ret = @server.call("tl.getProjectTestPlans",args)
    ret.each{|tp|
      tp.each{|id,val|
        if val["active"] == "1" then
          return val["id"]
        end
      }
    }
    nil
  end

  def getBuildID(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getBuildsForTestPlan",args)
    ret.each{|val|
      if val["active"] == "1" then
        return val["id"]
      end
    }
    nil
  end  

  def getBuildID(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getBuildsForTestPlan",args)
    ret.each{|val|
      if val["active"] == "1" then
        return val["id"]
      end
    }
    nil
  end  

  def getTestSwiteID(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestSuitesForTestPlan",args)
  end  

  def getTestSuitesForTestPlan(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestSuitesForTestPlan",args)
  end  

  def getTestCasesForTestSuite(ts)
    args = {"devKey"=>@devKey,"testsuiteid"=>ts}     
    ret = @server.call("tl.getTestCasesForTestSuite",args)
  end  

  def getTestCasesForTestPlan(tpid)
    args = {"devKey"=>@devKey,"testplanid"=>tpid}     
    ret = @server.call("tl.getTestCasesForTestPlan",args)
  end  

  def getTestCaseIDByName(name)
    args = {"devKey"=>@devKey,"testcasename"=>name}     
    ret = @server.call("tl.getTestCaseIDByName",args)
  end  

  def getTestCaseIDByNameWithSuiteName(name,testsuitename)
    args = {"devKey"=>@devKey,"testcasename"=>name,"testsuitename"=>testsuitename}
    ret = @server.call("tl.getTestCaseIDByName",args)
  end  

  def reportTCResult(tpid,bid,tcid,status)
    args = {"devKey"=>@devKey,"testcaseid"=>tcid.to_i,"testplanid"=>tpid,"status"=>status,"buildid"=>bid}
    ret = @server.call("tl.reportTCResult",args)
  end  

end

SERVER_URL=0
DEV_KEY=1
TESTCASE_STATUS=2
TESTCASE_NAME=3
TESTSUITE_NAME=4

if ARGV.size == TESTCASE_NAME + 1 or ARGV.size == TESTSUITE_NAME + 1 then

  client = TestlinkAPIClient.new(ARGV[SERVER_URL],ARGV[DEV_KEY])
  pid = client.getProjectID
  tpid = client.getTestPlanID(pid)
  bid = client.getBuildID(tpid)

  if ARGV.size == TESTSUITE_NAME + 1 then
    ret = client.getTestCaseIDByNameWithSuiteName(ARGV[TESTCASE_NAME],ARGV[TESTSUITE_NAME])
  else
    ret = client.getTestCaseIDByName(ARGV[TESTCASE_NAME])
  end
  tcid = ret["id"]
  ret = client.reportTCResult(tpid,bid,tcid,ARGV[TESTCASE_STATUS])
  p ret
  if ret["status"] == true then
    exit(0)
  else
    exit(1)
  end
else
  puts "USAGE #{File::basename($0)} serverURL dev_key status(p or f or b) testcase_name [testsuite_name]"
  exit(2)
end

Cucumber

Cucumber - Rubyの魔神 を含むブックマーク はてなブックマーク - Cucumber - Rubyの魔神 Cucumber - Rubyの魔神 のブックマークコメント

http://d.hatena.ne.jp/moro/20081129/1227937311

プレーンテキストで書いたテスト仕様書からテストできるらしいけど、どこで入手できるのか?Railsでなくて普通のRubyでも使えるのかよくわからない。

追記

コメント欄でmoroさんに教えていただきました。以下のURLで情報が入手できるそうです。

http://github.com/aslakhellesoy/cucumber/wikis/home

moromoro2008/12/10 18:46CucumberはRailsなくても使えます。インストールやら何やらは英語ですが
http://github.com/aslakhellesoy/cucumber/wikis/home
にまとまってます

garyogaryo2008/12/10 19:36moroさんありがとうございます。Cucumberが熱いと人から聞いたのですが、情報が無くて困っていたところでした。

o298o2982011/08/29 21:41日本語の文字化けですがlib/functions/database.class.phpのconnectが成功したあたりでdbにset names utf8を投げてあげるとOKっぽいです(たぶんmysqlのみ)

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20081210