nas*_*eeg 9 python unit-testing
我有两个函数 - 一个用于构建一组文件的路径,另一个用于读取文件.以下是两个功能:
def pass_file_name(self):
self.log_files= []
file_name = self.path+"\\access_"+self.appliacation+".log"
if os.path.isfile(file_name):
self.log_files.append(file_name)
for i in xrange(7):
file_name = self.path+"\\access_"+self.appliacation+".log"+"."+str(i+1)
if os.path.isfile(file_name):
self.log_files.append(file_name)
return self.log_files
def read_log_files (self, log_file_names):
self.log_entrys = []
self.log_line = []
for i in log_file_names:
self.f = open(i)
for line in self.f:
self.log_line = line.split(" ")
#print self.log_line
self.log_entrys.append(self.log_line)
return self.log_entrys
Run Code Online (Sandbox Code Playgroud)
对这两个功能进行单元测试的最佳方法是什么?
你有两个单位:
因此应该有两个单元测试用例(即带测试的类).首先只测试文件路径生成.第二个是测试从您在tests目录的特殊子目录中准备的预定义文件集读取,它应该与第一个测试用例隔离测试.
在您的情况下,您可能会有非常短的日志文件进行测试.在这种情况下,为了更好的可读性和维护,最好将它们嵌入测试代码中.但在这种情况下,你必须稍微提高你的阅读功能,这样它可以采用文件名或文件类对象:
from cStringIO import StringIO
# ...
def test_some_log_reading_scenario(self):
log1 = '\n'.join([
'log line',
'another log line'
])
log2 = '\n'.join([
'another log another line',
'lala blah blah'
])
# ...
result = myobj.read_log_files([StringIO(log1), StringIO(log2)])
# assert result
Run Code Online (Sandbox Code Playgroud)