我大概遇到这样的问题:
在文件data.py
中我有
from typing import ClassVar
from tinydb import TinyDB
from dataclasses import dataclass
@dataclass
class Data:
db: ClassVar = TinyDB("some_path")
@property
def some_data(self):
return 100
我想模拟some_data
方法。
我尝试过:
import pytest
import pandas as pd
from package1.data import Data
@pytest.fixture
def mocked_raw_data(mocker):
m = mocker.patch.object(
Data, "some_data", return_value=10, new_callable=mocker.PropertyMock
)
)
return m
def test_some_data(mocked_raw_data):
assert Data().some_data == 2
但是显然,这会给db
方法类变量带来错误。我怎样也可以模拟这个变量?我的方法通常有意义吗?
答案 0 :(得分:-1)
您使用@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