通用網(wǎng)站建設(shè)如何做好精準(zhǔn)營(yíng)銷(xiāo)
一、什么是mock?
mock測(cè)試就是在測(cè)試過(guò)程中,對(duì)于某些不容易構(gòu)造或者不容易獲取的對(duì)象,用一個(gè)虛擬的對(duì)象來(lái)創(chuàng)建以便測(cè)試的測(cè)試方法。
二、mock的作用
特別是開(kāi)發(fā)過(guò)程中上下游未完成的工序?qū)е庐?dāng)前無(wú)法測(cè)試,需要虛擬某些特定對(duì)象以便測(cè)試。
unittest是python內(nèi)置的單元測(cè)試庫(kù),在做接口測(cè)試時(shí),如果開(kāi)發(fā)的接口未開(kāi)發(fā)出來(lái),我們?nèi)绻胍獪y(cè)試接口聯(lián)調(diào),又不能干等著,這時(shí)可以使用unittest.mock模擬接口返回,進(jìn)行接口測(cè)試。
三、舉個(gè)栗子
示例:1、新增登錄和獲取個(gè)人信息兩個(gè)接口,分別由A和B開(kāi)發(fā)。2、A登錄接口尚未開(kāi)發(fā)完成,B獲取個(gè)人信息接口已經(jīng)開(kāi)發(fā)完成。3、已知登錄接口返回3種狀態(tài):登錄成功,登錄失敗,登錄異常。
場(chǎng)景源碼:case.py
如果你想學(xué)習(xí)接口自動(dòng)化測(cè)試,我這邊給你推薦一套視頻,這個(gè)視頻可以說(shuō)是B站播放全網(wǎng)第一的接口自動(dòng)化測(cè)試教程,同時(shí)在線人數(shù)到達(dá)1000人,并且還有筆記可以領(lǐng)取及各路大神技術(shù)交流:798478386? ????
【已更新】B站講的最詳細(xì)的Python接口自動(dòng)化測(cè)試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細(xì)的Python接口自動(dòng)化測(cè)試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)共計(jì)200條視頻,包括:1.【接口自動(dòng)化】目前軟件測(cè)試的市場(chǎng)行情以及測(cè)試人員能力標(biāo)準(zhǔn)。、2.【接口自動(dòng)化】全面熟練Requests庫(kù)以及底層方法調(diào)用邏輯、3.【接口自動(dòng)化】接口自動(dòng)化實(shí)戰(zhàn)及正則和JsonPath提取器的應(yīng)用等,UP主更多精彩視頻,請(qǐng)關(guān)注UP賬號(hào)。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337
# -*-coding:utf-8 -*-def login():# 登錄接口,尚未開(kāi)發(fā)完成# 登錄成功返回:{"result": "success", "message": "登錄成功"}# 登錄失敗返回:{"result": "fail", "message":"賬號(hào)或密碼錯(cuò)誤"}# 登錄異常返回:{"code": "404", "message": "找不到頁(yè)面"}# message返回失敗原因passdef get_user_info():# 根據(jù)登錄的結(jié)果success or fail,判斷跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面result = login()print(result)try:if result["result"] == "success":return "登錄成功"elif result["result"] == "fail":return "登錄失敗"else:return "未知失敗"except:return "服務(wù)端異常"
單元測(cè)試用例設(shè)計(jì):
# -*-coding:utf-8 -*-
from unittest import mock
import unittest
import caseclass TestLogin(unittest.TestCase):# 單元測(cè)試用例def test_login_success(self):# 測(cè)試登錄成功場(chǎng)景# mock一個(gè)支付成功的數(shù)據(jù)case.login = mock.Mock(return_value={"result": "success", "message": "登錄成功"})# 根據(jù)支付結(jié)果測(cè)試頁(yè)面跳轉(zhuǎn)statues = case.get_user_info()self.assertEqual(statues, "登錄成功")def test_login_fail(self):# 測(cè)試登錄失敗場(chǎng)景# mock一個(gè)登錄失敗的數(shù)據(jù)case.login = mock.Mock(return_value={"result": "fail", "message": "賬號(hào)或密碼錯(cuò)誤"})# 根據(jù)登錄結(jié)果測(cè)試頁(yè)面跳轉(zhuǎn)statues = case.get_user_info()self.assertEqual(statues, "登錄失敗")def test_login_fail2(self):# 測(cè)試登錄失敗場(chǎng)景# mock一個(gè)登錄失敗的數(shù)據(jù)case.login = mock.Mock(return_value={"result": "", "message": "賬號(hào)或者密碼為空"})# 根據(jù)登錄結(jié)果測(cè)試頁(yè)面跳轉(zhuǎn)statues = case.get_user_info()self.assertEqual(statues, "未知失敗")def test_login_error(self):# 測(cè)試登錄異常場(chǎng)景# mock一個(gè)登錄異常的數(shù)據(jù)case.login = mock.Mock(return_value={"code": "404", "message": "找不到頁(yè)面"})# 根據(jù)登錄結(jié)果測(cè)試頁(yè)面跳轉(zhuǎn)statues = case.get_user_info()self.assertEqual(statues, "服務(wù)端異常")if __name__ == "__main__":unittest.main()
執(zhí)行unittest單元測(cè)試用例:
?