1. 程式人生 > >10-Mock模擬介面返回資料

10-Mock模擬介面返回資料

1、安裝mock

方法一:pip安裝

命令列直接輸入:pip install mock

方法二:官網下載mock安裝包安裝

下載安裝包後,解壓,命令列進入解壓目錄,執行python setup.py install

 

2mock模擬返回值

1)不封裝,mock模擬返回值

# encoding:utf-8
from mock import mock
import unittest
from base.requestsDemo import SendMain


# 建立測試類,繼承unittest.TestCase
class MockTest(unittest.TestCase):
    
def setUp(self): self.run = SendMain() def test_1(self): # 定義請求的post資料並返回 postData = {'username': 'wangling', 'password': '123456'} # 定義請求的post url postUrl = 'http://127.0.0.1:8000/postDataHandle/' # 定義請求的響應結果 respnse_data = postData # 響應資料
mockData = mock.Mock(return_value=respnse_data) # mockData是send_main方法的模擬值 self.run.send_main = mockData res = self.run.send_main(postUrl, 'POST', postData) print res def test_2(self): getData = {'username': 'xiaohua', 'mobile': '13066990001', 'data'
: 'haha'} getUrl = 'http://127.0.0.1:8000/getDataHandle' mockData = mock.Mock(return_value=getData) self.run.send_main = mockData res = self.run.send_main(getUrl, 'GET', getData) print res if __name__ == '__main__': unittest.main()

2)封裝,mock模擬返回值

    可以將mock模擬返回結果封裝一下,使程式碼重用性更高,具體如下:

# coding:utf-8
from mock import mock


# 模擬mock封裝
def mock_test(mock_method,url, method,response_data,request_data=None):
    mock_method = mock.Mock(return_value=response_data)
    res = mock_method(url, method, request_data)
    return res

    呼叫如下:

# encoding:utf-8
import unittest
from base.requestsDemo import SendMain
from base.mockdemoRe import mock_test

# 建立測試類,繼承unittest.TestCase
class MockTest(unittest.TestCase):
    def setUp(self):
        self.run = SendMain()

    def test_2(self):
        getData = {'username': 'xiaohua', 'mobile': '13066990001', 'data': 'haha'}
        getUrl = 'http://127.0.0.1:8000/getDataHandle'
        respnseDate = getData
        mock_test(self.run.send_main,getUrl,'GET',respnseDate,getData)
        res = self.run.send_main(getUrl, 'GET', getData)
        print res


if __name__ == '__main__':
    unittest.main()