小编Ale*_*lex的帖子

如何在unittest.TestCase setUp方法中使用类补丁装饰器

我目前正在为Python中的sqlite3包装器编写测试覆盖.目前我的代码看起来像这样:

import unittest
from unittest.mock import patch
from MemberDatabase import MemberDatabase

@patch('sqlite3.connect')
class MemberDatabaseTestCase(unittest.TestCase):
    def test_dbConnect(self, mocksql_connect):
        mdb = MemberDatabase('test.db')
        mocksql_connect.assert_called_with('test.db')

    def test_optionalCommit(self, mocksql_connect):
        mdb = MemberDatabase('test.db')
        mdb.optionalCommit()
        self.assertTrue(mocksql_connect().commit.called)
Run Code Online (Sandbox Code Playgroud)

其他各种测试都mdb以相同的方式创建.MemberDatabase调用的构造函数sqlite3.connect().我想通过移动的分配整理测试用例了mdbsetUp().但是,sqlite3.connect()不会被setUp()模拟,因此这会导致实际sqlite3.connect()调用并创建真正的数据库连接.

有没有办法用打补丁sqlite3.connect()setUp()?也许我需要在内部创建模拟setUp()而不是使用装饰器,但我认为使用装饰器方法的代码更清晰.另外,我读过如果我创建模拟

python unit-testing patch mocking

5
推荐指数
0
解决办法
958
查看次数

JavaScript ES6:将数组拆分为剩余部分,最后进行解构

我刚刚发现了令人愉快的 ES6 列表解构语法,即

ls = [1, 2, 3]

[first, ...rest] = ls
Run Code Online (Sandbox Code Playgroud)

这台first1rest[2,3]。但是,是否可以将列表拆分为rest=[1,2]last=3使用类似的语法?

我没有任何运气谷歌搜索它。我对这样的语法尝试了一些明显的猜测(见下文),但它们都产生了语法错误。

[rest..., last] = ls
[...rest, last] = ls
Run Code Online (Sandbox Code Playgroud)

我想我可以通过两次反转列表来做到这一点,所以我的问题的另一种解决方案是恒定时间列表反转功能。

javascript arrays destructuring ecmascript-6

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

pd.Series of Lists - 检查列表中的元素

我有一个 DataFrame,其中一列将列表作为条目。对于给定的给定值,x我想得到一个 pd.Series 布尔值,告诉我是否x在每个列表中。例如,给定 DataFrame

    index    lists
    0        []
    1        [1, 2]
    2        [1]
    3        [3, 4]
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情df.lists.contains(1)然后回来False, True, True, False

我知道我可以用一个Python循环或理解这样做,但我非常喜欢熊猫的解决方案类似df.moddf.isin等等。

python pandas

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