【发布时间】:2016-10-26 02:32:51
【问题描述】:
我必须写一个这样的测试文件:
import unittest
from mylibrary import some_crazy_func
class TestSomething(unittest.TestCase):
def test_some_crazy_func_that_needs_io_open(self):
# Opens file
# Calls function
# assert outputs
但我不确定应该导入库的“pythonic 位置”在哪里(比如说io)。
是否应该在顶部:
import io
import unittest
from mylibrary import some_crazy_func
class TestSomething(unittest.TestCase):
def test_some_crazy_func_that_needs_io_open(self):
expected = ['abc', 'def', 'xyz']
with io.open('somestaticfile.txt', 'r') as fin:
outputs = [some_crazy_func(line) for line in fin]
assert outputs == expected
或者在TestCase的函数内:
import unittest
from mylibrary import some_crazy_func
class TestSomething(unittest.TestCase):
def test_some_crazy_func_that_needs_io_open(self):
import io
expected = ['abc', 'def', 'xyz']
with io.open('somestaticfile.txt', 'r') as fin:
outputs = [some_crazy_func(line) for line in fin]
assert outputs == expected
还是在TestCase函数之前和对象初始化时:
import unittest
from mylibrary import some_crazy_func
class TestSomething(unittest.TestCase):
import io
def test_some_crazy_func_that_needs_io_open(self):
expected = ['abc', 'def', 'xyz']
with io.open('somestaticfile.txt', 'r') as fin:
outputs = [some_crazy_func(line) for line in fin]
assert outputs == expected
【问题讨论】:
-
我不能说这是最好的方法,但几年前我问了一个类似的问题,这就是我如何导入单元测试stackoverflow.com/questions/34689852/…
-
也就是说,如果导入依赖于特定的测试用例,importlib 可能是您想要采取的路线
标签: python unit-testing import testcase