Doctest 最简单的测试工具
1、创建一个名为 test.txt 的文件
2、插入以下文本到文件中
this is a simple doctest that checks some of Python's arithmetic operations
>>> 2+2
4
>>> 3*3
10
3、现在就可以运行doctest了,进入该文件所在目录的命令行
4、运行:(此方法治适用于python2.6及以上版本)
python -m doctest test.txt
5、运行后会看到如下结果:
**********************************************************************
File "text.txt", line 4, in text.txt
Failed example:
3*3
Expected:
10
Got:
9
**********************************************************************
1 items had failures:
1 of 2 in text.txt
***Test Failed*** 1 failures.
Doctest 的语法
>>>
开头的代码将会发送给python解释器,...
作为代码下一行的追加,允许嵌套一些复杂的代码块语句到 doctest 中去。
使用单元测试写基础测试
class RomanNumeralConverter(object):
def __init__(self, roman_numeral):
self.roman_numeral = roman_numeral
self.digit_map = {
"M":1000,
"D":500,
"C":100,
"L":50,
"X":10,
"V":5,
"I":1
}
def convert_to_decimal(self):
val = 0
for char in self.roman_numeral:
val += self.digit_map[char]
return val
import unittest
class RomanNumeralConverterTest(unittest.TestCase):
def test_parsing_millenia(self):
value = RomanNumeralConverter("M")
self.assertEquals(1000, value.convert_to_decimal())
def test_no_roman_numeral(self):
value = RomanNumeralConverter(None)
self.assertRaises(TypeError, value.convert_to_decimal)
def test_empty_roman_numeral(self):
value = RomanNumeralConverter("")
self.assertTrue(value.convert_to_decimal() == 0)
self.assertFalse(value.convert_to_decimal() > 0)
尽可能使用 assertEquals
setUp(self)
tearDown(self)
每执行一个测试用例,就会执行一遍 setUp 和 tearDown 方法
setUpClass/tearDownClass
unittest 模块提供了 TestLoader().loadTestFromTestCase,可以自动地获取所有 test* 方法到一个测试套件中去。这个测试套件通过 unittest 的 TextTestRunner 运行。TextTestRunner 是 unittest 仅有的 Runner。
if __name__ == "__main__":
import sys
suite = unittest.TestSuite()
unittest 模块可以通过命令行的的方式运行测试的 modules,class,以及单个具体的 test method。
python -m unittest test_module1 test_module2
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method
参数 -v
显示测试详情:
python -m unittest -v test_module1 test_module2
如果不知道怎么使用命令行的话,使用 help:
python -m unittest -h
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论