python - 如何在 python 的 main() 函数中模拟一个对象?
问题描述
我正在尝试模拟 data1 和 data2 并尝试提供返回值。我有以下代码:
import pandas
def main():
data1= pandas.read_excel('path1')
data2= pandas.read_excel('path2')
if __name__ == '__main__':
main()
import test1
from unittest.mock import patch
import pandas
class Testdata(unittest.TestCase):
@patch('test1.main.data1')
@patch('test1.main.data2')
def test_main(self, mock_data1, mock_data2):
mock_data1.return_value = pandas.DataFrame([some dataframe])
mock_data2.return_value = pandas.DataFrame([some dataframe])
test.main()
data1.assert_called_once()
data2.assert_called_once()
if __name__ == '__main__':
unittest.main()
我收到以下错误:
Error
Traceback (most recent call last):
File "C:\apps\python\3.6.2\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "C:\apps\python\3.6.2\lib\unittest\case.py", line 605, in run
testMethod()
File "C:\apps\python\3.6.2\lib\unittest\mock.py", line 1171, in patched
arg = patching.__enter__()
File "C:\apps\python\3.6.2\lib\unittest\mock.py", line 1227, in __enter__
self.target = self.getter()
File "C:\apps\python\3.6.2\lib\unittest\mock.py", line 1397, in <lambda>
getter = lambda: _importer(target)
File "C:\apps\python\3.6.2\lib\unittest\mock.py", line 1080, in _importer
thing = __import__(import_path)
ModuleNotFoundError: No module named 'main'
如何解决此问题以及如何模拟 data1 和 data2 并为其提供返回值?
解决方案
在查看完整代码之前不能说太多,但我import unitest
在开始时添加的东西就可以完成这项工作。
推荐阅读
- deep-learning - 我们如何计算包含转置卷积层的网络的感受野?
- java - 编写一个 NumberCount 程序,对一个或多个文本文件中的数字(包括整数和浮点值)进行计数。(今天到期哈哈)
- java - 我在写一个密码,但只有当我忽略空格时它才会起作用。有没有办法让它忽略空格?
- c# - 实体框架如何在两个表的两列之间建立关系
- python - 看不见的坏人?py游戏无法显示坏人
- html - 如何在 Angular 材质对话框中垂直对齐输入框?
- javascript - 使用 react native 建立 VPN 连接
- python - 编写长 if-else 语句的 Pythonic 方式是什么?
- postgresql - Postgres 物化路径 - 使用 ltree 有什么好处?
- mysql - MySQL UNION ALL 太慢了