python - 模拟调用另一个方法的方法
问题描述
假设我有一个带有方法的测试类 TestSuite test_database_inaccessible()
。我想run()
在另一个类中测试一个方法,AA_database.run()
调用 is_primary()
. 我可以模拟 is_primary 以返回 True。
我努力了
with patch.object(AADatabase, "is_primary") as is_primary_mocked:
self.dbsize = 2.1e10
self.returncode = 2
is_primary_mocked.return_value = True
self.AADatabase.run()
但我明白了
AttributeError:“TestSuite”对象没有属性“AADatabase”
以前,我曾简单地尝试过
with patch.object(AADatabase, "is_primary") as is_primary_mocked:
self.dbsize = 2.1e10
self.returncode = 2
is_primary_mocked.return_value = True
AADatabase.run()
但是我收到了不同的错误信息。
如果补丁在这里是错误的工具,我不介意切换到不同的工具。我已经尝试了很多不同的方法。
解决方案
Here is the unit test solution based on the code you provided.
main.py
:
class AADatabase:
@classmethod
def is_primary(cls):
return False
@classmethod
def run(cls):
return cls.is_primary()
test_main.py
:
import unittest
from main import AADatabase
from unittest.mock import patch
class TestAADatabase(unittest.TestCase):
def test_database_inaccessible(self):
with patch.object(AADatabase, 'is_primary') as is_primary_mocked:
is_primary_mocked.return_value = True
res = AADatabase.run()
self.assertTrue(res)
if __name__ == '__main__':
unittest.main()
Unit test result with coverage report:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Name Stmts Miss Cover Missing
-----------------------------------------------------------------------
src/stackoverflow/58862981/main.py 5 1 80% 4
src/stackoverflow/58862981/test_main.py 11 0 100%
-----------------------------------------------------------------------
TOTAL 16 1 94%
Source code: https://github.com/mrdulin/python-codelab/tree/master/src/stackoverflow/58862981
推荐阅读
- python - 在 python 中覆盖 __gt__ 的行为
- reactjs - TypeError:无法读取未定义 Jest 的属性“parentNode”
- excel - 预期结束子
- python-3.x - 当参数是对象实例并且缓存需要查看实例属性时,如何 lru_cache 函数?
- r - 如何绘制在列上运行循环的折线图?
- json - 将 JSON 值数据类型从转换为字符串
- python - 如何在 Python 中为对数正态分布和指数分布生成 N 个随机数?
- antd - Antd design: Form : 如何使用 form.setFieldsValue 改变数据?
- github - 如何在 github 中添加图片横幅?
- r - 找出每个因子之间的不同值并在 r 中绘制直方图