在Python 2下运行脚本时,是否可以忽略或屏蔽Python 3的部分语法?
我正在尝试编写一个单元测试,以便在Python 2或Python 3下运行Python模块。
测试包括只在Python 3下有效的语法(“产自”)--我只想在Python 3上运行测试时才运行这些测试。在Python 2下运行Python 3代码时,是否有一种方法可以禁用或屏蔽这个Python 3代码,以便在运行unittest模块时不会引发语法错误?
请参阅下面的削减示例:
import unittest
try:
import asyncio
# We must be running under Python 3 - run the sync and async tests.
ASYNC_SUPPORTED = True
except ImportError:
# We must be running under Python 2 - only run the sync tests.
ASYNC_SUPPORTED = False
class TestSyncMethods(unittest.TestCase):
def test_1(self):
# Test for synchronous functionality here
pass
# Test for asynchronous functionality here
class TestAsyncMethods(unittest.TestCase):
@unittest.skipIf(not ASYNC_SUPPORTED, "Async not supported")
def test_async_1(self):
@asyncio.coroutine
def go():
yield from sc.identify_a(1, 0x2B, True, True)如果我试图在Python2.x下运行这个unittest,那么在Python2.x指令中会出现一个语法错误,因为Python2.x不支持“产自”。理想情况下,如果单元测试在Python2.x下运行,我希望防止解析整个TestAsyncMethods类。有人知道怎么做吗?
发布于 2015-09-09 15:48:29
这个怎么样:
from sys import version_info
if version_info[0] > 2:
ASYNC_SUPPORTED = True
import asyncio
else:
ASYNC_SUPPORTED = True
asyncio = None正如亚历山大所指出的,您仍然需要在py2和py3模块中分离。除非你要与执行人员保持创造性,否则我强烈建议你几乎不惜一切代价避免这种做法。
https://stackoverflow.com/questions/32482502
复制相似问题