如何单元测试打印到文件的方法?
How to unittest a method that print to file?
我有一种方法可以将一些值打印到文件中。
from typing import TextIO
def print_to_file(file: TextIO, value: str) -> None:
print(value, file=file)
这是我当前的单元测试,但在在线服务器上 运行 单元测试时会出现 PermissionError。正确的测试方法是什么?
def test_print_to_file(self):
file_name = 'temp_file.txt'
value = '123'
expected_content = '123\n'
with open(file_name, 'w') as file:
print_to_file(file, value)
with open(file_name, 'r') as file:
self.assertEqual(file.read(), expected_content)
尝试在 w & r 中添加 +
并尝试
def test_print_to_file(self):
file_name = 'temp_file.txt'
value = '123'
expected_content = '123\n'
with open(file_name, 'w+') as file:
print_to_file(file, value)
with open(file_name, 'r+') as file:
self.assertEqual(file.read(), expected_content)
我使用 tempfile 修复了它。
import tempfile
def test_print_to_file(self):
value = '123'
expected_content = '123\n'
with tempfile.TemporaryFile('w+t') as file:
print_to_file(file, value)
file.seek(0)
self.assertEqual(file.read(), expected_content )
我有一种方法可以将一些值打印到文件中。
from typing import TextIO
def print_to_file(file: TextIO, value: str) -> None:
print(value, file=file)
这是我当前的单元测试,但在在线服务器上 运行 单元测试时会出现 PermissionError。正确的测试方法是什么?
def test_print_to_file(self):
file_name = 'temp_file.txt'
value = '123'
expected_content = '123\n'
with open(file_name, 'w') as file:
print_to_file(file, value)
with open(file_name, 'r') as file:
self.assertEqual(file.read(), expected_content)
尝试在 w & r 中添加 +
并尝试
def test_print_to_file(self):
file_name = 'temp_file.txt'
value = '123'
expected_content = '123\n'
with open(file_name, 'w+') as file:
print_to_file(file, value)
with open(file_name, 'r+') as file:
self.assertEqual(file.read(), expected_content)
我使用 tempfile 修复了它。
import tempfile
def test_print_to_file(self):
value = '123'
expected_content = '123\n'
with tempfile.TemporaryFile('w+t') as file:
print_to_file(file, value)
file.seek(0)
self.assertEqual(file.read(), expected_content )