掌握Ruby DSL测试技巧
创始人
2024-06-15 20:10:46
0

我们在这里做了一个简单的代码示例,是关于Ruby DSL测试的一个小的实验。希望通过对这段代码的解读,大家可以进一步了解Ruby语言的含义。#t#

做了一个小小的demo。如果成型的话,测试人员就可以这样写TC了。
这是一段检查百度搜索,然后验证的小demo。(实际测试当然不会这样子了)

host "www.baidu.com"
port 80
page "s"
field "wd","足球"
field "sourceid","Mozilla-search"
get
check_content "足球"
check_content "体育"

把以上内容存到文件里,系统就可以自动运行了。
登陆baidu,查询“足球”,然后检查里面是否有“体育”。

Ruby DSL测试定义代码如下

 

  1. # To change this template, 
    choose Tools | Templates  
  2. # and open the template in the editor.  
  3. require 'open-uri'  
  4. class MyDSL  
  5. def self.dsl_accessor(*symbols)  
  6. symbols.each { |sym|  
  7. class_eval %{  
  8. def #{sym}(*val)  
  9. if val.empty?  
  10. @#{sym}  
  11. else  
  12. @#{sym} = val.size == 1 ? val[0] : val  
  13. end  
  14. end  
  15. }  
  16. }  
  17. end  
  18. def method_missing(sym, *args)  
  19. self.class.dsl_accessor sym  
  20. puts "method missing #{sym}, #{args}"  
  21. send(sym, *args)  
  22. end  
  23. attr_accessor :query  
  24. dsl_accessor :test  
  25. def self.load(filename)  
  26. dsl = new 
  27. dsl.instance_eval(File.read
    (filename), filename)  
  28. puts File.read(filename)  
  29. dsl  
  30. end  
  31. def self.loads(filename)  
  32. dsl = new 
  33. dsl.instance_eval(filename)  
  34. dsl  
  35. end  
  36. def field(field_string,value)  
  37. puts "#{field_string}=#{value}"  
  38. if ! @query  
  39. @query="#{field_string}=#{value}" 
  40. else  
  41. @query="#{@query}&#{field_string
    }=#{value}" 
  42. end  
  43. puts @query  
  44. end  
  45. def get  
  46. puts 'get'  
  47. @request="http://#{@host}:#
    {@port}/#{@page}?#{@query}" 
  48. puts @request  
  49. @result=open(@request)  
  50. end  
  51. def check_content(s)  
  52. tmp=@result.read.scan(s).uniq  
  53. if tmp.length!=0  
  54. puts "found"  
  55. puts tmp  
  56. else  
  57. puts "not found"  
  58. end  
  59. end  
  60. def post  
  61. puts 'post'  
  62. end  
  63. end#class MyDSL  
  64. dsl=MyDSL.loads('  
  65. host "www.baidu.com"  
  66. port 80  
  67. page "s"  
  68. field "wd","xxxxxxx"  
  69. field "sourceid","Mozilla-search"  
  70. field "yy",0.222  
  71. parameter 0.55,2.1,[2,3,4],
    {:a=>7,:b=>8,:c=>9}  
  72. get  
  73. check_content "xxx"  
  74. check_content "ffffffffffffff"  
  75. ')  
  76. p dsl  
  77. p dsl.instance_variables 

以上这段代码示例就是Ruby DSL测试的相关方法介绍。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...