国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

香港云服务器
服務(wù)器之家 - 腳本之家 - Ruby - Ruby配置rspec和RestClient來檢測(cè)服務(wù)器

Ruby配置rspec和RestClient來檢測(cè)服務(wù)器

2020-05-03 12:10腳本之家 Ruby

這篇文章主要介紹了Ruby配置rspec和RestClient來檢測(cè)服務(wù)器的方法,包括JSON文件的相關(guān)配置,需要的朋友可以參考下

如果你手工測(cè)試Restful 服務(wù)將會(huì)是一件非常單調(diào)乏味的事情。當(dāng)然,目前有一些瀏覽器插件可以通過可視化的界面幫助你手工測(cè)試,例如postman、rest console,但是每次系統(tǒng)版本更新,你都需要去手動(dòng)執(zhí)行大量的測(cè)試,顯然這種方式不是非常實(shí)用。Ruby擁有許多出色的gem包,你可以使用它們完成這項(xiàng)枯燥的工作。其中RestClient是我比較喜歡的一個(gè)。結(jié)合ruby的rspec框架使用RestClient可以編寫非常強(qiáng)大的測(cè)試腳本。假如Github想讓你測(cè)試他們的Restful API。你可能想做的第一件事就是確保端點(diǎn)返回你預(yù)計(jì)的響應(yīng)代碼。開始前,你需要確認(rèn)你已經(jīng)安裝了相應(yīng)的gems。 最便利的方式是使用bundler安裝:

?
1
2
3
4
5
source "https://rubygems.org"
 
gem 'rest-client'
gem 'rspec'
gem 'json_expressions'

在cmd(windows,linux/mac環(huán)境請(qǐng)自行解決)進(jìn)入你創(chuàng)建gemfile文件的同層目錄,運(yùn)行 'bundle'

?
1
2
3
4
5
6
7
8
9
10
11
12
13
rafs-computer:rafael$ bundle
Using diff-lcs 1.2.5
Using json_expressions 0.8.3
Using mime-types 2.3
Using netrc 0.7.7
Using rest-client 1.7.2
Using rspec-support 3.1.1
Using rspec-core 3.1.4
Using rspec-expectations 3.1.2
Using rspec-mocks 3.1.2
Using rspec 3.1.0
Using bundler 1.7.3
Your bundle is complete!

現(xiàn)在讓我們來驗(yàn)證我們從用戶終端得到200響應(yīng):

?
1
2
3
4
5
6
7
8
9
10
11
require 'rspec'
require 'rest_client'
 
describe 'GitHub API' do
  
  it 'should return information about a user' do
    result = RestClient.get 'https://api.github.com/users/rest-client', :content_type => :json, :accept => :json
    expect(result.code).to eq(200)
  end
 
end

在命令行執(zhí)行rspec -f doc filename

Ruby配置rspec和RestClient來檢測(cè)服務(wù)器

因此返回碼是對(duì)的,但是我們?nèi)绾沃婪祷氐膉son也是對(duì)的呢?

有幾種不同的方式去驗(yàn)證。一種方法是解析body中的json(由key,value組成),然后針對(duì)你要檢查的每個(gè)key創(chuàng)建斷言。這種方式可以使用,但是它需要你寫多個(gè)斷言而且是比較難于維護(hù)的。另外一種方法是和一個(gè)已知有效的json格式的數(shù)據(jù)文件比較。你可以使用json_expressions gem包去做這個(gè)事情。下面的例子是相同的spec文件。新增一個(gè)testcase用來驗(yàn)證json數(shù)據(jù)。

首先準(zhǔn)備一個(gè)users.json文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
 "login": "rest-client",
 "id": 2386701,
 "avatar_url": "https://avatars.githubusercontent.com/u/2386701?v=3",
 "gravatar_id": "",
 "url": "https://api.github.com/users/rest-client",
 "html_url": "https://github.com/rest-client",
 "followers_url": "https://api.github.com/users/rest-client/followers",
 "following_url": "https://api.github.com/users/rest-client/following{/other_user}",
 "gists_url": "https://api.github.com/users/rest-client/gists{/gist_id}",
 "starred_url": "https://api.github.com/users/rest-client/starred{/owner}{/repo}",
 "subscriptions_url": "https://api.github.com/users/rest-client/subscriptions",
 "organizations_url": "https://api.github.com/users/rest-client/orgs",
 "repos_url": "https://api.github.com/users/rest-client/repos",
 "events_url": "https://api.github.com/users/rest-client/events{/privacy}",
 "received_events_url": "https://api.github.com/users/rest-client/received_events",
 "type": "Organization",
 "site_admin": false,
 "name": "REST-Client Team",
 "company": null,
 "blog": "",
 "location": null,
 "email": null,
 "hireable": false,
 "bio": null,
 "public_repos": 1,
 "public_gists": 0,
 "followers": 0,
 "following": 0,
 "created_at": "2012-09-20T15:01:43Z",
 "updated_at": "2015-03-11T19:08:01Z"
}

然后編寫測(cè)試用例spec文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
require 'rspec'
require 'rest_client'
require 'json_expressions/rspec'
 
 
describe 'GitHub API' do
 
 it 'should return 200 when asking information about a user' do
  result = RestClient.get 'https://api.github.com/users/rest-client', :content_type => :json, :accept => :json
  expect(result.code).to eq(200)
 end
 
 it 'should return proper data for a user' do
  expected_data = JSON.parse(IO.read('users.json'))
  result = RestClient.get 'https://api.github.com/users/rest-client', :content_type => :json, :accept => :json
  expect(result).to match_json_expression(expected_data)
 end
 
end

這個(gè)users.json文件包含了一個(gè)已知的響應(yīng)。正如你可能猜到了,一些這樣的服務(wù)返回值可以改變很快。例如,"updated_at"是返回值可能經(jīng)常變化的key。假如你只是想要驗(yàn)證key是否存在,而不關(guān)心它的值,你可以增加如下的代碼到你的測(cè)試用例中。

?
1
2
3
4
5
6
it 'should return proper data for a user' do
  expected_data = JSON.parse(IO.read('users.json')) #解析users.json文件中的數(shù)據(jù)作為預(yù)期值
  result = RestClient.get 'https://api.github.com/users/rest-client', :content_type => :json, :accept => :json
  # expect(result).to match_json_expression(expected_data)
  expected_data['updated_at'] = wildcard_matcher
 end

 

延伸 · 閱讀

精彩推薦
  • RubyRuby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼

    Ruby進(jìn)行文件信息輸出實(shí)例代碼,數(shù)據(jù)是隨機(jī)的,所以每次的記錄都會(huì)不同。 ...

    ruby教程網(wǎng)2962020-04-10
  • RubyRuby迭代器的7種技巧分享

    Ruby迭代器的7種技巧分享

    這篇文章主要介紹了Ruby迭代器的7種技巧分享,Ruby中的迭代器非常人性化,本文既是講解了7個(gè)技巧也是講解了7種迭代器,需要的朋友可以參考下 ...

    腳本之家4782020-04-20
  • RubyRuby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象

    這篇文章主要介紹了Ruby簡(jiǎn)潔學(xué)習(xí)筆記(一):字符串、數(shù)字、類和對(duì)象,本文是學(xué)習(xí)筆記第一篇,需要的朋友可以參考下 ...

    腳本之家2472020-04-20
  • Ruby剖析 Ruby 訪問控制

    剖析 Ruby 訪問控制

    前面,我們說 Ruby 沒有函數(shù),只有方法.而且實(shí)際上有不止一種方法.這一節(jié)我們介紹 訪問控制 (accesscontrols). 想想當(dāng)我們?cè)谧罡邔佣皇窃谝粋€(gè)類的定義里定義...

    ruby教程網(wǎng)3572020-04-08
  • RubyCentOS中配置Ruby on Rails環(huán)境

    CentOS中配置Ruby on Rails環(huán)境

    經(jīng)過一個(gè)上午的折騰,終于把ROR環(huán)境在CentOS中搞定,繞了很多彎路,把文章寫下來總結(jié)一下 ...

    可樂加糖4762020-04-12
  • RubyRuby環(huán)境下安裝使用bundler來管理多版本的gem

    Ruby環(huán)境下安裝使用bundler來管理多版本的gem

    這篇文章主要介紹了Ruby環(huán)境下安裝使用bundler來管理多版本的gem的方法,舉了Ruby On Rails中的應(yīng)用實(shí)例來進(jìn)行演示,需要的朋友可以參考下 ...

    日拱一卒4332020-05-10
  • RubyRuby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例

    這篇文章主要介紹了Ruby設(shè)計(jì)模式編程中使用Builder建造者模式的實(shí)例,建造者模式將一個(gè)復(fù)雜對(duì)象的構(gòu)造與它的表示分離,使同樣的構(gòu)建過程可以創(chuàng)建不同的表...

    范孝鵬2192020-05-07
  • Ruby簡(jiǎn)要說明Ruby中的迭代器

    簡(jiǎn)要說明Ruby中的迭代器

    這篇文章主要介紹了Ruby中的迭代器,迭代器的概念在動(dòng)態(tài)語(yǔ)言的編程中十分重要,文章中介紹了Ruby中的each迭代器和collect迭代器,需要的朋友可以參考下 ...

    goldensun2772020-04-25
318
主站蜘蛛池模板: 欧美日韩精品一区二区在线播放 | 国产精品一卡二卡 | 日韩欧美一二三区 | 一本色道精品久久一区二区三区 | 呦呦在线观看 | 色婷婷一区二区三区 | 久国产精品韩国三级视频 | 成人国产精品156免费观看 | 97国产精品 | 中文字幕在线精品 | 看一级黄色大片 | 99精品视频在线免费观看 | 欧美a在线 | www.中文字幕 | 中文字幕在线一区 | 中文字幕亚洲综合久久久软件 | 国产精品一区二区无线 | 紧缚调教一区二区三区视频 | 日韩精品中文字幕在线观看 | 精品免费视频 | 成人免费一区二区三区视频软件 | 中文字幕在线观看av | 日韩欧美一区二区三区久久婷婷 | 午夜久久久 | 在线精品一区 | 国产精品免费视频一区 | 羞羞网址 | 日韩欧美一区二区在线视频 | 99热在线精品播放 | 午夜桃色| 欧美黄色成人 | 国产一区二区三区 | 成人黄色片网站 | 欧美成人一区二区 | 日本中文字幕一区 | 91精品国产一区二区三区 | 亚洲视频观看 | 91国内视频在线观看 | 国产精品毛片久久久久久 | 亚洲 欧美 自拍偷拍 | 日本黄色片免费看 |