亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請求庫中的模擬會話

請求庫中的模擬會話

海綿寶寶撒 2021-03-29 14:11:48
在我的python代碼中,我具有全局requests.session實例:import requestssession = requests.session()我該如何嘲笑呢Mock?是否有用于此類操作的裝飾器?我嘗試了以下操作:session.get = mock.Mock(side_effect=self.side_effects)但是(按預期方式)此代碼session.get在每次測試后不會像@mock.patch裝飾器那樣返回到原始狀態。
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

由于request.session()返回Session類的實例,因此也可以使用patch.object()


from requests import Session

from unittest.mock import patch


@patch.object(Session, 'get')

def test_foo(mock_get):

    mock_get.return_value = 'bar'   


查看完整回答
反對 回復 2021-04-05
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

從先前的答案中得到一些啟發,并:


在python模擬中模擬屬性


我能夠模擬這樣定義的會話:


class MyClient(object):

    """

    """

    def __init__(self):

        self.session = requests.session()

這樣:(get的調用返回一個status_code屬性設置為200的響應)


def test_login_session():

    with mock.patch('path.to.requests.session') as patched_session:

        # instantiate service: Arrange

        test_client = MyClient()

        type(patched_session().get.return_value).status_code = mock.PropertyMock(return_value=200)


        # Act (+assert)

        resp = test_client.login_cookie()


        # Assert

        assert resp is None


查看完整回答
反對 回復 2021-04-05
  • 3 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號