は、私はこのようなテストファイル記述する必要があります。ユニットテストでライブラリをインポートする場所は? Pythonの
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
をしかし、私は(のは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
それともテストケース関数の前とオブジェクトの初期化である:
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
私はこれが最善の方法だとは言えませんが、何年も前に似たような質問をしましたが、これはどうやって単体テストのためのインポートを行ったのですかhttp://stackoverflow.com/questions/34689852/is-this- a-proper-way-to-test-stdout-with-python-3-unittest – tsumnia
つまり、インポートが特定のテストケースに依存している場合、importlibは使用するルートかもしれません – tsumnia