python测试之mock

2021-02-08  本文已影响0人  张小Di
什么是mock?

目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较低;如果在前后端开发工程师约定好接口定义后,通过mock接口返回,则可实现前后端并行开发;在测试过程中,对于某些不易构造或不易获取的对象,创建一个虚拟的对象以便测试的方法就是mock。

使用场景
优缺点
优点
缺点

测试过程中如果大量使用mock,测试场景也就失去了真实性,可能会导致在后续的系统性测试中才发现BUG,使得缺陷发现较晚,可能会造成后续修复成本较大。所以建议不要过分依赖mock接口进行测试。

解决方案
方案1:搭建模拟服务器,然后模拟向服务器发送请求
方案2:将测试对象所依存的对象替换为虚构对象的库
import unittest
from unittest import mock
class SubClass:
    def add(self, a, b):
        # 代码功能未实现
        pass
class TestSub(unittest.TestCase):
    def test_sub(self):
        sub = SubClass()
        # sub.add为要mock的对象,可以是一个类,或者函数,或是类实例
        # 实例化Mock类得到一个mock对象,并设置mock对象的行为
        sub.add = mock.Mock(return_value=10)
        result = sub.add(12, 23)
        self.assertEqual(result, 10)
if __name__ == '__main__':
    unittest.main()
import mock
# 实例化Mock类得到一个mock对象,并设置mock对象的行为
mock = mock.Mock()
mock.test_mock.return_value = 'Hello Mock'
print(mock.test_mock())
    @responses.activate
    def test_simple1(self):
        responses.add(responses.GET, 'http://test.cn/test',
                      json={'error': 'not found'}, status=200)
        url = 'http://test.cn/test'
        r = requests.get(url)
        # print(r.json())
        self.assertEqual(r.json()['error'], 'not found')

python接口测试之mock
Responses学习笔记
mock介绍及moco框架搭建使用

上一篇 下一篇

猜你喜欢

热点阅读