Ruby Selenium Webdriver - 配置Sauce Labs通过/失败

时间:2014-03-24 18:32:38

标签: ruby selenium webdriver saucelabs

Sauce Labs有一个特定的:passed选项,可用于报告测试的通过/失败状态 - (https://saucelabs.com/docs/additional-config)。

我似乎无法理解如何在Ruby中实现这一目标。

我尝试在中创建一个全局变量($status),该变量用作Sauce Labs测试:passed值的占位符。然后在拆解期间将占位符更新为适当的值。

在此示例中,测试将始终返回Fail

在我的

$status = false

在我的设置

caps[:passed] = $status

拆解

def success
  $status = true
end

def error
  $status = false
end

我假设设置期间caps[:passed] = $status 设置且无法更改。

我不知道如何在作业完成后更新:passed状态。

2 个答案:

答案 0 :(得分:0)

直接来自Sauce Labs found here的例子。

require 'rubygems'
require "test/unit"
require 'selenium-webdriver'

class ExampleTest < Test::Unit::TestCase
    def setup
        caps = Selenium::WebDriver::Remote::Capabilities.firefox
        caps.version = "5"
        caps.platform = :XP
        caps[:name] = "Testing Selenium 2 with Ruby on Sauce"

        @driver = Selenium::WebDriver.for(
          :remote,
          :url => "http://username-string:access-key-string@ondemand.saucelabs.com:80/wd/hub",
          :desired_capabilities => caps)
    end

    def test_sauce
        @driver.navigate.to "http://saucelabs.com/test/guinea-pig"
        assert @driver.title.include?("I am a page title - Sauce Labs")
    end

    def teardown
        @driver.quit
    end
end

答案 1 :(得分:0)

我可以使用sauce_whisk gem(https://github.com/saucelabs/sauce_whisk

来完成此任务

&#34; SauceWhisk提供了一个&#34; ActiveRecord&#34; Sauce Labs RESTful API的样式客户端。如果您没有使用Sauce Gem,并且想要一种很好的方式与我们的API进行交互,请尝试一下。&#34;

driver设置期间检索 SauceLabs作业ID - 类似于@job_id = @driver.instance_variable_get("@bridge").instance_variable_get("@session_id")

然后在拆解期间,我可以使用SauceWhisk::Jobs.pass_job @job_idSauceWhisk::Jobs.fail_job @job_id来设置作业的状态。