大家呢也是了解了python requests的基本用法了,那麼咱們就應用上單元測試框架unittest還有BeautifulReport簡單的實現一下自動化的接口測試
一、搭建框架
咱們也是看一下圖,需要創建的文件夾以及文件都在這裡了,我這邊用的pycharm,其他的開發工具也都是差不多的哈,創建完之後咱們開始往裡面寫代碼
咱們以微信公眾平台的獲取token的接口來進行一下測試,首先需要獲取接口相關的文檔,咱們可以輸入下面的鏈接,就可以直接看api文檔了,鏈接https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
請求的方法是get,其中我在這裡羅列一下需要的請求參數
參數
是否必須
說明
grant_type
是
獲取access_token填寫client_credential
appid
是
第三方用戶唯一憑證
secret
是
第三方用戶唯一憑證密鑰
自己的appid和secret怎麼獲取到呢,這個需要咱們有自己的公眾號了,在這裡哈,如圖所示,基本的參數有了之後,咱們就可以進行測試了
咱們使用數據驅動的方法進行測試,數據在json文件中,咱們先寫一個json文件內容如下,裡面寫的有url,還有咱們請求的必要參數
[
{
"path": {
"url": "https://api.weixin.qq.com/cgi-bin/token"
},
"params": {
"grant_type": "client_credential",
"appid": "自己的",
"secret": "自己的"
}
}
]
數據放在data文件夾裡面
接下來是測試用例的編寫,其中斷言部分是與返回的數據作對比,可以看出如果參數對,返回的數據應該是以下這樣的,所以與這個7200作比較,返回的數據裡面有7200,就說明這個成功了
{"access_token":"ACCESS_TOKEN","expires_in":7200}
from pyparsing import ParseExpression
import requests
import json
import unittest
from ddt import data, ddt, file_data
# from HTMLTestRunner import HTMLTestRunner
@ddt
class UnittestDemo(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
pass
@classmethod
def tearDownClass(cls) -> None:
pass
# 采用ddt方式數據驅動,地址就是寫的json的路徑
@file_data("D:/interfacetest/apiDemo/data/testwechat.json")
def test_01(self, **kwargs):
print(kwargs["path"]["url"])
"""
正向的測試用例
:param kwargs:
:return:
"""
response = requests.get(url=kwargs["path"]["url"], params=kwargs["params"])
expectValue = '7200'
acutalValue = str(response.json()["expires_in"])
self.assertIn(expectValue, acutalValue)
print("請求數據:", kwargs)
接下來就是主函數了,主函數咱們采用BeautifulReport實現,具體的代碼如下
from BeautifulReport import BeautifulReport
import unittest
if __name__ == '__main__':
discover = unittest.defaultTestLoader.discover("./test_case", pattern="testwechat.py")
BeautifulReport(discover).report("執行用例", filename="res.html", report_dir="./reports")
看一下執行的效果
測試報告
以上就是咱們簡單的自動化接口測試了以後還會定期更新新內容哈