Doctest 最简单的测试工具

发布于 2021-04-07 12:06:09 字数 2660 浏览 1146 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文