一、接口自動化實現(xiàn)方式
工具類實現(xiàn)接口自動化:
1.Postman+Newman+git/svn+jenkins
2.jmeter+Ant+git/svn+jenkins
搭建代碼框架實現(xiàn)接口自動化:
使用開發(fā)語言+工具類:如Java耸棒、Python
二、為什么做接口自動化框架
1.敏捷開發(fā)葱淳,迭代產(chǎn)品項目時,接口一般數(shù)量比較大荧库,方便團隊實現(xiàn)接口測試版本控制拣帽。(主要原因)
2.工具功能太死板,有些接口完全無法實現(xiàn)(比如復(fù)雜的加密接口玲躯,簽名接口等据德,postman只能使用md5加密)
3.接口項目中有多種不同協(xié)議的接口。
4.排錯困難跷车,定位問題不方便棘利,需要結(jié)合抓包實現(xiàn)。
5.沒有辦法生成美觀的測試報告朽缴,特別是對外包公司來說善玫。
6.多接口串聯(lián),數(shù)據(jù)庫驗證密强,日志監(jiān)控等
7.有些公司做web自動化+接口自動化茅郎。
三、Python+requests模塊實現(xiàn)接口自動化
1.requests第三方庫主要用于發(fā)送http請求或渤,做接口自動化
安裝requests庫:pip install requests
2.requests全局觀
請求:
1.requests.get()發(fā)送get請求
2.requests.post()發(fā)送post請求
3.requests.delete()發(fā)送delete請求
4.requests.put()發(fā)送put請求
5.requests.request()最核心的方法
響應(yīng):
import requests
rep = requests.request()
#返回字符串數(shù)據(jù)
print(rep.text)
#返回字典格式的數(shù)據(jù)
print(rep.json())
#返回狀態(tài)碼
print(rep.status_code)
#返回cookies
print(rep.cookies)
#返回編碼格式
print(rep.encoding)
#返回響應(yīng)頭
print(rep.headers)
3.接口實戰(zhàn)
請求方式:get系冗、post、delete薪鹦、put
請求參數(shù)類型:鍵值對掌敬、JSON格式、文件格式池磁。
import time
import pytest
import requests
# class setup_class:
class TestSendRequsets:
# def setup(self):
# print("每個用例執(zhí)行之前")
# def teardown(self):
# print("每個用例執(zhí)行之后")
# @pytest.fixture()
def test_getImgCode(self):
# 接口url
t = time.time()
timess = str(int(round(t * 1000)))
times = str(int(t))
url = "http://124.71.230.185:9002/jeecg-boot/sys/randomImage/" + "" + timess
# 參數(shù)
data = {
"_t": times,
}
# # get請求
rep = requests.request('get', url, params=data)
print(rep.text)
# 只執(zhí)行smoke
# @pytest.mark.smoke
def test_Login(self):
# post請求
url = "http://124.71.230.185:9002/jeecg-boot/sys/login"
# 參數(shù)
data = {
"captcha": "Gkak!@#2019",
"checkKey": 1637811815838,
"password": "123456",
"remember_me": 1,
"username": "admin"
}
rep = requests.request('post', url, json=data)
statues = rep.json()["success"]
message = rep.json()["message"]
if statues:
print(message)
else:
# raise Exception(message)
print(message)
if __name__ == '__main__':
pytest.main(['-vs']);
用例管理框架:安裝pytest
pip install pytest
默認規(guī)則:
1.測試文件以test結(jié)束或者已test開頭
2.測試函數(shù)以test_開頭
3.測試方法以Test開頭奔害,但不能帶有init()方法;
注意:
get請求通過params傳遞參數(shù)
post請求通過json或者data傳遞參數(shù)框仔,區(qū)別是:
data:
數(shù)據(jù)報文dict字典類型:默認情況下請求頭是application/x-www-form-urlencoded舀武,表示以form表單的形式傳遞拄养,格式a=1&b=2&c=3
json:
數(shù)據(jù)報文:不管是dict類型還是str類型离斩,默認都是application/json,格式{"a":1,"b":2}
json.dumps(data)瘪匿,序列化跛梗,把字典格式的數(shù)據(jù)轉(zhuǎn)換成str類型的數(shù)據(jù)
json.loads(data),反序列化,把str格式轉(zhuǎn)換成字典格式棋弥。