我必须写一个这样的测试文件:
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
答案 0 :(得分:0)
参见PEP8:https://www.python.org/dev/peps/pep-0008/#id23
它说,
导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前。