设为首页 加入收藏

TOP

Python接口自动化之mock模块基本使用(四)
2019-09-03 03:39:39 】 浏览:152
Tags:Python 接口 自动化 mock 模块 基本 使用
t;



if __name__ == '__main__':
    pass


 


很明显第三方支付接口是无法访问的,因为接口的地址是我DIY的,为了模拟实际中我们无法使用的第三方支付接口


编写测试用例


 


"""
------------------------------------
@Time : 2019/6/26 15:22
@Auth : linux超
@File : testpay.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
@QQ  : 28174043@qq.com
@GROUP: 878565760
------------------------------------
"""
import unittest
from unittest import mock


from payment.PayMent import PayApi



class TestPayApi(unittest.TestCase):


    def test_success(self):
        pay = PayApi()
        pay.auth = mock.Mock(return_value={'status_code':'200'})
        status = pay.pay('1000', '12345', '10000')
        self.assertEqual(status, '支付成功')


    def test_fail(self):
        pay = PayApi()
        pay.auth = mock.Mock(return_value={'status_code':'500'})
        status = pay.pay('1000', '12345', '10000')
        self.assertEqual(status, '支付失败')


    def test_error(self):
        pay = PayApi()
        pay.auth = mock.Mock(return_value={'status_code':'300'})
        status = pay.pay('1000', '12345', '10000')
        self.assertEqual(status, '未知错误')


    def test_exception(self):
        pay = PayApi()
        pay.auth = mock.Mock(return_value='200')
        status = pay.pay('1000', '12345', '10000')
        self.assertEqual(status, 'Error, 服务器异常!')



if __name__ == '__main__':
    unittest.main()


 


测试输出结果


 


....用户1000支付失败, 金额不变
用户1000支付金额10000成功


----------------------------------------------------------------------
Ran 4 tests in 0.001s


OK


Process finished with exit code 0


 


从执行结果可以看出,即使第三方支付接口无法使用,但是我们自己的支付接口仍然测试通过了


也许有人会问,第三方支付都不能用,我们的测试结果是否是有效的呢?


通常我们在测试一个模块的时候,我们是可以认为其他模块的功能是正常的,只针对目标模块进行测试是没有任何问题的,所以说测试结果也是正确的


其实上述代码还可以使用另一种方式来写


mock对象的方法


 


"""
------------------------------------
@Time : 2019/6/26 15:22
@Auth : linux超
@File : testpay.py
@IDE  : PyCharm
@Motto: Real warriors,dare to face the bleak warning,dare to face the incisive error!
@QQ  : 28174043@qq.com
@GROUP: 878565760
------------------------------------
"""
import unittest
from unittest import mock
from unittest.mock import patch


from payment.PayMent import PayApi



class TestPayApi(unittest.TestCase):


    def setUp(self):
        self.pay = PayApi()


    @patch.object(PayApi, 'auth')
    def test_success(self, mock_auth):


        mock_auth.return_value = {'status_code':'200'}
        status = self.pay.pay('1000', '12345', '10000')
        self.assertEqual(status, '支付成功')


    @patch.object(PayApi, 'auth')
    def test_fail(self, mock_auth):
        mock_auth.return_value={'status_code':'500'}
        status = self.pay.pay('1000', '12345', '10000')
        self.assertEqual(status, '支付失败')


    @patch.

首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python内置装饰器@property 下一篇CUDA编程之快速入门

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目