- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是个菜鸟,这是 w/r/t python 2.7 和我正在做的一个练习 艰难地学习 Python ( link to ex47 ) - 下面的文件是名为 ex47_tests.py,我收到的错误与在我正在工作的目录中运行 nosetests
相关。
根据nosetests
,错误来自test_map()
函数的west.add_paths({'east', start})
行code> 并指出: ValueError: 元素 #0 处的字典更新序列长度为 4; 2 是必需的
,但我不明白问题是什么......这是测试文件:
from nose.tools import *
from ex47.game import Room
def test_room():
gold = Room("GoldRoom",
"""This room has gold in it you can grab. There's a
door to the north.""")
assert_equal(gold.name, "GoldRoom")
assert_equal(gold.paths, {})
def test_room_paths():
center = Room("Center", "Test room in the center.")
north = Room("North", "Test room in the north.")
south = Room("South", "Test room in the south.")
center.add_paths({'north': north, 'south':south})
assert_equal(center.go('north'), north)
assert_equal(center.go('south'), south)
def test_map():
start = Room("Start", "You can go west and down a hole.")
west = Room("Trees", "There are trees here, you can go east.")
down = Room("Dungeon", "It's dark down here, you can go up.")
start.add_paths({'west': west, 'down': down})
west.add_paths({'east', start})
down.add_paths({'up': start})
assert_equal(start.go('west'), west)
assert_equal(start.go('west').go('east'), start)
assert_equal(start.go('down').go('up'), start)
作为引用,game.py 文件包含具有 add_paths
函数(方法?)的 Room
类:
class Room(object):
def __init__(self, name, description):
self.name = name
self.description = description
self.paths = {}
def go(self, direction):
return self.paths.get(direction, None)
def add_paths(self, paths):
self.paths.update(paths)
我已经对此进行了多次审查,并且已成功运行 game.py 文件中的 west.add_paths({'east', start})
代码,但是当我运行 nosetests
我不断收到同样的错误。在代码中发生错误的位置,我的解释是 west
包含一个空的 {}
,应该可以毫无问题地更新
,不是吗?有人可以提供一些关于为什么这不起作用以及错误来自何处的见解吗?
非常感谢。
最佳答案
代码中的错误来自此调用:
west.add_paths({'east', start})
对此进行的更正是您想要使用字典而不是集合进行更新:
west.add_paths({'east': start})
当您尝试使用集合更新字典时,以下示例会重现此错误:
>>> d = {}
>>> d.update({'east','start'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: dictionary update sequence element #0 has length 5; 2 is required
为了更清楚地了解该错误,如果您转到解释器并检查其类型:
注意“east”和“start”之间的逗号
>>> print(type({'east', 'start'}))
<type 'set'>
注意“east”和“start”之间的冒号
>>> print(type({'east': 'start'}))
<type 'dict'>
关于python - Nose 测试错误: ValueError: dictionary update sequence element #0 has length 4; 2 is required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35641483/
我在Trac / Bitten构建环境中的每个 checkin 中都有一些Selenium Webdriver GUI测试。由于种种愚蠢的原因,这些都是脆弱的,并且重新运行失败的测试总是可以的(除非它
我遇到了这个问题,这让我抓狂! 所以我正在开发我的第一个真正的 Google App Engine 应用程序,我总是喜欢在编写测试时发现新事物。 所以我有以下设置: 我有一个带有 nose、noseg
定义一个 Nose 测试方法test_circlearea_with_min_radius,它创建一个半径为0的圆c2并检查其计算面积是否与值0匹配 我已经编写了下面提到的代码,但仍然没有得到所需的输
它在文档中提到 ( http://nose.readthedocs.org/en/latest/api/core.html ) 但似乎没有任何示例,并且尝试它似乎在 cwd 中运行所有测试。 最佳答案
我正在尝试测试我的 django 项目,我有一个具有非常经典布局的应用程序,如下所示: project ├── __init__.py └── app ├── __init__.py
我正在编写一组测试用例,比如测试模块中的 Test1、Test2。 有没有办法使用命令 nose.main() 在该模块中跳过 Test1 或选择性地仅执行 Test2? 我的模块包含, 测试模块.p
我正在尝试实现一种完整而干净的测试 python 包的方法,一种适合以下要求的方法: 在干净的机器上执行测试而不设置它们 (virtualenv) 从 收集结果多平台 从 收集结果多个python解释
我刚刚开始进行测试开发,而且我正在努力理解要测试的内容。那里有很多 foobar 示例,但我很难知道如何测试我的项目单元。例如,使用这个简单地将文本文件的行作为列表返回的函数: def getLine
似乎是一个愚蠢的问题,但我一直无法弄清楚...... 我想使用 eclipse/pyunit 来运行我所有的测试。我已将测试运行器配置为 Nose 测试运行器。 现在我想让 pyunit 使用 Nos
是否有类似于 Nose 的 spec 的 py.test 插件(也是 pinocchio 的一部分)。我想看到测试运行器输出如下所示: Foobaz - behaves such and such
我已经安装了 django-nose 1.0 作为 Django 1.3.1 项目的测试运行器。我正在按照说明操作 on the pypi page关于仅测试模型。 这是我的 settings.py
如何为所有 Nose 测试用例创建一个仅在初始化期间调用一次的设置函数?我有一个只需要设置一次的全局配置,我觉得向每个模块添加以下内容(甚至为每个模块调用设置函数)有点多余: def setUp(se
我将 nose、django-nose、nose-exclude、coverage 添加到我的 buildout.cfg 中,并且跑了扩建。此外,我将 TEST_RUNNER 和 NOSE_ARGS
我正在为一个函数编写一个测试,该函数使用 Twisted 从 url 下载数据(我知道twisted.web.client.getPage,但是这个函数添加了一些额外的功能)。不管怎样,我想使用nos
我正在尝试使用nosetests 运行目录中的所有pyunit 测试。问题是我在这个目录中有 4 个测试,而 notests 只运行其中之一。如果我单独运行其他三个测试,例如: nosetests -
我有动态量的测试,所以我想使用 for 循环我会尝试这样的事情: from nose.tools import istest, nottest from nose.tools import eq_ i
我刚刚向我的一个 Python 模块添加了一个单元测试,但 nose 拒绝接收。测试看起来像这样: class TestMargin(unittest.TestCase): def setUp
当我运行 nosetests 时出现奇怪的错误: ====================================================================== ERRO
想象一下您有一个 BASE_CLASS 的情况。几个类继承自该类:CHILD_A、CHILD_B、CHILD_C。 现在让我们编写单元测试,但仅限于 CHILD_A、CHILD_B、CHILD_C。我
有没有办法在不运行它们的情况下获取 nose 当前识别的所有测试的列表? 根据文档--collect-only 启用collect-only:只收集和输出测试名称,不运行任何测试。 [COLLECT_
我是一名优秀的程序员,十分优秀!