我有一个读取日志文件和过滤结果的函数,我想测试以确保它正确过滤。
我的代码
import os
import random
import unittest
from unittest.mock import patch, mock_open
__SAMPLE_LOG__ = os.path.join(settings.BASE_DIR, "apps/tests/log_viewer/sample_logs/sample_manager_log.log")
class FilterLog(unittest.TestCase):
def setUp(self):
with open(__SAMPLE_LOG__) as f:
self.sample_data = f.read()
@patch('builtins.open', new_callable = mock_open, read_data = self.sample_data)
def test_filterDate(self, mock_file):
day = '08'
month = '08'
year = '2019'
results = filter_log(filter_by = 'date', day = day, month = month, year = year)
self.assertEqual(open(settings.ACTIVITY_LOG_FILE).read(), self.sample_data)
错误
@patch('builtins.open', new_callable = mock_open, read_data = self.sample_data)
NameError:名称“自我”未定义
我的问题
我应该如何将数据传递到mock_open()?我觉得with open() ... read()在文件顶部有一个不好的做法,我也不能把它作为一个类变量(可以吗?),那么我有什么选择呢?
文件说什么
从文档 read_data中获取一个字符串,所以我需要以某种方式将文件读入一个变量并将其传入。但是在哪里读取文件合适?在模块的顶部,在课程的开头,还是在setUp()?
侃侃无极
相关分类