python - 是否可以在测试期间强制某些函数使用不同的类?
问题描述
我上课的方法很少。比方说A
文件a.py
class A:
def foo():
...
def bar():
...
在正常运行时(不是测试)我在不同的模块中使用它,就像那样。
文件函数.py
from a import A
def sample_function():
a_instance = A()
result = a_instance.foo()
return result
但是在测试期间,我想用不同的类替换它,比如说 MockA。
文件mock_a.py
class MockA:
# same methods name, but with different implementation
def foo():
...
def bar():
...
现在我想用一些功能测试模块
测试
from functions import sample_function
def test_sample_function():
assert sample_function() == expected_output
问题是:
我可以以某种方式“全局”设置别名A = MockA
(或以其他方式执行此操作),以便在测试期间sample_function
使用来自MockA
?
解决方案
你怎么用:
测试
from unittest.mock import patch
from mock_a import MockA
from functions import sample_function
@patch('functions.A', new_callable=MockA)
def test_sample_function(mocked_A):
assert sample_function() == expected_output
推荐阅读
- ubuntu - 如何检查所有kafka服务器是否通过cmd line收到消息
- javascript - 如何使用 Behaviorsubject 来检测变化
- c++ - C++ Singleton 用重载运算符实例化-> 可能吗?
- python-3.x - 使用python将JSON提取到数据框
- java - 如何在 Android 中为 DatePicker 和 TimePicker 设置限制
- javascript - 为什么我不能像传递其他变量一样将函数从 Express.js 传递给 EJS?
- excel - 变量复位为 0
- c# - 在 C# 中遍历 GUI 按钮网格
- reactjs - Babel 7 不包含使用 @babel/env 的 Object.entries Core-JS polyfill
- coq - 从 Coq 中的流中提取有限性的证据