python+requests實作接口的請求前篇已經介紹,還有不懂或者疑問的可以通路
目前我們需要考慮的是如何實作關鍵字驅動實作接口自動化輸出,通過關鍵字的封裝實作一定意義上的腳本與用例的脫離!
robot framework 的安裝不過多說明,網上資料比較太多~
執行個體:!!!!!
步驟一:建立項目

測試項目可以目錄或檔案存儲,格式可以用TXT,TSV或HTML格式, 建議項目選擇目錄和TXT,這樣便于管理
步驟二:建立測試套
測試套與測試項目一樣,也可以目錄和檔案存儲,格式也可以用TXT,TSV或HTML格式,建議測試套選擇檔案存儲和TXT
步驟三:建立測試用例
————————這一系列的基礎支撐元件建立結束後————目錄結構為————————
下面介紹在此架構上如何建立一條用例!!!
我們知道!rf是由關鍵字驅動的,而且是由測試庫識别測試對象、操作被測試對象的。
那麼怎麼使用關鍵字呢?首先我們需要導入測試庫!!!
步驟四:添加lib,此次需要的應用到的測試庫都在截圖中,其實也可以用urllib2這個庫擷取url内容資訊
ps:json和requests均為python導入的庫!(queryPrdodcut.py為我個人封裝的一個庫)
可以通過F5件查詢lib下的方法,看自己需要使用哪個就選應用哪個
步驟五,方法應用,按住ctrl就有可以介紹的方法
步驟六:輸出一條場景的case,下面就是我個人建立的一個case(目前以第三庫和自己帶的方法輸出的case)
1.set variable 代表設定變量2. catenate代表把多個參數組裝在一起3.requests.get代表使用resquests庫通過get請求擷取response4.should be qeual as strings 代表是是否等于期望值是個斷言(可以參考http://blog.sina.com.cn/s/blog_7f66d4ea0101k3fl.html)
5.log代表檢視内容
特别說明:通過這個方法可以使用rep.status_code和rep.content
用自帶的是不是很繁瑣,輸入了那麼多條才完成了一個請求,是以我封裝了一個關于http的get請求庫(當然checkValue也是我個人封裝的一個函數~)
具體實作如下:
<code>__author__ </code><code>=</code> <code>'niuzhigang'</code>
<code>#!/usr/bin/env python</code>
<code>#*- coding: UTF-8 -*-</code>
<code>#encoding=utf-8</code>
<code>import</code> <code>json</code>
<code>import</code> <code>requests</code>
<code>class</code> <code>queryProduct(</code><code>object</code><code>):</code>
<code> </code><code>@classmethod</code>
<code> </code><code>def</code> <code>interfacetest(</code><code>self</code><code>,reqadress,reqinterface,reqc,reqd, floattimeout):</code>
<code> </code><code>requrl </code><code>=</code> <code>reqadress </code><code>+</code> <code>reqinterface</code>
<code> </code><code>print</code> <code>"print requrl --->"</code><code>+</code><code>requrl</code>
<code> </code><code>header</code><code>=</code><code>{</code><code>"content-type"</code><code>:</code><code>"application/json"</code><code>}</code>
<code> </code><code>reqparams </code><code>=</code> <code>{</code><code>'c'</code><code>:reqc, </code><code>'d'</code><code>: reqd}</code>
<code> </code><code>reqparam </code><code>=</code> <code>json.dumps(reqparams,encoding</code><code>=</code><code>'utf-8'</code><code>,ensure_ascii</code><code>=</code><code>False</code><code>)</code>
<code> </code><code>print</code> <code>'print reqparams --->'</code><code>+</code><code>reqparam</code>
<code> </code><code>timeout </code><code>=</code> <code>float</code><code>(floattimeout)</code>
<code> </code><code># get request result</code>
<code> </code><code>getrep </code><code>=</code> <code>requests.get(url</code><code>=</code><code>requrl,headers</code><code>=</code><code>header, params</code><code>=</code><code>reqparams,timeout</code><code>=</code><code>timeout)</code>
<code> </code><code>print</code> <code>"get req result --->"</code><code>+</code><code>getrep.text</code>
<code> </code><code>return</code> <code>getrep.text</code>
那麼問題來了?怎麼使用自己定義的一個庫呢?(具體如何開發有點python基礎知識就可以了~我也不說了~)
下面請個人封裝的庫上場~
PS:自己封裝的庫可以根據自己需求列印日志~實作方法就是函數中 print即可!!!!
說明:為什麼寫了timeout = float(floattimeout)---->timeout轉float,因為通過rf輸入後為字元串型,是以需要轉float
運作rf結果如下:
步驟七:檢視判定結果,執行play鍵或者F8
ps藍色的均是超連結可以打開,如:想看具體每個場景case的失敗or通過 ------>點選
可以檢視)結果如下:
本文轉自lzwxx 51CTO部落格,原文連結:http://blog.51cto.com/13064681/1943436