python-3.x - 如何模拟在方法中创建的自我变量
问题描述
我在通过模拟函数编写单元测试用例时卡住了。我在函数内部创建了一个 self 变量,而不是通过 init 方法创建的。当我运行脚本时,它会引发错误。
myFooFile.py
:
class Foo(object):
def my_foo(self):
self.MY_LIST = []
self.generate_value()
self.other_function()
def generate_value(self):
some_ops_value = 10
return self.MY_LIST.append(some_ops_value)
我MY_LIST
在方法中创建了变量my_foo
,而不是通过__init__
方法。我正在通过该generate_value
方法收集值。当我尝试创建测试generate_value
方法时,会引发错误
AttributeError:“Foo”对象没有属性“MY_LIST”。
不知道如何模拟 MY_LIST 并让它工作
下面是我的测试脚本:
import unittest
from unittest import TestCase, mock
from myFooFile import Foo
class FooTest(TestCase):
def setUp(self):
self.foo = Foo()
def test_generate_value(self):
self.assertEqual(self.foo.generate_value(), [10])
unittest.main()
解决方案
推荐阅读
- java - 在休息 API 中使用 POST 方法而不是 GET
- ios - Flutter beacons_plugin - 未处理的异常:MissingPluginException(在通道 beacons_plugin 上找不到方法 startMonitoring 的实现)
- google-sheets-formula - 使用自定义公式按单元格中值的长度过滤
- java - Hazelcast 插入和更新
- python - Python错误:打印(数据+“\ n”)类型错误:尝试通过网络套接字发送命令时无法将str连接到字节
- django - 不能用新用户登录,只能用老用户登录(Django Rest Framework views.obtain_auth_token)
- spring - 在 tomcat 7.x 中配置 Apache dbcp2 连接池
- python - Python:避免子模块中的重复导入初始化
- django - 有没有其他方法可以避免在抓取时重复数据并避免将相同的数据存储在数据库中?
- pyramid - 使用滤锅反序列化 Multidict