roboframwork介面測試例項

2021-08-26 12:21:11 字數 3375 閱讀 1313

測試需求:

測試系統中新增公告的介面,此介面採用了 簽名加密的方式(api_key+time)

測試設計:

測試 加密後的介面的方法其實和一般的介面測試是一致的。只是多了一步對傳輸的資料進行加密的過程。

用擴充套件庫的方式來完成資料的加密。(擴充套件庫的方式詳情-tbd,簡單的來說就是你可以自己寫python檔案,然後rf可以直接呼叫你所寫的python檔案)

測試實現:

1 編寫乙個md5enc.py檔案,裡面包含兩個函式

2 編寫乙個返回值為200的正向介面測試的testcase

第一行:獲取當前時間,賦值給變數t_now。

第二行:呼叫擴充套件庫中的get_time_stamp函式,將字串格式的時間轉換成時間戳,賦值給變數t_now_stamp

第三行:列印出來看看值是否正常,主要用於除錯

第四行:呼叫擴充套件庫中的get_sign函式,將api_key+time的值進行md5加密

第五行:對報頭content-type賦值後構建為乙個字典賦值給變數headers

第六行:將乙個常量的時間賦值給變數start_time_str

第七行:將post需要傳輸的資料構造成字典物件賦值給變數payload

第八行:將payload中的sign取出來檢視(為了除錯,不必要)

第九行:建立乙個session開始準備傳送請求

第十行:傳送post請求,所帶引數為之前所構造好的引數

第十一行:對請求返回的status code進行斷言,正常應為200

第十二行:列印返回的值的json格式的內容

第十三行:將返回的json格式值賦值給dict

第十四行到第十九行:對返回的值依據之前的介面定義文件來進行斷言

附**(robot testcase)

*** settings ***

documentation a robot file to test the cryptapi

library requestslibrary

library collections

library operatingsystem

library md5enc.py

library signtest.py

*** test cases ***

addevent_sign

$ get time now #獲取當前時間

$ get_time_stamp $

log $

$ get_sign $ #呼叫函式

$ set variable 2017-07-20 12:00:00

$ create dictionary eid=13 name=iphone8releasemeeting limit=2000 address=newyork start_time=$

... time=$ sign=$

$ get from dictionary $ sign

create session event

$= post request event /sec_add_event/ data=$ headers=$

should be equal as strings $ 200

log $

$ set variable $

#斷言結果

$ get from dictionary $ message

should be equal $ add event success

$ get from dictionary $ status

$ evaluate int(200)

should be equal $ $

test

$ add_event_success

log $

md5enc.py(匯入的檔案需要和robot的專案在同乙個資料夾內)

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import hashlib

import json

import time

class md5enc(object):

def get_sign(self,t):

'''examples:

$ | get sign |$

'''keymd5 = hashlib.md5()

api_key = "&guest-bugmaster"

sign_str = t + api_key

sign_bytes_utf8 = sign_str.encode(encoding="utf-8")

keymd5.update(sign_bytes_utf8)

keymd5 = keymd5.hexdigest()

return keymd5

def get_time_stamp(self,t=''):

timearray = time.strptime(t, "%y-%m-%d %h:%m:%s")

timestamp = int(time.mktime(timearray))

timestamp_str = str(timestamp)

return timestamp_str

#a=md5enc.get_sign('sdf','2017-07-20 16:04:30')

cc先生說,擴充套件庫可以說是rf中非常強大的乙個功能,如果想對之前的自動化測試**進行重構,又不想花費太多工夫的情況下,使用rf的擴充套件庫是再方便不過的功能。不過這裡有乙個坑是,如果你的class裡面的函式是以test開頭的可能新增會失敗。(不要問我是怎麼知道的。。。乙個多小時的時間就耗費在這個上面了。。。。)

python實現webserver介面測試

python2 中需要安裝 suds,而且先需要安裝client,不然會報錯 python3 中需要安裝 suds py3,pip install suds py3 匯入client from suds.client import client url需要以 wsdl 不區分大小寫 前面是具體的介面...

SoapUI之webservice介面測試(一)

1.新建soap project 新增後出現介面內容 2.為了方便後續的測試,以防某些引數刪除錯了,這邊需要新建測試集 3.點開新建的測試集可以發現,裡面的內容跟原始測試集內容是一樣的 然後就可以在這邊輸入引數去執行了 檢視執行結果,根據需求文件的引數返回值做對比 4.可以根據 properties...

postman jwt介面做各個環境介面測試(三)

1 獲取token並記錄在環境中,baseurl輸入介面請求的url 後面帶上指定的方法如 login 選擇請求方式為 post並且請求為login headers裡面攜帶對應的值 body中攜帶對應的值 返回的內容有 idtoken accesstoken refreshtoken,可以用指令碼記...