嘿 - 我是Python的新手,很难理解Python中的单元测试概念。
我之前学过Java - 所以单元测试很好理解,因为在Java中你有一个单元 - 一个类。但是Python类不一定与Java类相同,而且我使用Python的方式 - 作为脚本语言 - 更多的是函数式编程而不是面向对象编程 - 那么在Python中你要如何进行“单元测试”呢?一个流程吗?
谢谢!
嘿 - 我是Python的新手,很难理解Python中的单元测试概念。
我之前学过Java - 所以单元测试很好理解,因为在Java中你有一个单元 - 一个类。但是Python类不一定与Java类相同,而且我使用Python的方式 - 作为脚本语言 - 更多的是函数式编程而不是面向对象编程 - 那么在Python中你要如何进行“单元测试”呢?一个流程吗?
谢谢!
我喜欢Python中的单元测试模块。您还可以阅读《Dive Into Python》的单元测试部分。
这是文档中的一个基本示例(链接):
import random
import unittest
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.seq = range(10)
def test_shuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))
# should raise an exception for an immutable sequence
self.assertRaises(TypeError, random.shuffle, (1,2,3))
def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)
def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element in self.seq)
if __name__ == '__main__':
unittest.main()
如果您需要快速简单的测试,可以查看doctest。
为编写测试,您需要在文档字符串中放置类似于交互式解释器会话的内容:
def my_function(n):
"""Return n + 5
>>> my_function(500)
505"""
return n + 5
doctest
并运行doctest.testmod()
,这将运行模块中的所有doctest。您还可以使用doctest.testfile("...")
来运行其他文件中的所有测试。