一. 工具选择

  IDE:rubymine;http接口请求:Unirest,ruby单元测试框架:rspec

二.工程创建

  新建工程,在工程目录下,执行:rspec --init;初始化rspec工程

  

  可以看到工程下生成了两个文件.rspec和spec/rspec_helper.rb

  .rspec(用于命令行参数的配置)

  rspec_helper.rb(用于rspec工程的全局公共的一些配置)

三.编写测试脚本(以天气查询接口为例)

  rspec_helper.rb文件末尾中导入rspec,unirest的gems包,并定义参数导入方法

require 'unirest'
require 'rspec' def load_data(file)
load file
data
end

  创建data.rb文件用于存放脚本中的参数

def data
@weather_host = 'https://www.sojson.com'
@beijing = '北京'
@hangzhou = '杭州'
end

  创建测试文件weather_spec.rb(注意一定要以_spec为结尾,rspec默认是以这个来识别测试文件的)

describe '天气接口' do

  before(:all) do
load_data(__dir__+'/data.rb')
end it '查看北京天气' do
parameters = {city:@beijing}
response = Unirest.get(@douban_host+'/open/api/weather/json.shtml', parameters:parameters)
puts response.body
expect(response.body['city']).to match /北京/i
end it '查看杭州天气' do
parameters = {city:@hangzhou}
response = Unirest.get(@douban_host+'/open/api/weather/json.shtml', parameters:parameters)
puts response.body
expect(response.body['city']).to match /北京/i
end
end

这样一个简单的测试脚本就写好了

四.用例执行(类似于pycharm执行unittest)

  1. rubymine执行:
    单个用例

    或者

    单个测试集(下图方法或者脚本中选到用例外的区域右键执行)

  2. 命令行执行
    工程目录下,cmd执行rspec命令执行本所有用例,具体参数可以通过rspec -h查看

    参数可以写到.rspec文件中去

    这样就生成了rspec的测试报告(测试报告可以改源码自己优化或者jenkins集成的时候使用其他风格的报告)

五.注意点:

1.ruby安装时,设置环境变量(不然命令行下发有中文会认为是GBK编码,产生编码错误):

2.rubymine设置(不然返回结果有中文的时候,rubymine上执行结果显示出来是乱码的)

ruby做接口测试的更多相关文章

  1. Jsoup做接口测试

    最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jq ...

  2. jmeter做接口测试

    jmeter做接口测试有两种方式: 1. 2.

  3. postman+jenkins+newman做接口测试的持续集成

    为何要做接口自动化测试的持续集成? 1. 接口相对稳定,改动少,比起GUI自动化测试来说性价比更加高些,不容易出现GUI自动化那种掉到维护脚本的坑里. 2. 接口测试比较简单,一个规范的接口,测试只需 ...

  4. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

    简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...

  5. 用Jmeter+Badboy+Fiddler做接口测试

    用Jmeter+Badboy+Fiddler做接口测试 2016-12-05 目录: 1 简介2 Badboy录制3 Jmeter打开Badboy脚本4 用Fiddler抓请求,补充完善脚本5 测试中 ...

  6. 使用Robot Framework做接口测试

    http://chuansong.me/n/1858477 1.RF框架 1.1 RF框架介绍Robot Framework 框架是一个通用的测试框架,一直是由诺西网络(Nokia Siemens N ...

  7. 用postman做接口测试实例

    使用postman做接口测试,可以选择请求方式,可以直接输入参数和header,可以编写测试结果的代码,判断是否通过测试 下图为填写接口测试地址.填写接口的参数,点击send发送请求 其中,Param ...

  8. 使用postman做接口测试(一)

    参考大神的总结:https://www.cnblogs.com/Skyyj/p/6856728.html 一,先了解一下基础知识,虽然工作中没什么卵用,但背会了,可以显摆自己很专业的样子,以下内容来自 ...

  9. postman 做接口测试

    Postman 之前是作为Chrome 的一个插件,现在要下载应用才能使用. 以下是postman 的界面: 各个功能区的使用如下: 快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据, ...

随机推荐

  1. Python学习---深浅拷贝的学习

    浅拷贝copy(): 修改字符串,原来的不变: 更改列表,2个同时修改,以为列表里面还涉及一个指针的索引. 简单讲就是copy()只是简单地copy了第一层,第二层不被copy 深拷贝:  需要单独的 ...

  2. QA-IDEA中用maven配置项目无法加载JDBC

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver Im building Maven Java Web application and w ...

  3. 一个典型的后台软件系统的设计复盘——(二)如何id一个事物

    这个话题,可以从类与对象说起. Dog dog1 = new Dog(); 哪个是类,哪个是对象?这个问题搞不清楚,后面就无从说起了.然后两个程序员之间沟通说,那个狗有问题.除非两人很默契,不然另一人 ...

  4. July 20th 2017 Week 29th Thursday

    The darkness is no darkness with you. 有了你,黑暗将不再是黑暗. The darkness will not be driven out if we failed ...

  5. easyui学习笔记1—增删改操作

    最近公司要用easyui,这里自己看了官网几篇文章,遇到些问题,大多数的问题都是敲代码的时候笔误,其他有些地方确实需要注意一下,这里做些笔记. 1.在mysql中建好表之后修改id字段为递增字段,发现 ...

  6. 推荐一个可以把网页背景色调成护眼色的Chrome扩展应用

    程序员一天有10几个小时要面对着电脑,老是这种白晃晃的屏幕,谁的眼睛受得了? 我在网上逛了一圈,找到一个比较实用的Chrome扩展应用,可以一键实现将Chrome打开网页的背景色修改成护眼的豆沙绿,这 ...

  7. hdu-2685 I won't tell you this is about number theory---gcd和快速幂的性质

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2685 题目大意: 求gcd(am-1,an-1)%k 解题思路: 对于am-1 = (a - 1) ...

  8. C#使用DotNetZip对zip压缩包进行添加删除操作

    参考:http://stackoverflow.com/questions/9855155/how-can-i-delete-a-directory-in-a-zip-file-using-net D ...

  9. ResourceWarning: unclosed <socket.socket fd=864, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.100.x.x', 37321), raddr=('10.1.x.x', 8500)>解决办法

    将代码封装,并使用unittest调用时,返回如下警告: C:\python3.6\lib\collections\__init__.py:431: ResourceWarning: unclosed ...

  10. es6之类与对象

    一.类的定义 class Parent{ constructor(name="mukewang"){ this.name=name; } } let v_parant=new Pa ...