小编Geo*_*ton的帖子

如何使用 pytest-mock 模拟类并控制 py.test 中的返回值?

我试图用来py.test测试一些执行各种LDAP搜索和修改的代码。

我正在使用pytest-mock,但我无法理解如何模拟 LDAP 对象的创建,并在模拟对象search_s()上调用a 时控制它返回的内容。

我以为这会做我想要的,但是测试失败了,计数显示生成器函数find_users()永远不会产生任何结果。

import pytest
# Here is some code to simply test mocking out ldap.initialize(), and
# controlling the return value from calls to search_s()
import ldap

def find_users(ldap_url, admin_user, admin_password, userbase):
    lobj = ldap.initialize(ldap_url)
    lobj.simple_bind_s(admin_user, admin_password)
    for i in lobj.search_s(userbase, ldap.SCOPE_SUBTREE, '*'):
        yield i[1]['uid'][0]

class TestMocking:

    @pytest.fixture()
    def no_ldap(self, mocker):
        return mocker.patch('ldap.initialize')


    def test_ad_one_user(self, no_ldap):
        # try and modify how search_s() would return
        no_ldap.search_s.return_value = …
Run Code Online (Sandbox Code Playgroud)

python mocking pytest

8
推荐指数
1
解决办法
2万
查看次数

如何比较 salt sls 文件中的版本字符串

saltstack 是否有相当于 puppets versioncmp() 的函数?或者,是否有一种方法可以在 jinja+yaml 渲染的 sls 文件中获取 distutils.version 或 Packaging.version.parse 方法(如Compare version strings in Python 中提到的)?

salt-stack

5
推荐指数
1
解决办法
2941
查看次数

标签 统计

mocking ×1

pytest ×1

python ×1

salt-stack ×1