Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pytest中使用mocker模拟类变量_Python_Unit Testing_Mocking_Pytest - Fatal编程技术网

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