在单元测试中导入库的位置?蟒蛇

时间:2016-10-26 02:32:51

标签: python unit-testing import testcase

我必须写一个这样的测试文件:

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

1 个答案:

答案 0 :(得分:0)

参见PEP8:https://www.python.org/dev/peps/pep-0008/#id23

它说,

  

导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前。