What is the real difference between shared_examples and shared_context ? My observations : I can test same things using both (i.e. with shared_examples or shared_context) But some of my other tests fails if I use later one. Observation #1 : I compare…
文档 https://relishapp.com/rspec/rspec-core/v/2-5/docs/helper-methods/let-and-let 从上面文档中得出 let 1 只会在一个example(一个it 代码块)中调用一次,并不会在多个example中共享 , 2 必须被显示调用,不会被隐世提前调用 let! 1 每个example执行前被隐式自动调用 2 在其他example中返回已经调用的内存中的引用,不会重新调用 ,意味着在多个example中,后面的example可…
转自  http://lmws.net/describe-vs-context-in-rspec 学习rspec,不太理解describe和context.google了一下,找到这篇文章,感觉说的有些道理 1 在Rspec的世界里,我们经常看到人们使用descirbe代码块和context代码块 例如 describe "launch the rocket" do context "all ready" do end context "not ready…
bundle exec rspec spec/ /home/wuxj/Prac/rrprac/sample_app/spec/spec_helper.rb::in `block in <top (required)>': uninitialized constant Capybara (NameError) from /.rvm/gems/ruby-/gems/rspec-core-/lib/rspec/core.rb::in `configure' from /sample_app/spec…
这里讲了如何安装rspec,安装使用rspec. 下面介绍一下rspec中常见的使用方法. 下面是一个最简单的测试用例,判断true是不是等于true,should_be是旧的用法,新用法推荐使用expect() it "is true when true" do true.should be_true end#新用法 it "is true when true" do expect(true).to be_true end 一,测试models中的方法 1,测试实…
我们要把应用各组件放在一起做集成 测试,这样才能保证模型和控制器之间能够良好契合. 在 RSpec 中,这种测试称为功能测试(feature spec),有时也称为验收测试(acceptance test)或集成测试(integration test).这种测试的作用是确保 软件作为一个整体能按预期使用. Capybara库 (8000star),用来定义功能测试的步骤,模拟真实用户的使用过程. 5.1已经自带这个库,因为系统测试依赖它. Rails5.1 框架增加了系统测试.用的是MiniTe…
#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'…
gem "pundit" Include Pundit in your application controller: class ApplicationController < ActionController::Base include Pundit protect_from_forgery end Optionally, you can run the generator, which will set up an application policy with some…
书要反复提及<哪里有天才>在说,大多数所谓的天才是通过反复刻意练习获得. 当你的练习时间达到10000几个小时后,.你将成为该领域的专家. 近期在学习rails怎样实现RESTful Web Service. 自己想给自己设计一个练习的模板,进行重复练习. 开发过程採用的是TDD的方式进行开发. 练习背景: 我们涉及三个Domain对象,Products.Orders.Payment 1.新建projectrails-rest-practice rails new rails-rest-pra…

BDD

Binding business requirements to .NET code http://www.specflow.org/ 行为驱动开发 BDD:Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者.QA和非技术人员或商业参与者之间的协作.BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应.在过去数年里,它得到了很大的发展. 2009年,在伦敦发表…
eeting-up app: 完成一个需求: 完成:https://github.com/chentianwei411/meeting-up-app 第四步实现API接口 Add api base and user controller 1. 生成controller rails g controller Api::V1::BaseController rails g controller Api::V1::UsersController 让Api::V1::UsersController < …
本章,你将扩大你的模型测试,测试整个Rails栈的逻辑(从请求到回复,使用端到端测试). 使用Capybara来帮助写end-to-end 测试. 好的测试风格,包括端到端测试,大量目标明确的单元测试,和相关的一些覆盖中间代码的测试. 开始写Rails Requirements-gathering,分析需求,是一整本书的内容.本节假设是写一个自用的小程序,因此无需military-grade precision. 列出非正式的需求单子: A user can enter a task, asso…
首先,测试人员应该参与软件开发的全流程,这一点已经是软件行业的共识了. 其次,新技术.新框架.新思路不断涌现的今天,测试人员除了传统的功能测试,也要不断与时俱进,主动承担起自动化测试.性能测试等.除了更多参与软件流程,测试人员更要以自己的技术能力证明自己的价值! 再次,随着敏捷开发模式的不断迭代发展,敏捷开发的技术和管理模式,已经深入到传统和新兴的各个软件公司. 敏捷开发,除了快速迭代的项目管理模式,还带来了一系列技术实践层面的新思想.新概念.而且,新思路.新概念.新模式也在敏捷开发的一次一次迭…
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架.使用 Django,我们在几分钟之内就可以创建高品质.易维护.数据库驱动的应用程序. Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美... info:更多OpenERP信息url:https://www.oschina.net/p/o…
在通过ruby+webdriver+rspec做自动化测试的时候,为了便于观察用例执行情况,我基本上都会用 rspec XX.rb --format doc -o result.log 如果遇到失败的情况,我们想做一些截图操作,并且把截图信息也打印到报告中怎么办呢?通过查看了rspec打印日志到报告中的源码,了解到了一个方法可以打印日志到rspec的报告文件中. #设置打印方法 def output RSpec.configuration.reporter end #自动截图功能 def sav…
首先要想生成类似于home_path,about_path之类的方法,必须在路由文件中添加对应方法: match '/help',to:"static_pages#help",via:'get' get '/about',to:'static_pages#about' get '/contact',to:'static_pages#contact' 用match和get都可以,但是实际在rspec测试中你会发现还是报找不到路径: Failure/Error: visit contact…
1.安装rspec 2.基本构造 rspec用关键字describe和it,所以我们可以象正常会话一样去表达一个想法. describe方法创建了一个用例组,在describe所在的代码块里,你可以用it方法来申明一个用例. 3.嵌套的用例组 你也可以通过describe和context来申明一个嵌套的用例组 4.别名 你可以声明用例组用describe或者context,但是最高层必须是describe才可行. 你也可以用it,specify,example的任意一个来声明一个用例. 5.共享…
Don't Repeat Yourself. • 把操作步骤提取到辅助模块中;✅ • 通过let复用测试中的实例变量;✅ • 把通用的设置移到共享的情景中;⚠️(不喜欢) • 在RSpec和rspec-rails提供的匹配器之外,自定义匹配器;⚠️未学习 • 把多个测试用例中的期望合到一个测试用例中;✅aggregate_failure do ..end • 判断何时可以抽象,何时应该写在测试中. ❌,老手才会这么做. 8.1 support module 拉下来的分支不知道什么原因又错误.自己…
It’s pretty common to have multiple tests that are nearly the same. In one app, we support bidding on both online and hammer auctions (auctions with people physically present). They’re separate controllers but with a lot of shared code and behavior.…
如果你手工测试Restful 服务将会是一件非常单调乏味的事情.当然,目前有一些浏览器插件可以通过可视化的界面帮助你手工测试,例如postman.rest console,但是每次系统版本更新,你都需要去手动执行大量的测试,显然这种方式不是非常实用.Ruby拥有许多出色的gem包,你可以使用它们完成这项枯燥的工作.其中RestClient是我比较喜欢的一个.结合ruby的rspec框架使用RestClient可以编写非常强大的测试脚本.假如Github想让你测试他们的Restful API.你可…
找到gems\1.9.1\gems\rspec-core-2.14.3\lib\rspec\core\formatters\snippet_extractor.rb文件中的第27行: 在这边记录一下,防止以后再遇到... 出现这个原因是因为ruby文件用utf-8格式的,但是源码都是GBK处理的,找到\lib\ruby\gems\1.9.1\gems \rspec-core-2.14.3\lib\rspec\core\formatters下面的snippet_extractor.rb文件,把 l…
一,安装ruby. 二,运行命令,安装rspec的gem包: gem install rspec 会看到如下的结果: Fetching: rspec-core-2.14.7.gem (100%) Fetching: diff-lcs-1.2.5.gem (100%) Fetching: rspec-expectations-2.14.5.gem (100%) Fetching: rspec-mocks-2.14.6.gem (100%) Fetching: rspec-2.14.1.gem (1…
Selenium WebDriver + Grid2 + RSpec之旅(四) ----通过RSpec编写测试用例 自动化测试和手工测试一样,是要有测试用例,有检查点和测试结果的,接下来我们通过RSpec来编写一个测试用例. RSpec的安装在准备篇中已经介绍过了,这边就不再介绍了.下面就开始用例编写 用例编写 1.在工作目录下新建一个spec的文件夹 2.打开UatrlEdit,编写代码如下: #encoding:utf-8 require 'selenium-webdriver' requi…
Selenium WebDriver + Grid2 + RSpec之旅(六) ----多浏览器的并行执行 由于浏览器的发展,浏览器种类繁多.为了保证系统能在各种浏览器上叱咤风云,减少测试人员的测试工作量,就要保证测试脚本支持多浏览器,但是一条测试用例逐个对浏览器进行执行的话又会消耗太多的时间,下面就介绍一下多浏览器并行执行的方法. 再回头看一下前面介绍过的测试用例脚本,会发现测试用例中的浏览器是指定的firefox,如果要测试IE,CHROME浏览器,去修改测试用例脚本?还是把脚本复制几份?方…
Selenium WebDriver + Grid2 + RSpec之旅(五) ----面向对象设计用例 前几节讲了怎么一步一步的从零开始到编写出一个简单的测试用例,这一节将要讲一下怎么让测试用例变得健壮,易阅读,易维护.那就是通过面向对象的方式,再加上逻辑和数据分离的方式来处理,这个才是自动化测试的核心思想. 设计思路 设想对登录进行手工测试,会想到一些测试用例(验证错误的用户名正确的密码:用户名和密码为空直接点击登陆按钮.等等),如果每个用例都要写一套代码的话,会发现有些地方出现代码重复,不…
Selenium WebDriver + Grid2 + RSpec之旅(二) ----Grid2的配置 为什么要使用Selenium-Grid 分布式运行大规模的TestCase 能够通过一个中央节点,很容易的运行不同OS上的不同Browser 最小化对Grid的维护时间,充分利用虚拟设备 减少测试人员的工作量,提高测试效率 Selenium-Grid的部署与启动 Hub:总控节点,连接调用Node,负责分配用例到对应的Node节点所在的执行器上Node Node:负责执行TestCase,启…
元数据 RSpec-core存储元数据哈希每实例和组,其中包含他们的描述,声明的位置等等,这个hash控制很多RSpec核心的功能,包括输出格式化程序(访问描述和位置),和before,after钩子. describe_class方法 当一个class中存在describe方法,您可以从一个例子使用的described_class方法,他是对example.metadata[:described_class]这个方法的一个封装.用法如下 rspec命令 安装了rspec后,当你要用它的时候rs…
Selenium WebDriver + Grid2 + RSpec之旅(一)             ----准备篇 前言 在Web 2.0 应用中,在浏览器种类盛行的时代,我们在测试过程中不仅要模仿不同的用户行为,还要包括不同的系统,不同的浏览器中的操作.在这种情况下,我们需要新的方法与工具来解决我们遇到的难题.用Selenium WebDriver + Grid2来实现多种浏览器功能自动化测试和并发性测试.将测试人员从繁杂的手动测试中解放出来,专注于结果分析和问题解决.(同志们!你们解脱啦…
在用rspec做测试的时候,出现了如下一句错误: You don't have bcrypt-ruby installed in your application. Please add it to your Gemfile and run bundle install 原来在Gemfile中写的是: gem 'bcrypt-ruby' 因为后面没指定版本号所以默认安装的是最新版,但是不巧的是在bundle install时提示bcrypt-ruby已被改名为bcrypt,所以安装的gem名字是…
rails项目没有使用默认的单元测试包,而是使用了rspec-rails来测试. 按照文档说明首先生成对应的测试文件: rails generate integration_test xxx invoke rspec create spec/requests/xxx.rb 然后在spec/spec_helper.rb中添加以下一句: RSpec.configure do |config| . . . config.include Capybara::DSL end 最后使用以下测试命令: bun…