python mox使用方法
2014-01-03 18:00
302 查看
pymox是一套用于python代码unit test的框架. 官方链接如下:
https://code.google.com/p/pymox/
但是从官方的wiki上看到pymox的使用案例较少,而且比较简略.
这里按照通常使用情况整理下.
首先从最基本的框架说起.
创建一个unit test的test case, 在这里需要先import两个包
然后创建一个对应的测试类.
现在设定被测程序存放于zoo.py, 提供函数如下:
要测试函数get_most_popular_animal,需要先处理函数get_month,确保每次返回固定的数值。这里可以使用mox中的函数 StubOutWithMock.
StubOutWithMock 用来指明哪个模块中的哪个函数需要被mock,后面通过AndReturn就可以指定函数的行为了。在调用被测函数之前,运行ReplayAll函数来生效这些mock。
对于VerifyAll函数,其实在这里即使去掉这句话测试case也是可以通过的。
如果我们对case稍加修改:
所以可以通过VerifyAll()函数来检测哪些函数应该被执行到。
https://code.google.com/p/pymox/
但是从官方的wiki上看到pymox的使用案例较少,而且比较简略.
这里按照通常使用情况整理下.
首先从最基本的框架说起.
创建一个unit test的test case, 在这里需要先import两个包
import mox import unittest
然后创建一个对应的测试类.
class TestZoo(unittest.TestCase): def setUp(self): self.m = mox.Mox() def tearDown(self): self.m.UnsetStubs()
现在设定被测程序存放于zoo.py, 提供函数如下:
from datetime import date def get_most_popular_animal(): month = get_month() if month in [11,12,1]: return 'penguin' elif month in [6,7,8]: return 'swan' else: return 'tiger' def get_month(): today = date.today() return today.month def get_day(): today = date.today() return today.day
要测试函数get_most_popular_animal,需要先处理函数get_month,确保每次返回固定的数值。这里可以使用mox中的函数 StubOutWithMock.
def test_get_most_popular_animal(self): self.m.StubOutWithMock(zoo, 'get_month') zoo.get_month().AndReturn(1) self.m.ReplayAll() self.assertEqual('penguin', zoo.get_most_popular_animal()) self.m.VerifyAll()
StubOutWithMock 用来指明哪个模块中的哪个函数需要被mock,后面通过AndReturn就可以指定函数的行为了。在调用被测函数之前,运行ReplayAll函数来生效这些mock。
对于VerifyAll函数,其实在这里即使去掉这句话测试case也是可以通过的。
如果我们对case稍加修改:
def test_get_most_popular_animal(self): self.m.StubOutWithMock(zoo, 'get_month') zoo.get_month().AndReturn(1) self.m.StubOutWithMock(zoo, 'get_day') zoo.get_day().AndReturn(2) self.m.ReplayAll() self.assertEqual('penguin', zoo.get_most_popular_animal()) self.m.VerifyAll()mock一个新的函数get_day,get_most_popular_animal其实并未调用此函数,于是运行时会得到下面的错误:
ExpectedMethodCallsError: Verify: Expected methods never called: 0. get_day.__call__() -> 2
所以可以通过VerifyAll()函数来检测哪些函数应该被执行到。
相关文章推荐
- python mox使用方法(3)
- python mox使用方法(2)
- python使用分治法实现求解最大值的方法
- 【用Python写爬虫】获取html的方法【二】:使用pycurl
- 使用python和蒙特卡洛方法算π
- python使用Flask框架获取用户IP地址的方法
- 使用Python读取大文件的方法
- Python使用pylab库实现画线功能的方法详解
- python中数据爬虫requests库使用方法详解
- c++生成dll使用python调用dll的方法
- Python strip lstrip rstrip使用方法
- ArcMap中使用Python遇到中文字段名错误的解决方法
- [python]使用django快速生成自己的博客小站,含详细部署方法
- Python中用于转换字母为小写的lower()方法使用简介
- Python中的lstrip()方法使用简介
- 在Python中使用glob模块查找文件路径的方法
- Python日志(logging)模块使用方法简介
- python中的sort方法使用详解
- Python中的rfind()方法使用详解
- Python·Jupyter Notebook各种使用方法记录·持续更新