目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较低;如果在前后端开发工程师约定好接口定义后,通过mock接口返回,则可实现前后端并行开发;在测试过程中,对于某些不易构造或不易获取的对象,创建一个虚拟的对象以便测试的方法就是mock。
优点
缺点
测试过程中如果大量使用mock,测试场景也就失去了真实性,可能会导致在后续的系统性测试中才发现BUG,使得缺陷发现较晚,可能会造成后续修复成本较大。所以建议不要过分依赖mock接口进行测试。
方案1:搭建模拟服务器,然后模拟向服务器发送请求
以上两种均需要安装JDK,而后通过jar命令启动服务器
方案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')
文末分享:公众号有我学习整理出来的自动化测试资料【接口自动化、app自动化、web自动化移动端自动化】、大厂面试文档、简历模板…待你来领取~ 见公众号:【伤心的辣条】愿你我都有所获…
合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
我的测试学习交流群:902061117 群里有技术大牛一起交流分享~
包装成1年工作经验的测试工程师,我给他的面试前的建议如下
自动化测试到底要学什么?
为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事
自动化测试和手动测试哪个更高级?
新手必看:怎么写一个合格的测试用例?
python登录接口测试问题记录与解决 ( 干 货 )