闰年程序

leap_year_spec.rb
require_relative './leap_year'
describe "Leap Year" do 
 it "2016 is leap year" do 
 result = is_leap_year?(2016) # 把 2016 传进去  
 expect(result).to eq(true) # 检查结果应该要是 true  
 end 
 it "2017 is common year" do 
 result = is_leap_year?(2017) # 把 2017 传进去  
 expect(result).to eq(false) # 检查结果应该要是 false  
 end 
end

describe "text" do ... end

it "text" do

result = ...

expect(result).to eq(...)

end


> book.map! do |x|
>     x = x - 1
>     puts x     #map!方法内部不能有输出的语法,如p, puts, print ⚠️
> end
1
2
 => ❌ [nil, nil]

有一家书店在卖哈利波特书籍系列,每一本书定价 $100 元。买两本不同的书可以打5% 的折扣、买三本不同的书可以打 10% 的折扣、买四本不同的书可以打 20%。如果买到五本可以打到 25% 的折扣。请写出一个方法可以计算价格。

前几个测试案例会是这样:

  • 第一集买 1 本,总价应为 100 元
  • 第一集买 1 本、第二集买 1 本,总价应为 190 元
  • 第一集买 1 本、第二集买 2 本,总价应为 290 元 (要不同集数才有折扣,所以第二集第二本没有折扣)

请继续完成。

答案:(靠!,花了2小时。测试不难学,关键是让自己的代码通过测试。)

#buy_book.rb 

def book_discount(book)

  total = 0
  while book != []       # book存储未结算的书籍。
    book.delete_if{|x| x == 0 }  #删除不买的集:删除0(首次输入可能是[0,0,0,0,1])
    min_num = book.min      # 最多有5集,找出这5集中,订购的最少的那一集的本数。
    s = book.size      # 你准备买多少集?
    discount = 1      # 设定一个折扣变量
    case s
    when 1
      discount = 1
    when 2
      discount = 0.95
    when 3
      discount = 0.9
    when 4
      discount = 0.8
    when 5
      discount = 0.75
    end

# total:结算当前获得最优的折扣的套集。

    total += 100 * s * discount * min_num  
    # 下面两行代码目的:删除已经结算的套籍。
    book.delete_if{|x| x == min_num }
    book.map! do |x|
      x - min_num
    end
  end
  return total
end

####buy_book_spec.rb

require_relative './buy_book'   #不加.rb
describe "Buy Book" do
  it "[2,2,2,2,2]" do
    result = book_discount([2,2,2,2,2])
    expect(result).to eq(750)
  end
  it "[1,2,3,0,0]" do
    result = book_discount([1,2,3,0,0])
    expect(result).to eq(560)
  end
  it "[2,3,1,1,1]" do
    result = book_discount([2,3,1,1,1])
    expect(result).to eq(665)
  end
  it "[10,0,0,0,1]" do
    result = book_discount([10,0,0,0,1])
    expect(result).to eq(1090)
  end
end

3-23 Rspec自动化测试(开始练习)的更多相关文章

  1. Python学习笔记(二):数据类型

    一.python中的数据类型 python中的数据类型包括:整型.浮点型.布尔型.字符串类型 整型(int)和浮点型(float) Python中的整型只有int,没有short.long:浮点型fl ...

  2. Rails工程实战记录

    项目git:https://github.com/yixiaoyang/ruby 为熟悉Rails的基本特性创建的工程,本博文仅作更新记录. (1)2013.10.1-2013.10.5 Ruby基本 ...

  3. 接口自动化测试平台 http://120.79.232.23

    接口自动化测试平台 http://120.79.232.23 T Name Latest commit message Commit time .idea 修改自动化用例修改接口时,其他接口信息被删的 ...

  4. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏

    1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...

  5. 23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生

  6. Selenium 2自动化测试实战23(窗口截图)

    一.窗口截图 WebDriver提供了截图函数get_screenshot_as_file()来截取当前窗口. # -*- coding: utf-8 -*- from selenium import ...

  7. python自动化测试(3)- 自动化框架及工具

    python自动化测试(3) 自动化框架及工具 1   概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...

  8. APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

    前言     前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相 ...

  9. selenium2 Webdriver + Java 自动化测试实战和完全教程

    selenium2 Webdriver + Java 自动化测试实战和完全教程一.快速开始 博客分类: Selenium-webdriverselenium webdriver 学习selenium ...

随机推荐

  1. Java设计模式应用——策略模式

    对于相同类型相同类型的输入输出,在不同场景下需要使用不同的逻辑处理,则可以使用策略模式. 比如排序算法有堆排序,快速排序,冒泡排序,选择排序等.为了保证排序效率,需要在不同场景下选择不同排序算法,这时 ...

  2. redis 主从同步搭建

    redis 一主二从 1.redis 安装 安装教程:https://www.cnblogs.com/zwcry/p/9505949.html 2.redis主从 1)创建主从目录 mkdir /us ...

  3. Python3 打开 https 链接,异常:“SSL: CERTIFICATE_VERIFY_FAILED”

    Python3 打开 https 链接,异常:“SSL: CERTIFICATE_VERIFY_FAILED” 一.问题 Python2.7.9 之后,当使用urllib.urlopen打开一个 ht ...

  4. dom4j解析xml报"文档中根元素后面的标记格式必须正确"

    今天,在写个批量启动报盘机的自动化应用,为了简化起见,将配置信息存储在xml中,格式如下: <?xml version="1.0" encoding="UTF-8& ...

  5. python监控端口脚本[jkport2.0.py]

    #!/usr/bin/env python #!coding=utf-8 import os import time import sys import smtplib from email.mime ...

  6. 三步搞定 opencv 初始环境设定

    一.设定bin的初始位置:比如我的电脑 D:\安装程序\opencv\build\x86\vc10\bin      H:\生产力工具\opencv\build\x86\vc10\bin D:\安装程 ...

  7. 20145227鄢曼君《网络对抗》Web基础

    20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...

  8. Python3基础 __getattr__ 访问不存在的属性时,新增提示功能

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. vim的几个插件mark.vim ctrlp.vim等

    开发过程中, 保证语义的前提下, 尽量使用 短的 变量名: 如: 用 $map来代替 $condition, 因为在书写长的变量名的时候, 容易写错, 而排查错误, 还不容易找出来. vim在浏览和排 ...

  10. 蚂蚁感冒|2014年蓝桥杯B组题解析第八题-fishers

    蚂蚁感冒 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁中,有1只蚂 ...