Python测试三方库

Mock、测试覆盖。

Mock类

第三方mock库: responses

具体使用参考官方示例, 最简单的用法:

import responses
import requests

@responses.activate
def test_simple():
    responses.add(responses.GET, 'http://twitter.com/api/1/foobar',
                  json={'error': 'not found'}, status=404)

    resp = requests.get('http://twitter.com/api/1/foobar')

    assert resp.json() == {"error": "not found"}

    assert len(responses.calls) == 1
    assert responses.calls[0].request.url == 'http://twitter.com/api/1/foobar'

添加mock也支持以下方式,这样可以用一个独立函数包裹:

responses.add(
    responses.Response(
        method='GET',
        url='http://twitter.com/api/1/foobar',
        body="{'error': 'not found'}",
        # 或
        # json="{'error': 'not found'}",
        status=200,
        content_type='application/json'
    )
)

Hypothesis

参数化数据准备.

扩展阅读

  • responses: A utility for mocking out the Python Requests library.