RobotFramework查詢MongoDB數(shù)據(jù)庫并提取數(shù)據(jù)

RobotFramework查詢MongoDB數(shù)據(jù)庫比較容易隐岛,搜索一下都是講怎么查詢的冤荆。但是查詢之后需要從返回數(shù)據(jù)中提取需要的信息就沒人說了,現(xiàn)總結(jié)如下

安裝需要的工具和包

1.安裝python,建議使用3.7.因為ride對高版本兼容不好
2.安裝包

pip install robotframework
pip install robotframework-ride
pip install pymongo
pip install robotframework-mongodblibrary

我這邊需求是在數(shù)據(jù)庫中取出需要的兩個字段信息笋颤,然后拼接成一個json格式的header信息作為其它測試用例的輸入。

說明:關(guān)鍵信息用xxx代替,請根據(jù)自身情況進行修改

*** Settings ***
Library           MongoDBLibrary
Resource          ../Common/CommonParams.txt

*** Test Cases ***
test_mongodb
    ${ret}    Get Header    {"LoginName":"xxx"}
    Log    ${ret}

*** Keywords ***
Get Header
    [Arguments]    ${recordJSON}
    Connect To MongoDB    mongodb://${mongoUser}:${mongoPwd}@${mongoUrl}:${mongoPort}
    ${id}    Retrieve Mongodb Records With Desired Fields    ${mongoName}    Account    ${recordJSON}    _id    returnDocuments=True
    ${result}    Retrieve Mongodb Records With Desired Fields    ${mongoName}    User    {"AccountID":"${id}[0][_id]"}    aa,bb    returnDocuments=True
    Disconnect From Mongodb
    [Return]    {"Content-Type":"application/json","aa":"${result}[0][aa]","bb":"${result}[0][bb]"}

代碼說明

*** Settings ***
Library           MongoDBLibrary
Resource          ../Common/CommonParams.txt

導(dǎo)入MongoDBLibrary
由于我的MongoDB數(shù)據(jù)庫的連接參數(shù)都是定義到變量文件中的伴澄,所以要先引用

*** Keywords ***
Get Header
    [Arguments]    ${recordJSON}
    Connect To MongoDB    mongodb://${mongoUser}:${mongoPwd}@${mongoUrl}:${mongoPort}
    ${id}    Retrieve Mongodb Records With Desired Fields    ${mongoName}    Account    ${recordJSON}    _id    returnDocuments=True
    ${result}    Retrieve Mongodb Records With Desired Fields    \${mongoName}    User    {"AccountID":"${id}[0][_id]"}    aa,bb    returnDocuments=True
    Disconnect From Mongodb
    [Return]    {"Content-Type":"application/json","aa":"${result}[0][aa]","bb":"${result}[0][bb]"}

將數(shù)據(jù)庫的整個操作定義了一個用戶關(guān)鍵字Get Header
[Arguments]定義一個參數(shù)${recordJSON}赋除,使用該關(guān)鍵字需要傳入,即MongoDB中查詢需要傳入的json

Connect To MongoDB
連接MongoDB數(shù)據(jù)庫
需要傳的參數(shù)有4個非凌,mongodb://user:pwd:@host:port举农。

${id} Retrieve Mongodb Records With Desired Fields ${mongoName} A ${recordJSON} _id returnDocuments=True
此處是先從A中查詢出_id值賦值給變量${id}作為下一個查詢的輸入.返回結(jié)果是[{'_id': 'xxx'}],則可以通過列表索引敞嗡、字典key取值的方式取出'_id'的值為'xxx'

${result} Retrieve Mongodb Records With Desired Fields ${mongoName} U {"AccountID":"${id}[0][_id]"} aa,bb returnDocuments=True
從U中查詢aa和bb兩個字段的值颁糟,returnDocuments=True表示返回的是一個列表,方便后續(xù)提取數(shù)據(jù)喉悴。默認returnDocuments=False返回的是字符串不方便提取棱貌,只能用來校驗查詢結(jié)果

Disconnect From Mongodb
查詢結(jié)束后斷開數(shù)據(jù)庫連接

[Return] {"Content-Type":"application/json","key1":"${result}[0][aa]","key2":"${result}[0][bb]"}
返回拼接好的字符串
${result}結(jié)果為[{'_id': 'xxx', 'aa': 'xxx','bb': 'xxx'}],取出'aa'和'bb'的值分別為"${result}[0][aa]","${result}[0][bb]",之后再作為新字典'key1'粥惧、'key2'的value返回

*** Test Cases ***
test_mongodb
    ${ret}    Get Header    {"LoginName":"xxx"}
    Log    ${ret}

最后在*** Test Cases ***中創(chuàng)建測試用例調(diào)用關(guān)鍵字測試

輸出結(jié)果為

Starting test: YAMI.Test.Test.test_mongodb
20210511 15:17:44.991 :  INFO : ${id} = [{'_id': 'xxx'}]
20210511 15:17:45.029 :  INFO : ${result} = [{'_id': 'xxx', 'aa': 'xxx','bb': 'xxx'}]
20210511 15:17:45.068 :  INFO : ${ret} = {"Content-Type":"application/json","aa":"xxx","bb":"xxx"}
20210511 15:17:45.070 :  INFO : {"Content-Type":"application/json","key1":"xxx","key2":"xxx"}
Ending test: YAMI.Test.Test.test_mongodb

{"Content-Type":"application/json","key1":"xxx","key2":"xxx"}就是返回的拼接后的字符串

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末键畴,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子突雪,更是在濱河造成了極大的恐慌起惕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咏删,死亡現(xiàn)場離奇詭異惹想,居然都是意外死亡,警方通過查閱死者的電腦和手機督函,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門嘀粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辰狡,你說我怎么就攤上這事锋叨。” “怎么了宛篇?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵娃磺,是天一觀的道長。 經(jīng)常有香客問我叫倍,道長偷卧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任吆倦,我火速辦了婚禮听诸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚕泽。我一直安慰自己晌梨,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仔蝌,像睡著了一般砸逊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掌逛,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音司倚,去河邊找鬼豆混。 笑死,一個胖子當著我的面吹牛动知,可吹牛的內(nèi)容都是我干的皿伺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼盒粮,長吁一口氣:“原來是場噩夢啊……” “哼鸵鸥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丹皱,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤妒穴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后摊崭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讼油,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年呢簸,在試婚紗的時候發(fā)現(xiàn)自己被綠了矮台。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡根时,死狀恐怖瘦赫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛤迎,我是刑警寧澤确虱,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站忘苛,受9級特大地震影響蝉娜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扎唾,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一召川、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胸遇,春花似錦荧呐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽概疆。三九已至,卻和暖如春峰搪,著一層夾襖步出監(jiān)牢的瞬間岔冀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工概耻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留使套,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓鞠柄,卻偏偏與公主長得像侦高,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厌杜,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

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