麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:38:19
字體:
供稿:網(wǎng)友

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

 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'

rafs-computer:rafael$ bundleUsing diff-lcs 1.2.5Using json_expressions 0.8.3Using mime-types 2.3Using netrc 0.7.7Using rest-client 1.7.2Using rspec-support 3.1.1Using rspec-core 3.1.4Using rspec-expectations 3.1.2Using rspec-mocks 3.1.2Using rspec 3.1.0Using bundler 1.7.3Your bundle is complete!

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

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)  endend

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

2015713114043998.png (543×129)

因此返回碼是對(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文件

{ "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"}

然后編寫測試用例spec文件

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)  endend

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

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲国产网站 | 午夜小影院 | 黄色片小说 | 欧美精品久久天天躁 | av在线大全| 得得啪在线 | 国产精品自拍片 | 国产剧情在线观看一区二区 | 国产精品久久久久久影院8一贰佰 | 黄网站在线免费看 | 国产黄色免费网站 | 日本中文高清 | 欧美日本在线播放 | 黄污污网站 | 欧美日韩一 | 亚洲国产精品一区二区三区 | 国产午夜亚洲精品 | hdhdhd79xxxxх| 免费嗨片首页中文字幕 | 黄色免费影片 | 成av人在线观看 | 性欧美极品xxxx欧美一区二区 | 成熟女人特级毛片www免费 | 日本精品二区 | 一级毛片在线免费观看视频 | 国产精品99久久久久久宅女 | 久久99精品久久久久久园产越南 | wwwxxx国产| 在线91视频 | 成人午夜免费观看 | 天天夜干| 欧美毛片免费观看 | av电影免费在线 | 成人做爽爽爽爽免费国产软件 | 亚洲成人在线视频网站 | 亚洲一区二区三区日本久久九 | 茄子福利视频 | 久久久久久久久久91 | 久久久久久久午夜 | 日本高清视频网站www | 国产中文99视频在线观看 |