我正在用Python开始一个小项目,我想用py.test创建一个单元测试。
我需要修补pymongo
模块或MongoClient
类。
所以我试过这样的事情:
@pytest.fixture(scope='module')
def mock_pymongo(monkeypatch):
monkeypatch.setattr('pymongo', mongomock)
或者像这样:
@pytest.fixture(scope='class')
def mock_pymongo(monkeypatch):
monkeypatch.setattr('pymongo.mongo_client.MongoClient', mongomock.mongo_client.MongoClient)
现在在两个测试中我都在做我的范围不匹配错误
scopeMismatch: You tried to access the 'function' scoped fixture 'monkeypatch' with a 'module' scoped request object, involved factories
tests/test_1.py:17: def mock_pymongo(monkeypatch)
也许我正在使用正确的工具 但有没有办法使用monkeypatch来模拟我的单元测试中的类和模块?
答案 0 :(得分:0)
scope
参数没有指定要修补的内容 - 它指定了灯具的使用寿命。使用默认范围(module
),修补将在每次测试之前发生,并在测试之后恢复。这通常是你想要的行为。