首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在py.test中设置补丁中的类或模块属性

如何在py.test中设置补丁中的类或模块属性
EN

Stack Overflow用户
提问于 2016-06-09 16:26:39
回答 1查看 888关注 0票数 0

我正在用Python语言开始一个小项目,我想用py.test创建一个单元测试。我需要修补pymongo模块或MongoClient类。所以我尝试了这样的方法:

代码语言:javascript
复制
@pytest.fixture(scope='module')
def mock_pymongo(monkeypatch):
    monkeypatch.setattr('pymongo', mongomock)

或者像这样的东西:

代码语言:javascript
复制
@pytest.fixture(scope='class')
def mock_pymongo(monkeypatch):
    monkeypatch.setattr('pymongo.mongo_client.MongoClient', mongomock.mongo_client.MongoClient)

现在,在我做的两个测试中,我得到了一个作用域不匹配错误

代码语言:javascript
复制
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来模拟类和模块呢?

EN

回答 1

Stack Overflow用户

发布于 2016-06-10 15:36:58

scope参数没有指定要打什么补丁-它指定了fixture的生命周期。使用默认作用域(module),修补将在每次测试之前进行,并在测试后恢复。这通常是您想要的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37720593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档