如何对python版本切换进行单元测试
问题描述
如何为以下函数编写单元测试:
def version_switch():
if sys.version_info.major < 3:
print('not python 3')
else:
print('python 3')
我的第一个想法是模仿sys.version_info.major
,但因为它是只读属性,所以不起作用。
解决方案
您可能无法换出sys.version_info
的major
的值,但可以换出sys
的version_info
的值:
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import mock
>>> with mock.patch.object(sys, 'version_info') as v_info:
... v_info.major = 3
... print(sys.version_info.major)
...
3
请注意,我使用的是python2.7,但我说服sys
告诉我我使用的是python3.x。
相关文章