(如何像计算机科学家一样思考 - 6.3单元测试)使用test vs unittest进行单元测试

时间:2018-01-08 16:49:32

标签: python unit-testing

本书中的示例代码使用此处显示的测试模块:

def square(x):
    '''raise x to the second power'''
    return x * x

import test
print('testing square function')
test.testEqual(square(10), 100)

但是,当我写出脚本并使用IDLE运行它时,我收到以下错误:

testing square function
Traceback (most recent call last):
  File "/Users/ivan/Documents/scripts/Untitled.py", line 7, in <module>
    test.testEqual(square(10), 100)
AttributeError: module 'test' has no attribute 'testEqual'

检查全局模块索引&gt;测试模块显示首选方法是使用unittest模块。这是给出的例子:

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        self.assertFalse('Foo'.isupper())

    def test_split(self):
        s = 'hello world'
        self.assertEqual(s.split(), ['hello', 'world'])
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            s.split(2)

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

问题是我们没有学习任何过去的单位测试,如本例所示。

有没有办法在这个问题的第一个脚本中使用unittest模块?

1 个答案:

答案 0 :(得分:0)

我想这本python书在测试模块下有自己的简化单元测试。 如果你想创建这样一个简单的测试,你可以创建一个像下面这样的函数并调用该函数。

def testEqual(x,y): if x==y: print('Passed') else: print('Failed') testEqual(square(10), 100)