我正在用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来模拟类和模块呢?
发布于 2016-06-10 15:36:58
scope参数没有指定要打什么补丁-它指定了fixture的生命周期。使用默认作用域(module),修补将在每次测试之前进行,并在测试后恢复。这通常是您想要的行为。
https://stackoverflow.com/questions/37720593
复制相似问题