Learn Python the hard way 习题49

这个练习是自己写测试了。按照函数一个个写,好像有点长了

from nose.tools import *
from Game import parser
from Game.lexicon import lexicon

lexi = lexicon.scan("fighter kill bear")
sen = parser.Sentence(lexi[0], lexi[1], lexi[2])

def test_class_Sentence():

	assert_equal(sen.subject, 'fighter')
	assert_equal(sen.verb, 'kill')
	assert_equal(sen.object, 'bear')
	

def test_peek():
	
	assert_equal(parser.peek(lexi), 'noun')
	assert_equal(parser.peek([]), None)
	
	
def test_match():
	words = lexicon.scan("the bear will eat you")
	assert_equal(parser.match(words, 'noun'), None)
	assert_equal(parser.match(words, 'noun'), ('noun', 'bear'))
	

def test_verb():
	words = lexicon.scan("the bear will eat you")
	## assert_raises(ParserError, parser.parse_verb, words)
	# NameError: global name 'ParseError' is not defined
	assert_raises(parser.ParserError, parser.parse_verb, words)
	words.pop(0) # pop bear
	assert_equal(parser.parse_verb(words), ('verb', 'eat'))
	
	
def test_object():
	words = lexicon.scan("will bear west next")
	assert_equal(parser.parse_object(words), ('noun', 'bear'))
	assert_equal(parser.parse_object(words), ('direction', 'west'))
	assert_raises(parser.ParserError, parser.parse_object, words)
	

def test_subject():
	words = lexicon.scan("kill the bear")
	senten = parser.parse_subject(words, ('noun','fighter'))
	assert_equal(senten.subject, 'fighter')
	assert_equal(senten.verb, 'kill')
	assert_equal(senten.object, 'bear')
	

def test_sentence():
	words = lexicon.scan("the fighter will kill the bear")
	senten = parser.parse_sentence(words)
	assert_equal(senten.subject, 'fighter')
	assert_equal(senten.verb, 'kill')
	assert_equal(senten.object, 'bear')
	
	# no subject test
	words = lexicon.scan("kill the bear")
	senten = parser.parse_sentence(words)
	assert_equal(senten.subject, 'player')
	assert_equal(senten.verb, 'kill')
	assert_equal(senten.object, 'bear')
	
	# error test
	words = lexicon.scan("777 eat bear")
	assert_raises(parser.ParserError, parser.parse_sentence, words)
	

 from Game import parser

改成 
from Game.parser import *
的话,下面就不用加前缀了。

2.

assert_raises (exception, fun, a, b)

这样的形式,而且第一个Error不是string而是类名(不是很明白)

3.

测试的用例很多都是多余的,不过这样错的容易找一点






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值