- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力学习 Python 练习 49 (http://learnpythonthehardway.org/book/ex49.html),我需要比较两个不同的对象。这是我需要测试的代码:
class ParserError(Exception):
pass
class Sentence(object):
def __init__(self, subject, verb, object):
# remember we take ('noun','princess') tuples and convert them
self.subject = subject[1]
self.verb = verb[1]
self.object = object[1]
def peek(word_list):
if word_list:
word = word_list[0]
return word[0]
else:
return None
def match(word_list, expecting):
if word_list:
word = word_list.pop(0) #Here it's returning 'noun' from the noun/princess tuple
if word[0] == expecting: #Here it's testing whether or not the new item in the 0 position ('noun' in this case) = expecting
return word
else:
return None
else:
return None
def skip(word_list, word_type):
while peek(word_list) == word_type:
match(word_list, word_type)
def parse_verb(word_list):
skip(word_list, 'stop')
if peek(word_list) == 'verb':
return match(word_list, 'verb')
else:
raise ParserError("Expected a verb next.")
def parse_object(word_list):
skip(word_list, 'stop')
next = peek(word_list)
if next == 'noun':
return match(word_list, 'noun')
if next == 'direction':
return match(word_list, 'direction')
else:
raise ParserError("Expected a noun or direction next.")
def parse_subject(word_list, subj):
verb = parse_verb(word_list)
obj = parse_object(word_list)
return Sentence(subj, verb, obj)
def parse_sentence(word_list):
skip(word_list, 'stop')
start = peek(word_list)
if start == 'noun':
subj = match(word_list, 'noun')
return parse_subject(word_list, subj)
elif start == 'verb':
# assume the subject is the player then
return parse_subject(word_list, ('noun', 'player'))
else:
raise ParserError("Must start with subject, object, or verb not: %s" % start)
我的问题是函数parse_sentence
,我应该在其中创建一个句子对象。因此,我需要在测试代码中创建另一个句子对象并确保它是相同的:
def test_parse_subject():
word_list = [('verb', 'kill'), ('direction', 'north')]
subj = ('noun', 'princess')
verb = ('verb', 'kill')
obj = ('direction', 'north')
obj_sent = Sentence(subj, verb, obj)
assert_equal(parser.parse_subject(word_list, subj), obj_sent)
但我不断收到此回溯错误:
Traceback (most recent call last):
File "G:\Python27\lib\site-packages\nose\case.py", line 197, in runTest
self.test(*self.arg)
File "G:\Users\Charles\dropbox\programming\parsing_test\skeleton\tests\parser_tests.py", line 45, in test_parse_subjec
t
assert_equal(parser.parse_subject(word_list, subj), obj_sent)
AssertionError: <ex49.parser.Sentence object at 0x02651C50> != <ex49.parser.Sentence object at 0x02651C30>
所以它不会返回相同的对象,但我很确定它们是相同的。我给了他们正确的论据。如果对象相同,我如何确认这一点?提前致谢
最佳答案
这是失败的,因为您正在比较两个实例化的 Sentence 对象,而不是它们各自的属性。
检查“Elegant ways to support equivalence ("equality") in Python classes ”以获取可以比较属性的方法。
关于python - 用 Nose 比较物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20738217/
我在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_
我是一名优秀的程序员,十分优秀!