【发布时间】:2022-01-11 14:46:22
【问题描述】:
我想使用 Mock 测试库对模块中的一段代码进行单元测试。
# File_name: do.py
assert __name__ == "__main__", "This module should NOT be imported."
from disk import Disk
def bool_fun(args):
res = Disk.disks()
print(res)
if args not in res:
return -1
return args
上述文件包含 assert name == "__main__" 阻止模块在测试文件中导入。
# File_name: do_test.py
import unittest
from unittest import mock
import do
class DOTest(unittest.TestCase):
@mock.patch('do.Disk.disks')
def test_bool_fun(self, mock_disks):
args = 4
mock_disks.return_value = [4,3,2,3,4]
res = do.bool_fun(args)
self.assertEqual(res, args)
if __name__ == "__main__":
unittest.main()
在 do.py 文件中导入的另一个帮助文件,
# File_name: disk.py
import random
class Disk():
def __init__(self):
pass
def disks():
lis = []
for i in range(5):
lis.append(random.randint(1,10))
return lis
假设所有文件都保存在同一个目录中,我在尝试对其进行测试时遇到错误。
assert __name__ == "__main__", "This module should NOT be imported."
AssertionError: This module should NOT be imported.
但是,如果我从 do.py 文件中删除 assert 代码,效果会很好。
您能告诉我如何测试这些包含 assert name == "__main__" 的文件。
【问题讨论】:
标签: unit-testing python-unittest python-unittest.mock