sid*_*sid 2 python python-unittest python-unittest.mock
这是获取版本并与 open 一起使用以从文件路径位置读取文件的函数。
def get_version(self):
try:
with open("file_path") as openfile:
for line in openfile:
sline = line.split()
for row, column in enumerate(sline):
if column == "version=":
version = sline[row+1].strip('"')
return version
Run Code Online (Sandbox Code Playgroud)
您可以使用unittest.mock.mock_open(mock=None, read_data=None)来模拟该open函数。
例如
main.py:
class MyClass:
def get_version(self):
version = ''
with open("file_path") as openfile:
for line in openfile:
sline = line.split()
for row, column in enumerate(sline):
if column == "version=":
version = sline[row+1].strip('"')
return version
Run Code Online (Sandbox Code Playgroud)
test_main.py:
from main import MyClass
import unittest
from unittest.mock import mock_open, patch
class TestMain(unittest.TestCase):
def test_get_version(self):
m = mock_open(read_data='version= 1.0.0')
with patch('builtins.open', m) as mocked_open:
myclass_instace = MyClass()
version = myclass_instace.get_version()
self.assertEqual(version, '1.0.0')
m.assert_called_with('file_path')
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
100%覆盖率的单元测试结果:
.
----------------------------------------------------------------------
Ran 1 test in 0.011s
OK
Name Stmts Miss Cover Missing
-----------------------------------------------------------------------
src/stackoverflow/60183706/main.py 10 0 100%
src/stackoverflow/60183706/test_main.py 14 0 100%
-----------------------------------------------------------------------
TOTAL 24 0 100%
Run Code Online (Sandbox Code Playgroud)
Python版本:Python 3.7.5
| 归档时间: |
|
| 查看次数: |
3360 次 |
| 最近记录: |