小编Jit*_*ama的帖子

带有指针初始化的C结构

当实例化包含结构指针数组的结构时,我保证结构数组成员中的所有指针都将设置为NULL

这是一个示例结构:

typedef struct mmNode {
  int val;
  int board[2][NUM_PITS+1];
  int side;
  struct mmNode* children[NUM_PITS+1];
} mmNode;
Run Code Online (Sandbox Code Playgroud)

IE:如果我创建一个mmNode结构的实例,那么mmNode.children总是将元素设置为NULL

c struct pointers

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

无法在pytest中使用pytest-mock同时验证构造和实例方法调用

首先,我使用 pytest-mock 和 pytest 包来测试我正在开发的软件项目。

我遇到一种情况,我正在测试模块中的类并尝试模拟它从其__init__方法实例化的复合对象。当我这样做时,我能够断言该__init__方法被正确调用,但是当我尝试断言实例方法被调用时,我收到断言错误。

当我通过传递选项来调试 pytest 时,我通过检查对象的属性--pdb来验证它“没有”被调用,但是当我检查对象的属性时,我发现它实际上被调用了。MagicMock().method.calledMagicMock().method_calls

这是一个简单的例子来说明我的意思:

测试.py

import module

def test_Calling(mocker):
    mocker.patch('module.Called', autospec=True)

    module.Calling('argument')

    module.Called.assert_called_once_with('argument')
    module.Called.check_me.assert_called_once()
Run Code Online (Sandbox Code Playgroud)

模块.py

class Calling(object):
    def __init__(self, argument):
        called_instance = Called(argument)
        called_instance.check_me()

class Called(object):
    def __init__(self, argument):
        pass

    def check_me(self):
        pass
Run Code Online (Sandbox Code Playgroud)

这是 pytest/pdb 会话:

(venv) C:\pytest-issue>pytest --pdb test.py
============================= test session starts =============================
platform win32 -- Python 2.7.12, pytest-3.0.6, py-1.4.32, pluggy-0.4.0
rootdir: C:\pytest-issue, inifile:
plugins: mock-1.5.0
collected 1 items

test.py F
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking pytest

3
推荐指数
1
解决办法
1566
查看次数

如何在Swift 2.2中替换复杂的C风格for循环

对于我开发的无符号整数类型库,我有一个专门的C风格for循环,用于计算存储数值中的有效位.我已经挣扎了一段时间,如何将其转换为Swift 2.2+样式的循环.这是有问题的代码:

/// Counts up the significant bits in stored data.
public var significantBits: UInt128 {
    // Will turn into final result.
    var significantBitCount: UInt128 = 0
    // The bits to crawl in loop.
    var bitsToWalk: UInt64 = 0
    if self.value.upperBits > 0 {
        bitsToWalk = self.value.upperBits
        // When upperBits > 0, lowerBits are all significant.
        significantBitCount += 64
    } else if self.value.lowerBits > 0 {
        bitsToWalk = self.value.lowerBits
    }
    if bitsToWalk > 0 {
        // Walk significant bits by …
Run Code Online (Sandbox Code Playgroud)

swift

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

标签 统计

c ×1

mocking ×1

pointers ×1

pytest ×1

python ×1

struct ×1

swift ×1

unit-testing ×1