摘要: 今天在读rspec源代码的时候发现rspec会自动去load一些以_spec结尾的文件作为example 和 example group。在这里顺便说一下ruby里load和require的区别。load: 加载文件,比如load 'example.rb',不放重复加载require: 加载文件,比如load 'example',只加载1次代码说明: 新建2个文件。test.rb, file_to_be_load.rbfile_to_be_load.rbputs 'It is in ' + __FILE__test.rbrequire ' 阅读全文
posted @ 2011-11-05 18:36 乙醇 阅读(790) 评论(0) 推荐(1) 编辑
摘要: 在使用watir-webdriver进行测试的时候我们会发现启动1个Firebox浏览器需要很长的一段时间。那么这个时间到底有多长呢?下面的代码可以测试一下。# encoding: utf-8 t_start_require = Time.newrequire 'rubygems'require 'watir-webdriver't_end_require = Time.new require_time = t_end_require - t_start_requireputs 'require_time ' +require_time.to_s 阅读全文
posted @ 2011-11-05 18:30 乙醇 阅读(2461) 评论(1) 推荐(1) 编辑
摘要: 观察者模式应该是最容易理解的设计模式了。考虑这个例子。作为雇员的你当工资发生改变的时候你会想到什么?请朋友吃饭?给女朋友买衣服?给自己买台Iphone4?很可惜,你所增加的那点可怜的工资恐怕难以支持你做以上这些事情吧。当你工资增加之后,你的个人所得税理所当然的增加了;你的住房公积金提高了;你的社保不出意外也要多交了。剩下来的那点应该也不够塞牙了。这个理应是喜剧的杯具中实际上包含了观察者模式的基本概念。在这个例子中,社保局、税务局实际上是你的观察者。当你的工资发生变化时,你(一般来说是你的雇主)会通知有关部门,以便有关部门能够根据你的收入调整税收或社保政策。下面的代码(使用ruby1.9实现,1 阅读全文
posted @ 2011-11-05 18:25 乙醇 阅读(1681) 评论(0) 推荐(1) 编辑
摘要: 好像网上一直没有比较详细的中文资料来讲述如何使用cakephp来实现i18n。正好昨天被逼无奈的将代码中的提示中文化了一把,略有心得,简而志之。中文化cakephp有如下几步:1,在代码中使用__()函数。在需要进行中文化的地方使用__()函数,如下所示:__('This is the string i need to translate', true);将第2个参数置为ture,这样如果有相对应的翻译词条的话那么翻译过的词条将输出,否则会输出未翻译的词条。2,执行i18n task如果你的代码中存在__()函数的话,你就可以执行i18n task来进行代码扫描了。i18n t 阅读全文
posted @ 2011-11-04 20:24 乙醇 阅读(1410) 评论(0) 推荐(1) 编辑
摘要: Ruby核心库中的Enumerable模块可能听起来很陌生,但实际上大家是应该经常接触到的。这里简单总结一下Enumerable模块的常用方法。The Enumerable mixin provides collection classes with several traversal and searching methods, and with the ability to sort. The class must provide a method each, which yields successive members of the collection. If Enumerable# 阅读全文
posted @ 2011-10-30 18:29 乙醇 阅读(1800) 评论(0) 推荐(2) 编辑
摘要: 下面的代码可以帮助你实现firefox测试运行时代理配置的功能。大概的思路是通过设置profile对象来进行配置。profile = Selenium::WebDriver::Firefox::Profile.new# 新建了url为proxy.org,端口为8080的htpp代理proxy = Selenium::WebDriver::Proxy.new(:http => "proxy.org:8080")profile.proxy = proxy driver = Selenium::WebDriver.for :firefox, :profile => p 阅读全文
posted @ 2011-10-30 13:08 乙醇 阅读(2479) 评论(1) 推荐(0) 编辑
摘要: 如何安装webdriver chrome浏览器支持在gem 安装完watir-webdriver后,默认情况下chrome浏览器的支持是没有安装上的。 所以如果要使用webdriver测试chrome的话,我们需要手动安装chrome支持。Requirements The ChromeDriver controls the browser using Chrome's automation proxy framework. Consequently, the ChromeDriver is only compatible with Chrome version 12.0.712.0 o 阅读全文
posted @ 2011-10-29 10:15 乙醇 阅读(2736) 评论(0) 推荐(0) 编辑
摘要: 昨天在stack overflow上问了2个关于Rspec源码的问题,结果由于表意不清加之问题含糊被老外鄙视了一遍。但是没有想到的是,竟然还是高人非常清楚的问答了出来。 其中一个问题是这样的: class OptionParser < ::OptionParser这句代码究竟是什么意思?原来这句话的作用是定义1个OptionParser类,其集成至ruby核心库的OptionParser。这句话里面的::表示强制使用核心库的namespace。 阅读全文
posted @ 2011-10-29 10:12 乙醇 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;super()带括号则表示调用父类的同名函数,但是不传入任何参数;演示代码如下:class SParent def initialize *args args.each {|arg| puts arg} endend class SChild < SParent def initialize a, b, c super endend a... 阅读全文
posted @ 2011-10-29 10:03 乙醇 阅读(687) 评论(0) 推荐(1) 编辑
摘要: 关于firefox的profile,这里不想叙述太多,只说一点,那就是通过profile我们可以去修改测试运行时firefox的具体配置,对于firefox的自动化测试来说是必须掌握的一个知识点。使用selenium-webdirver操作profile的代码如下:# 使用已存在profile进行测试# 由于profile里保存有cookie等信息# 因此可以通过该技术来保持用户的登录态 driver = Selenium::WebDriver.for(:firefox, :profile => "my-existing-profile")也可以在代码中动态的更改已存 阅读全文
posted @ 2011-10-29 09:46 乙醇 阅读(3299) 评论(4) 推荐(1) 编辑

友情链接 虫师的blog  测试教程网  重定向科技  省略