zoukankan      html  css  js  c++  java
  • 理解 capybara

    [capybara介绍]

    capybara 的功能是模拟用户对界面的操作行为,在基于底层driver的基础上,提供一套统一的 界面交互api,如visit, click_link等。

    底层的driver有很多,可以是完全打开浏览器方式的driver(如:selenium-webdriver),也可以是基于headless webkit 的 driver(如:capybara-webkit, poltergeist)

    虽然capybara经常用在测试中,测试的时候用的最多的是rack-test driver,这样测试速度快,但是capybara也可以单独使用,模拟用户的浏览器界面操作,因此可以进行一些自动登录等功能。

    [使用 capybara 进行测试 ]

    capybara对于 rack app的测试非常方便,只要设置一个app就可以

    capybara与cucumber集成

    require 'capybara/cucumber'
    Capybara.app = MyRackApp

    引入capybara/cucumber文件,主要是在cucumber中加入capybara的DSL,这样可以直接在step中写visit等,然后利用cucumber before 等钩子加入一些功能,如对cucumber场景@javascript tag功能的支持,改功能只是切换driver,如从rack-test driver切换到selenium或其他的支持js ajax等driver

    Capybara.app = MyRackApp 是设置要测试的应用rack endpoint,如果是使用Rails, 默认就是Rails.application,在driver为rack-test的情况下,是直接通过与Rack interfaces交互,达到测试的目的,如果是其他的driver,则需要在同一个进程中单独启动一个应用的服务线程,就像是你通常启动rails s一样,因此会有两个不同的线程在一个测试中,所以这就会涉及到数据库事务的访问问题,在一个线程中创建的数据,在事务没有提交的情况下,在另一个线程中是访问不到的。因此在设置为每个测试,事务回滚的情况下,就会遇到问题。可以用database_cleaner这个gem, 设置清空数据库的strategy 为 truncation。对database_cleaner暂不讲解太多。

    capybara与rspec集成

    require 'capybara/rspec'

    如果是用Rails,则可以将测试文件放在spec/features目录下,因为capybara/rspec默认将DSL, Matcher等扩展到 feature 类型的测试中,像model, controller这些是没法使用capybara的dsl的。如果不用Rails,则需要在describe 或 it 中加上 :type => :feature选项

    [单独使用capybara,作为脚本使用]

    require 'capybara'
    require 'capybara/dsl'
    
    Capybara.default_driver = :webkit
    
    module MyModule
      include Capybara::DSL
    
      def login!
        within("//form[@id='session']") do
          fill_in 'Login', :with => 'user@example.com'
          fill_in 'Password', :with => 'password'
        end
        click_link 'Sign in'
      end
    end

    所以知道这些以后,capybara能对远程的server进行测试也不足为怪了

    Capybara.current_driver = :selenium
    Capybara.app_host = 'http://www.google.com'
    ...
    visit('/')
  • 相关阅读:
    vue实现左右两列竖直分别滑动,且双向关联的选项卡(一)
    根据对象的某个字段(值为数字)排序
    如何将data中字符传的换行正常显示
    HBase集群搭建部分配置
    YARN详解
    常用查询函数
    分桶表
    hive分区表
    xsync分发脚本
    ssh免密登录
  • 原文地址:https://www.cnblogs.com/kamechen/p/3146433.html
Copyright © 2011-2022 走看看