0

我有两个文件“testable.py”:

def joiner(x,y):
 return x+y 

“test_testable.py”:

import unittest
import testable

class TestTestable(unittest.TestCase):
 def setUp(self):
  self.seq = ['a','b','1']
  self.seq2 = ['b','c',1]

 def test_joiner(self):
  for each in self.seq:
   for eachy in self.seq2:
    self.assertRaises(TypeError,testable.joiner(each,eachy))

if __name__ == '__main__':
 unittest.main()

现在,当我运行测试时,我得到:

ERROR: test_joiner (test_testable.TestTestable)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/rajat/collective_knowledge/test_testable.py", line 16, in test_joiner
    self.assertRaises(TypeError,testable.joiner(each,eachy),(each,eachy))
  File "/home/rajat/collective_knowledge/testable.py", line 11, in joiner
    return x+y
TypeError: cannot concatenate 'str' and 'int' objects

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

我究竟做错了什么?

4

2 回答 2

4

你错过使用assertRaises它应该是:

self.assertRaises(TypeError,testable.joiner, (each,eachy))

或者,如果您使用的是 python2.7 及更高版本或 unittest2,则只需将其用作上下文管理器:

with self.assertRaises(TypeError):
     testable.joiner(each,eachy)

编辑 :

例如,您还应该更换self.seq2 = [1,2,3]

于 2012-07-15T12:24:34.490 回答
0

for each in self.seq:
    for eachy in self.seq2

每个都可以是 'a' 并且每个都可以是 1

您不能添加 'a' 和 1,因此测试失败。

于 2012-07-15T12:25:16.837 回答