Python测试指南

Python测试指南

####测试的种类
#####单元测试
#####集成测试
#####系统测试

####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
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值