postman之?dāng)?shù)據(jù)庫(kù)辫樱、后臺(tái)管理系統(tǒng)峭拘、APP三端聯(lián)動(dòng)接口自動(dòng)化

有這么一種情況,后臺(tái)管理系統(tǒng)帶有一個(gè)開關(guān)狮暑,可以控制APP某項(xiàng)功能的展示鸡挠。這種情況下,我們想要實(shí)現(xiàn)自動(dòng)化搬男,就要先請(qǐng)求后臺(tái)接口更改狀態(tài)拣展,再請(qǐng)求APP的接口進(jìn)行測(cè)試和驗(yàn)證。同時(shí)為了保證開關(guān)兩種狀態(tài)的切換缔逛,我們還需要從數(shù)據(jù)庫(kù)中獲取開關(guān)的狀態(tài)备埃,以此為根據(jù)更改后臺(tái)管理系統(tǒng)的開關(guān)狀態(tài)。那么這種情況下我們?nèi)绾螌?shí)現(xiàn)自動(dòng)化呢褐奴?接下來(lái)一起研究一下詳細(xì)的實(shí)現(xiàn)步驟吧按脚!
第一部分:確認(rèn)環(huán)境和接口信息
(1)mysql 下 server_control表(用于儲(chǔ)存開關(guān)狀態(tài)的表)數(shù)據(jù)如下:keyId代表開關(guān)的名稱;status代表開關(guān)當(dāng)前的狀態(tài)敦冬,1位為開啟辅搬,0為關(guān)閉。

mysql.png

(2)后臺(tái)管理系統(tǒng)中開關(guān)控制位置修改開關(guān)狀態(tài)的接口信息:
接口地址:api/server_control/save (post請(qǐng)求)
傳參:(1)keyid 開關(guān)的ID (2)status 開關(guān)的狀態(tài)
返回值:status 是否設(shè)置成功匪补,0為失敗 1為成功
(3)APP用于接收開關(guān)狀態(tài)的接口信息:
接口地址:api/getServerControls(post請(qǐng)求)
傳參:這里本來(lái)是有用戶id伞辛,但是并沒(méi)有什么影響所以假定此處沒(méi)有傳參即可。
返回值:one : 0/1 開關(guān)一 夯缺,0為關(guān)閉 1為開啟
two : 0/1 開關(guān)二蚤氏,0為關(guān)閉 1為開啟
好了,這樣基本的數(shù)據(jù)環(huán)境就準(zhǔn)備好了踊兜。
第二部分:一邊設(shè)計(jì)流程一邊寫自動(dòng)化
(1)我們這里使用xmysql連接數(shù)據(jù)庫(kù)竿滨,至于基本的安裝使用這里不再詳細(xì)介紹。
通過(guò)命令行直接輸入命令
mysql -h 數(shù)據(jù)庫(kù)地址 -u 用戶名 -p 密碼 -d 數(shù)據(jù)庫(kù)名 -r 指定訪問(wèn)IP地址
連接成功之后在postman新建一個(gè)GET請(qǐng)求:{{sqlUrl}}/api/server_control
通過(guò)get請(qǐng)求即可獲取當(dāng)前數(shù)據(jù)庫(kù)server_control表中的數(shù)據(jù)捏境,在tests中編寫如下方法即可獲取當(dāng)前的數(shù)據(jù)于游。
var rpData = JSON.parse(responseBody);
效果如下圖:
image.png

通過(guò)請(qǐng)求取出數(shù)據(jù)庫(kù)數(shù)據(jù)判斷當(dāng)前keyId的值,數(shù)據(jù)格式為"keyId":status
例如 keyId為1的status為1 垫言;keyId為2的status為1(這個(gè)我自己寫了個(gè)接口返回的并非真實(shí)數(shù)據(jù)庫(kù)返回的格式贰剥,僅用參考)
數(shù)據(jù)庫(kù)返回值.png

(2)因?yàn)閮蓚€(gè)status的值都為0,那么我們就設(shè)置相反狀態(tài)環(huán)境變量筷频,keyone 和 keytwo都為1蚌成,分別代表keyid為1的status值和keyid為2的status值前痘。這兩個(gè)值主要用戶后臺(tái)管理系統(tǒng)更改狀態(tài)和APP接口的預(yù)期結(jié)果。
為啥我們要設(shè)置相反的值呢担忧?
數(shù)據(jù)庫(kù)查詢出來(lái)的狀態(tài)一定是當(dāng)前APP和后臺(tái)的狀態(tài)芹缔,例如status都為0,那么我們根據(jù)這個(gè)值為環(huán)境變量設(shè)置為1瓶盛,開關(guān)的狀態(tài)肯定會(huì)從一種狀態(tài)變成另一種狀態(tài)最欠,這樣就實(shí)現(xiàn)了我們對(duì)接口功能使用的效果。
最終Mmysql接口tests中代碼如下:

數(shù)據(jù)庫(kù)接口最終代碼.png

(3)根據(jù)測(cè)試的流程邏輯惩猫,下一個(gè)請(qǐng)求的接口應(yīng)該是后臺(tái)管理系統(tǒng)的接口芝硬,為了保證接口請(qǐng)求順序準(zhǔn)確性,我們?cè)趍ysql的接口最后一行增加一個(gè)順序控制帆锋,如下代碼加入mysql接口的tests中:
postman.setNextRequest("這個(gè)是postman設(shè)置的接口名") //下一個(gè)請(qǐng)求的接口時(shí)后臺(tái)管理系統(tǒng)的接口
(4)接下來(lái)我們搞一下后臺(tái)管理系統(tǒng)的代碼吵取,首先當(dāng)前接口是api/server_control/save /keyId=1&status=0禽额,傳值中帶有keyId锯厢,也就說(shuō)每次請(qǐng)求接口只能更改其中一個(gè)開關(guān)的狀態(tài),但是我們有兩個(gè)開關(guān)脯倒,所以我們需要請(qǐng)求兩次实辑;另外status的值也不是固定的,所以這兩位置都設(shè)置成變量 :分別為keyid(開關(guān)id)和status(開關(guān)狀態(tài)值)藻丢,即
api/server_control/save /keyId={{keyid}}&status={{status}}
(5)因?yàn)樽兞吭谡?qǐng)求上剪撬,所以我們要在請(qǐng)求之前進(jìn)行賦值,這個(gè)時(shí)候就用到了postman的Pre-requestScript功能悠反,位置如圖所示(接口請(qǐng)求之前會(huì)先執(zhí)行此處)
Pre-requestScript.png

首先我們先實(shí)現(xiàn)一次接口的賦值和斷言残黑,在Pre-requestScript中新建變量并接收keyone的值用于本接口的status,因?yàn)閗eyone的值為keyId為1的對(duì)應(yīng)的值斋否,所以他的keyid就等于1梨水,實(shí)際代碼如下:
接口請(qǐng)求前的處理.png

(6)這樣就實(shí)現(xiàn)了在接口請(qǐng)求前給接口的變量附上最新值的下過(guò),然后我們就需要在tests中斷言接口返回的status為1即可:
tests斷言.png

(7)完成以上操作茵臭,我們只實(shí)現(xiàn)了一個(gè)開關(guān)的修改疫诽,那么完成兩個(gè)開關(guān)的修改咋辦呢?難道再請(qǐng)求一次旦委?哈哈奇徒,如果那樣的話就顯得有點(diǎn)low了,接下來(lái)讓我們一起修改代碼實(shí)現(xiàn)請(qǐng)求兩次的效果吧缨硝。
首先我們修改一下mysql的接口中tests中的代碼摩钙,新建一個(gè)環(huán)境變量在如圖所示的位置,用于重置循環(huán)次數(shù)查辩。
新增用于循環(huán)的變量.png

然后在后臺(tái)管理系統(tǒng)接口的pre-resquestScript模塊修改代碼胖笛,通過(guò)判斷循環(huán)次數(shù)為接口傳參(keyid和status)賦值:
根據(jù)循環(huán)次數(shù)賦值.png

接下來(lái)在tests中判斷當(dāng)前的循環(huán)次數(shù)奕短,也就是loopC字段,如果loopC=1(代表只循環(huán)了一次)匀钧,那么設(shè)置再次請(qǐng)求當(dāng)前接口:

獲取當(dāng)前的循環(huán)次數(shù).png

通過(guò)上面的判斷翎碑,代碼運(yùn)行會(huì)再次請(qǐng)求后臺(tái)管理系統(tǒng)的接口,然后我們?cè)赑re-requestScript中進(jìn)行判斷當(dāng)前的loopC的值之斯,如果為1日杈,代表已經(jīng)請(qǐng)求過(guò)一次,也就是說(shuō)keyid為1的情況已經(jīng)更改佑刷,我們還需要更改keyid為2的情況莉擒,那么我們就將2賦值給keyid,staus的值就是對(duì)應(yīng)的keytwo的值:
判斷l(xiāng)oopC為2 的情況.png

最后我們?cè)趖ests中判斷l(xiāng)oopC=2瘫絮,兩個(gè)開關(guān)都已經(jīng)做了更改涨冀,這樣我們就不需要再請(qǐng)求后臺(tái)管理系統(tǒng)的接口,而是設(shè)置去請(qǐng)求APP的接口:
loopC為2 的判斷.png

(8)最后一步麦萤,我們就要請(qǐng)求APP的接口進(jìn)行最后的斷言(成敗在此一舉)鹿鳖。
APP的接口api/getServerControls,返回值為one:1 壮莹;two:1翅帜,我們直接在APP接口的tests中斷言one和two的值是否與keyone和keytwo的相等即可:
APP斷言.png

完成上面的步驟,就實(shí)現(xiàn)了數(shù)據(jù)庫(kù)命满、后臺(tái)管理系統(tǒng)和APP(用戶操作系統(tǒng))三端聯(lián)動(dòng)的接口自動(dòng)化測(cè)試涝滴,整體內(nèi)容不一定適合每一個(gè)人并且沒(méi)有基礎(chǔ)知識(shí)的介紹,屬于純實(shí)戰(zhàn)項(xiàng)目胶台,適合剛剛接觸接口自動(dòng)化歼疮,沒(méi)有實(shí)際經(jīng)驗(yàn)的小伙伴≌┗#基礎(chǔ)知識(shí)只能滿足你60%的學(xué)習(xí)需求韩脏,剩下的40%就要在實(shí)戰(zhàn)中補(bǔ)足,我要做的就是補(bǔ)充你剩下的40%讯榕。OK骤素,這次分享就到這里了,有什么疑問(wèn)可以隨時(shí)留言溝通愚屁,互相學(xué)習(xí)進(jìn)步济竹!
歡迎加入QQ群:547349021
小提示:群名雖然叫selenium+unittest,但是我們不限任何測(cè)試領(lǐng)域的溝通交流和學(xué)習(xí)霎槐,讓我們一起補(bǔ)足缺失的40%吧送浊!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丘跌,隨后出現(xiàn)的幾起案子袭景,更是在濱河造成了極大的恐慌唁桩,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耸棒,死亡現(xiàn)場(chǎng)離奇詭異荒澡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)与殃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門单山,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人幅疼,你說(shuō)我怎么就攤上這事米奸。” “怎么了爽篷?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵悴晰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我逐工,道長(zhǎng)铡溪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任钻弄,我火速辦了婚禮佃却,結(jié)果婚禮上者吁,老公的妹妹穿的比我還像新娘窘俺。我一直安慰自己,他們只是感情好复凳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布瘤泪。 她就那樣靜靜地躺著,像睡著了一般育八。 火紅的嫁衣襯著肌膚如雪对途。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天髓棋,我揣著相機(jī)與錄音实檀,去河邊找鬼。 笑死按声,一個(gè)胖子當(dāng)著我的面吹牛膳犹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播签则,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼须床,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了渐裂?” 一聲冷哼從身側(cè)響起豺旬,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钠惩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后族阅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篓跛,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年坦刀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了举塔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡求泰,死狀恐怖央渣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渴频,我是刑警寧澤芽丹,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站卜朗,受9級(jí)特大地震影響拔第,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜场钉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一蚊俺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逛万,春花似錦泳猬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至指郁,卻和暖如春忙上,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闲坎。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工疫粥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人腰懂。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓梗逮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親悯恍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子库糠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 接口自動(dòng)化整理 一、Post與Get區(qū)別 1、Get方法通過(guò)URL請(qǐng)求來(lái)傳遞用戶的數(shù)據(jù)瞬欧,將表單內(nèi)各字段名稱與其內(nèi)容...
    灬丨傾注你的笑丶閱讀 2,195評(píng)論 2 1
  • 佛說(shuō):前世五百次的回眸才換來(lái)今生的擦肩而過(guò)贷屎。而你與我相遇,相識(shí)艘虎,相知唉侄,相依。野建。属划。這是多么微妙的緣分啊候生! ...
    謝小二兒閱讀 599評(píng)論 2 1
  • 當(dāng)你第一次問(wèn)老爸老媽唯鸭,你是怎么來(lái)到這個(gè)世界的時(shí)候须蜗,你絕對(duì)是向他們提出了一個(gè)不小的難題。老爸老媽一定都回答的...
    銀兩夠重閱讀 331評(píng)論 0 1
  • 1.能走多久目溉,靠的不是雙腳明肮,是志向,鴻鵠志在蒼宇缭付,燕雀心系檐下柿估。 2.能登多高,靠的不是身軀陷猫,是意志秫舌,強(qiáng)者遇挫越勇...
    窗花閱讀 276評(píng)論 0 1