Pytest 如何模拟 requests库中的Response对象?
nb88新博娱乐平台
nb88新博娱乐平台
当前位置 : nb88新博娱乐平台 > 新博nb88官网

Pytest 如何模拟 requests库中的Response对象?

请问如何在 Pytest 框架中模拟requests库中的Response对象?

涉及到的主体代码如下:

def get_addressphone:
    url = http://www.ip138.com:8080/search.asp?action=mobile&mobile=%s % phone
    r = requests.geturl
    r.encoding = GBK
    soup = BeautifulSoupr.text, html.parser
    try:
        data = soup.find_alltd[6].text.split\xa0
    except IndexError:
        data = False
    printdata
    return data

测试代码如下:

correct_response = requests.gethttp://www.ip138.com:8080/search.asp?action=mobile&mobile=13012345678
wrong_response = requests.gethttp://www.ip138.com:8080/search.asp?action=mobile&mobile=110

def test_get_addressmonkeypatch:
    def test1phone:
        return correct_response

    def test2phone:
        return wrong_response

    monkeypatch.setattrrequests.get, test1
    assert cli.get_address13012345678 == [重庆, ]
    monkeypatch.setattrrequests.get, test2
    assert cli.get_address110 == False

我希望可以构造一个Response对象,并在test函数中直接返回,但是Response对象中的text函数是无法修改的。

requests.models

很简单, 初始化一个实例, 设置 Response.content 属性就好了. text, json, file 等属性都是由 content 通过处理得到的, 也就是说 content 才是响应的正文部分.

看看源代码就啥都知道了

栏目列表

广告位

nb88新博娱乐平台