小编JLD*_*iaz的帖子

Python,模拟和包装方法,没有即时对象

我想模拟一个类和方法的方法wraps,以便实际调用它,但我可以检查传递给它的参数.我在几个地方(例如这里)看到通常的方法如下(适应我的观点):

from unittest import TestCase
from unittest.mock import patch


class Potato(object):
    def foo(self, n):
        return self.bar(n)

    def bar(self, n):
        return n + 2


class PotatoTest(TestCase):
    spud = Potato()

    @patch.object(Potato, 'foo', wraps=spud.foo)
    def test_something(self, mock):
        forty_two = self.spud.foo(n=40)
        mock.assert_called_once_with(n=40)
        self.assertEqual(forty_two, 42)
Run Code Online (Sandbox Code Playgroud)

但是,这会实例化该类Potato,以便将mock绑定到实例方法spud.foo.

我需要的是foo所有实例中Potato模拟该方法,并将它们包装在原始方法周围.即,我需要以下内容:

from unittest import TestCase
from unittest.mock import patch


class Potato(object):
    def foo(self, n):
        return self.bar(n)

    def bar(self, n):
        return n + 2


class PotatoTest(TestCase):
    @patch.object(Potato, …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking python-3.x

16
推荐指数
2
解决办法
1286
查看次数

使用病原体和 git 子模块自定义 vim 包

我在不同的机器上使用 vim 并希望在它们之间保持我的配置同步,所以我尝试了使用pathogen安装不同 vim 插件的众所周知的方法,将它们作为 git 子模块保存,例如这里描述的。

现在我的.vim文件夹是一个 git repo,其中包含 .git 文件中的每个文件夹作为子模块.vim/bundle。我将该主存储库上传到 bitbucket 并从我的其他机器上克隆它,经过一段时间后git submodule initgit submodule update我根据需要在所有机器中获得了相同的配置。

现在,当我需要在其中一些插件中进行一些自定义时,问题就来了。例如,一些子模块只是 vim 颜色方案。假设我想改变,说评论的颜色。这样做的正确方法是什么?

我想到了一些想法:

  1. 如果我直接修改.vim/bundle/vim-github-colorscheme/colors(例如),那么 AFAIK,我应该将这些更改推送到主存储vim-github-colorscheme库,我不能,而且无论如何都是可笑的。我的定制本质上是私有的。但是如果我不与子模块 repo 同步,我的其他机器上将看不到这些更改。
  2. 如果我将自己的颜色方案自定义保留在.vim/colors. 此外,我不清楚如何以这种方式完成其他类型的自定义(例如,修改 snipMate 的一些片段,甚至修改插件的代码)
  3. 我应该制作插件的私有分支,将其上传到 bitbucket,并将其用作子模块而不是原始模块吗?这样至少我可以正确地执行 1. 中的方法,但它看起来不是一个好的选择。特别是因为我事先不知道是否需要自定义插件,所以这将迫使我为“以防万一”安装的每个新 vim 插件制作一个分支。
  4. 我可以将包的代码保存在单个 git 存储库下,即根本不使用子模块。这将使我可以自由地修改它们,将修改与我的 bitbucket 存储库同步,并使用单个git pull. 然而这样一来,当插件的原始来源发生变化时,将很难将其与我自己的修改合并。

我的想法用完了,而且由于某种原因,以上所有内容在我看来都是错误的。使用 git 和 pathogen 的人如何管理这种情况?

vim customization git-submodules pathogen

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

不同的WebSocket协议版本之间有什么关系?

我最近了解到有很多WebSocket协议规范(其中一组名为hixie- ,另一组是hybi-,最后是RFC 6455).

我认为hixie-和hybi-是之前的草案,并且RFC是所有实现的"最后一个词"最终会收敛.但是,我很惊讶地发现RFC是从2011年12月开始的,而最新的hybi-*是从2012年2月开始的.

有人可以请一些亮点吗?所有这些分支的历史发展是什么?未来的路线图是什么?

那么,那些有趣的名字(hixie和hybi)代表什么?

protocols version websocket

4
推荐指数
1
解决办法
937
查看次数

IntegerField()在JSON中转换为任何数字的字符串

这个问题很相似,这其中,只有更差......在我的测试,因此即使是很小的整数1转换为字符串.这是我的MWE:

app.yaml

application: your-app-id
version: 1
runtime: python27
threadsafe: true
api_version: 1

handlers:
- url: /_ah/spi/.*
  script: example.app
  secure: always

libraries:
- name: endpoints
  version: 1.0
Run Code Online (Sandbox Code Playgroud)

example.py

import endpoints
from protorpc import messages
from protorpc import message_types
from protorpc import remote

package = 'Example'

class Number(messages.Message):
    number = messages.IntegerField(1)

@endpoints.api(name='example', version='v1')
class ExampleApi(remote.Service):
    @endpoints.method(message_types.VoidMessage, Number,
            path = "getNumber", http_method='GET', name = 'getNumber')
    def get_number(self, _):
        return Number(number = 3)  # This is a small integer. Isn't? …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine json google-cloud-endpoints

0
推荐指数
1
解决办法
490
查看次数