Ziv*_*iva 4 python testing pytest python-2.7
我有一个函数,它考虑三种不同的情况,并针对每种情况调用不同的函数,如下例所示
def my_fun(input):
if input == 1:
fun1()
if input == 2:
fun2()
if input == 3:
fun3()
Run Code Online (Sandbox Code Playgroud)
我想my_fun使用编写函数测试py.test,但我不知道如何测试是否为给定输入调用了正确的函数?
正如 @fmarc 评论的那样,调用哪个函数并不重要,重要的是测试是否my_fun做正确的事情。但是,您可以模拟这三个函数中的每一个,然后测试是否独立于每个函数实际执行的操作而调用了正确的函数。(请注意,这mock是您需要安装的 Python 2 中的第 3 方模块;它可以作为 Python 3.3(?) 中的标准库使用unittest.mock。)
一个简单的例子:
import mock
def test_my_fun():
with mock.patch('fun1', wraps=fun1) as mock_fun1:
with mock.patch('fun2', wraps=fun2) as mock_fun2:
with mock.patch('fun3', wraps=fun3) as mock_fun3:
my_fun(1)
mock_fun1.assert_called_with()
mock_fun2.assert_not_called()
mock_fun3.assert_not_called()
Run Code Online (Sandbox Code Playgroud)
检查安装文档mock以了解支持哪些方法。
| 归档时间: |
|
| 查看次数: |
11517 次 |
| 最近记录: |