如何对python版本切换进行单元测试 [英] How to unit test a python version switch

查看:32
本文介绍了如何对python版本切换进行单元测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何为以下函数编写单元测试:

def version_switch():
    if sys.version_info.major < 3:
        print('not python 3')
    else:
        print('python 3')

我的第一个想法是模仿sys.version_info.major,但因为它是只读属性,所以不起作用。

可以肯定的是:我确实使用TOX在py3和py2下运行我的测试套件。但是,每次运行将只检查一条代码路径。实际函数不使用任何特定于语言的功能。我是否应该寻找其他方法来确定版本,即更容易模拟的方法?

推荐答案

您可能无法换出sys.version_infomajor的值,但可以换出sysversion_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。

这篇关于如何对python版本切换进行单元测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆