RSpec功能测试

(1)功能测试需要用到Capybara、DatabaseCleaner、Launchy

(2)Capybara使用例如click_link、fill_in和visit,来模拟用户在浏览器中和应用程序交互的过程

(3)功能测试应该用feature替换掉describe,用scenario替换it

例:

feature ‘User management‘ do
    scenario "adds a new user" do
        admin = create(:admin)
        visit root_path
        click_link ‘Log In‘
        fill_in ‘Email‘, wirh: admin.email
        fill_in ‘Password‘, with: admin.password
        click_button ‘Log In‘
        visit root_path
        expect do
            click_link ‘Users‘
            click_link ‘New User‘
            fill_in ‘Email‘, with: ‘[email protected]‘
            find(‘#password‘).fill_in ‘Password‘, with: ‘secret123‘
            find(‘#password_confirmation‘).fill_in ‘Password confirmation‘, with:‘secret123’
            click_button ‘Create User‘
        end.to change(User, :count).by(1)
        expect(current_path).to eq users_path
        expect(page).to have_content ‘New user created‘
        within ‘h1‘ do
            expect(page).to have_content ‘Users‘
        end
        expect(page).to have_content ‘[email protected]‘
    end
end

(4)find(‘#password‘)通过dom元素的id查找,我们还可以通过XPath路径查找,或者使用普通的文本查找,例如click_link ‘Users‘,如果没找到测试会报错

(5)within用来限定查找指定区域,within ‘h1‘表示只在<h1>标签中查找

(6)功能测试中,一个测试用例或场景中可以包含多个期望

(7)Capybara 2.0对DSL句法做了一些该表,用功能测试替换了请求测试,请求测试仅仅用于API接口测试

(8)feature和scenario仅用与功能测试,功能测试中用background对应before,given对应let,同时feature不能嵌套

(9)Launchy用于把功能测试当前渲染也面保存到一个临时文件夹,然后在系统默认浏览器中打开

(10)Launchy使用方法,在想看页面的地方加入save_and_open_page

(11)Capybara默认的Web启动是Rack::Test,无法处理JavaScript,可以使用Selenium来模拟JavaScript

(12)Selenium使用,只需要在需要js交互的scenario的block前加上js: true就可以了

(13)使用Selenium的同时,需要是用Database Cleaner处理数据库事务,为了将事务清理干净

(14)Database Cleaner配置:

spec/spec_helper.rb

RSpec.configure do |config|
    config.use_transactional_fixtures = false
    config.before(:suite) do
        DatabaseCleaner.strategy = :truncation
    end
    config.before(:each) do
        DatabaseCleaner.start
    end
    config.after(:each) do
        DatabaseCleaner.clean
    end
end
spec/support/shared_db_connection.db
class ActiveRecord::Base
    mattr_accessor :shared_connection
    @@shard_connection = nil
    def self.connection
        @@shared_connection || retrieve_connection
    end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
时间: 2024-10-06 10:15:46

RSpec功能测试的相关文章

数据库代码覆盖率测试功能测试建模压测profiling;

数据库管理系统(简称 DBMS)无疑是任何数据密集型应用程序当中最为重要的组成部分,其肩负着处理大量数据以及高复杂性工作负载的重任.然而,数据库管理系统本身却往往难于管理,因为其中通常包含数百种配置"旋钮",用于控制诸如缓存内存分配量以及存储介质数据写入频率等要素.各类企业一般需要聘请专业人士以协助相关调配工作,但对于大多数企业而言,此类专业人才的开价亦相当高昂.而实际上,DBA所面临的挑战还远不止这些. 而今天一则名为"OtterTune"的机器学习DBMS系统刷

用soapui进行功能测试(1)-结构

1. 测试结构 SoapUI将功能测试分为三个层次; TestSuites,TestCases和TestSteps. TestSuite是TestCase的集合,可用于将功能测试分组为逻辑单元.可以在soapUI项目中创建任何数量的TestSuits,以支持大量测试场景. TestCase是TestStep的集合,用于测试服务的某些特定方面.您可以添加任何数量的TestCase到一个TestSuite. TestSteps是soapUI中功能测试的"构建块".它们被添加到TestCas

(转载)关于web端功能测试的测试方向

一.功能测试 1.1链接测试 链接是web应用系统的一个很重要的特征,主要是用于页面之间切换跳转,指导用户去一些不知道地址的页面的主要手段,链接测试一般关注三点: 1)链接是否按照既定指示那样,确实链接到了该链接的界面 2)测试该链接所链接的页面是否真的存在 3)保证系统中没有单独存在的页面(即没有链接指向,只能通过正确的URL地址才能访问) PS:这里顺带说点关于协议的一些小知识,URL全称“统一资源定位符”,表示获取某一互联网资源的地址:而URI表示“统一资源标识符”,代表互联网上某一些资源

Rspec中describe和context不同

转自  http://lmws.net/describe-vs-context-in-rspec 学习rspec,不太理解describe和context.google了一下,找到这篇文章,感觉说的有些道理 1 在Rspec的世界里,我们经常看到人们使用descirbe代码块和context代码块 例如 1 describe "launch the rocket" do 2 context "all ready" do 3 end 4 5 context "

Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试

1. Collection集合的基本功能测试: 1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 /* 7 * 集合的由来: 8 * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 9 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识

Ruby之Rspec的报错解决

#enconding:utf-8 require 'selenium-webdriver' require 'rspec' describe "baidu main page" do it "should have 百度一下 button on the baidu main page"do dr = Selenium::WebDriver.for:ie url = 'www.baidu.com' dr.get url dr.find_element(:id,'su'

对rspec的“才知道”

对rspec没有系统的学习,所以总是"才知道"! 才知道 config/environments/test.rb文件中有两行代码很重要 # The test environment is used exclusively to run your application's # test suite. You never need to work with it otherwise. Remember that # your test database is "scratch

用soapui进行功能测试-TestSteps的使用

如前所述,TestSteps是soapUI中功能测试的核心构件;每个TestStep都执行一些步骤来验证要测试的功能. TestSteps默认是依次执行的,但是分支,循环甚至调用其他TestCases有几种可能性,在需要时可以进行复杂的测试.任何数量的TestSteps都可以添加到TestCase中;通过右键单击TestStep列表并选择添加/插入或按TestCase窗口中相应的按钮添加它们: 当选择TestStep时,其右键单击菜单会显示相应的操作,左下角的属性表显示可设置的相关属性,例如下面

Exchange Server 2016 独立部署/共存部署 (七)&mdash;&mdash; DAG功能测试

搭建好了DAG,又建好了DAG复制网络,最后又创建了副本数据库,只有这三部都完成了,那么恭喜你,你的Exchange 2016 DAG功能才算彻底完成,那么今天我们就来测试一下这个DAG功能的效果. 首先,我们看一下配置好的DAG功能的状态 由于主数据库在mail01,我们登录到mail02上,使用下述命令看一下复制状态 Get-MailboxDatabaseCopyStatus 从上图中我们可以看到位于 mail02上面的两个数据库MDB01和MDB02处于健康复制状态,且复制队列为0,说明实