应用Selenium和Ruby进行面向领域的Web测试[2]

发表于:2010-05-12来源:作者:点击数: 标签:seleniumSeleniumwebWebWEB
应用 Selenium 和 Ruby 进行面向领域的 Web测试 [2] 软件测试 2. Assertation 只有行为还构不成测试,我们还要判断行为结果,并进行一些断言。简单回顾一下上面的例子,会发现还有一些很重要的问题没有解决: 我怎么判断登录成功了呢?我如何才能知道真的是处

  应用SeleniumRuby进行面向领域的Web测试[2]   软件测试

  2. Assertation

  只有行为还构不成测试,我们还要判断行为结果,并进行一些断言。简单回顾一下上面的例子,会发现还有一些很重要的问题没有解决: 我怎么判断登录成功了呢?我如何才能知道真的是处在登录页面了呢?如果我调用下面的代码会怎样呢?

  $selenium.open url_of_any_page_but_not_login

  on LoginPage {}

  因此我们还需要向page object增加一些断言性方法。至少,每个页面都应该有一个方法用于判断是否真正地达到了这个页面,如果不处在这个页面中的话,就不能进行任何的业务行为。下面修改LoginPage使之包含这样一个方法:

  LoginPage.class_eval do

  include Test::Unit::Asseration

  def visible?

  @driver.is_text_present() && @driver.get_location ==

  end

  end

  在visible?方法中,我们通过对一些特定的页面元素(比如URL地址,特定的UI结构或元素)进行判断,从而可以得之是否真正地处在某个页面上。而我们目前表达测试的基本结构是由on方法来完成,我们也就顺理成章地在on方法中增加一个断言,来判断是否真的处在某个页面上,如果不处在这个页面则不进行任何的业务操作:

  def on page_type, &block

  page = page_type.new $selenium

  assert page.visible?, "not on #{page_type}"

  page.instance_eval &block if block_given?

  page

  end

  这个方法神秘地返回了page对象,这里是一个比较取巧的技巧。实际上,我们只想利用page != nil这个事实来断言页面的流转,比如,下面的代码描述登录成功的页面流转过程:

原文转自:http://www.ltesting.net