Python 在pytest中使用mocker模拟类变量
我有一个大致如下的问题: 在文件Python 在pytest中使用mocker模拟类变量,python,unit-testing,mocking,pytest,Python,Unit Testing,Mocking,Pytest,我有一个大致如下的问题: 在文件data.py中,我有 从输入importclassvar开始 从tinydb导入tinydb 从数据类导入数据类 @数据类 类别数据: db:ClassVar=TinyDB(“某些路径”) @财产 定义某些_数据(自身): 返回100 我想模拟一些数据方法 我试过: 导入pytest 作为pd进口熊猫 从package1.data导入数据 @pytest.fixture def模拟原始数据(模拟程序): m=mocker.patch.object( 数据,
data.py
中,我有
从输入importclassvar开始
从tinydb导入tinydb
从数据类导入数据类
@数据类
类别数据:
db:ClassVar=TinyDB(“某些路径”)
@财产
定义某些_数据(自身):
返回100
我想模拟一些数据方法
我试过:
导入pytest
作为pd进口熊猫
从package1.data导入数据
@pytest.fixture
def模拟原始数据(模拟程序):
m=mocker.patch.object(
数据,“一些数据”,返回值=10,新的可调用值=mocker.PropertyMock
)
)
返回m
def测试部分数据(模拟原始数据):
断言数据()。某些_数据==2
但是很明显,这给了db
method类变量一个错误。我怎样才能模拟这个变量呢?我的方法通常有意义吗?您是否使用了@pytest.mark.django_db
这将有助于在单独的数据库(而不是生产数据库)上测试数据
关于你关于模仿的问题,你可以用猴子补丁来模仿
例如
def test_user_details(monkeypatch):
mommy.make('Hallpass', user=user)
return_data =
{
'user_created':'done'
}
monkeypatch.setattr(
'user.create_user', lambda *args, **kwargs: return_data)
user_1 = create_user(user="+123456789")
assert user_1.return_data == return_data