pytest mock的使用

简介: 1.简单使用`return_value`返回固定的数据。2.使用`side_effect`返回可变的数据。

简单使用return_value返回固定的数据

  • 方法一,使用装饰器。

    import mock
    def add(a, b):
        return a + b
    
    
    # 使用mock的return_value参数改变add返回的数据
    @mock.patch('add', return_value=10)
    def test_add():
        print(add(1, 2))  # 10
  • 方法二,使用mock.path方法。

    import mock
    def test_add():
        with mock.patch('add', return_value=10):
            print(add(1, 2)) # 10

使用side_effect返回可变的数据

  • 当一个方法被同一个测试调用多次,而自己又不想得到同一个返回值,就轮到side_effect上场了。
  • 依次返回list里的数据。

    # 方法一
    @mock.patch('add', side_effect=[10, 20])
    def test_add():
        print(add(1, 2))  # 10
        print(add(1, 2))  # 20
    
    # 方法二
    def test_add():
        with mock.patch('add', side_effect=[10, 20]):
            print(add(1, 2))  # 10
            print(add(1, 2))  # 20
  • 根据传入的参数返回指定的数据。

    # 方法一
    @mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20})
    def test_add():
        print(add(2, 3))  # 20
        print(add(1, 2))  # 10
    
    # 方法二
    def test_add():
        with mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20}):
            print(add(2, 3))  # 20
            print(add(1, 2))  # 10
相关文章
|
4月前
|
存储 设计模式 测试技术
怎么基于Pytest+Requests+Allure实现接口自动化测试?
该文介绍了一个基于Python的自动化测试框架,主要由pytest、requests和allure构成,采用关键字驱动模式。项目结构分为六层:工具层(api_keyword)封装了如get、post的请求;参数层(params)存储公共参数;用例层(case)包含测试用例;数据驱动层(data_driver)处理数据;数据层(data)提供数据;逻辑层(logic)实现用例逻辑。代码示例展示了如何使用allure装饰器增强测试报告,以及如何使用yaml文件进行数据驱动。
135 0
|
10月前
|
测试技术 Python
python 单元测试 mock patch
python 单元测试 mock patch
54 0
|
测试技术
03-pytest-测试用例setup和teardown
03-pytest-测试用例setup和teardown
|
自然语言处理 Java 测试技术
pytest学习和使用21-测试报告插件allure-pytest如何使用?
pytest学习和使用21-测试报告插件allure-pytest如何使用?
162 0
pytest学习和使用21-测试报告插件allure-pytest如何使用?
|
负载均衡 监控 测试技术
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
189 0
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
|
测试技术
pytest学习和使用5-Pytest和Unittest中的断言如何使用?
pytest学习和使用5-Pytest和Unittest中的断言如何使用?
88 0
pytest学习和使用5-Pytest和Unittest中的断言如何使用?
|
测试技术
pytest学习和使用12-Unittest和Pytest参数化详解
pytest学习和使用12-Unittest和Pytest参数化详解
83 0
|
测试技术 Python
pytest学习和使用6-fixture如何使用?
pytest学习和使用6-fixture如何使用?
110 0
|
测试技术 Python
pytest学习和使用4-pytest和Unittest中setup、teardown等方法详解和使用(最全)
pytest学习和使用4-pytest和Unittest中setup、teardown等方法详解和使用(最全)
120 0
|
测试技术 Python
【pytest】(二) pytest与unittest的比较
【pytest】(二) pytest与unittest的比较
【pytest】(二) pytest与unittest的比较