如此例模拟通过第三方接口返回的状态,假设自己写的一个处理逻辑是oneurl_is_accessable()
oneurl()的功能是访问 http://XXX.com ,状态需要依赖的第三方接口的返回,要验证的自己写的逻辑oneurl_is_accessable()判断第三方接口返回的状态码,如果是200返回‘访问正常’,否则‘访问异常’
tmptestdemo.py文件为被测逻辑所在文件,具体内容如下
testdemo.py为测试模块
对被测对象oneurl_is_accessable()编写用例,利用mock模拟oneurl()的返回状态
执行结果:
使用mock,可以将某个函数所依赖的对象或者变量mock掉,从而降低测试条件的负责度。如下所示:
上述是mock对象的简单使用方法,通过实例化一个Mock对象从而模拟掉原始函数的返回值,高级一些的用法就是通过mock.patch装饰器,装饰在类或者函数上进行模拟测试,如下在test.py文件中有两个类:
测试用例设计如下:
以上测试用例说明,通过patch装饰器模拟了 test.ProductionClass1 这个类,在 test_01 中使用 mock_class 模拟 test.ProductionClass1 。首先通过 mock_class.return_value 获取类实例(如果模拟的是函数,则不需要这一步),然后通过 obj1.pro1_method.return_value 设置方法的返回值,并进行测试。测试结果说明无论是通过 mock_class 还是 test.ProductionClass1 还是 obj1 执行方法,获取到的结果都是设置的值,并且在另一个类中调用模拟类的方法,也能成功获取到设置的 return_value 。