小编Dan*_*app的帖子

如何根据测试的固定装置签名动态地将新固定装置添加到测试中

所以我想实现的是使用 pytest 自动模拟各个模块中的函数。所以我在 conftest.py 中定义了这个:

import sys
import __builtin__
from itertools import chain


# Fixture factory magic START
NORMAL_MOCKS = [
    "logger", "error", "logging", "base_error", "partial"]
BUILTIN_MOCKS = ["exit"]


def _mock_factory(name, builtin):
    def _mock(monkeypatch, request):
        module = __builtin__ if builtin else request.node.module.MODULE
        ret = Mock()
        monkeypatch.setattr(module, name, ret)
        return ret
    return _mock


iterable = chain(
    ((el, False) for el in NORMAL_MOCKS),
    ((el, True) for el in BUILTIN_MOCKS))
for name, builtin in iterable:
    fname = "mock_{name}".format(name=name)
    _tmp_fn = pytest.fixture(name=fname)(_mock_factory(name, builtin))
    _tmp_fn.__name__ …
Run Code Online (Sandbox Code Playgroud)

python pytest

7
推荐指数
1
解决办法
5703
查看次数

标签 统计

pytest ×1

python ×1