python-unittest(4)

根据不同的命令行参数进行不同代码的单元测试。

Running a subset of test case methods
Sometimes it's convenient to run only a subset of test methods in a given test case. This recipe
will show how to run either the whole test case, or pick a subset from the command line.

1. Create a new file named recipe4.py in which to put all the code for this recipe.

2. Pick a class to test. In this case, we will use our Roman numeral converter.

3. Create a test class using the same name as the class under test with Test appended
to the end.

4. Create several test methods.

5. Write a main runner that either runs the entire test case or accepts a variable
number of test methods.

6. Run the recipe with no extra command-line arguments, and see it run all the tests.
Also run it with a test method name, and see it run only the specified test method.

 

测试代码:

Code
# !usr/bin/env python 2.7
# coding: utf-8
# filename: recipe4.py

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_parsing_century(self):
        value = RomanNumeralConverter("C")
        self.assertEquals(100, value.convert_to_decimal())

if __name__ == "__main__":
    import sys
    suite = unittest.TestSuite()
    if len(sys.argv) == 1:
        suite = unittest.TestLoader().loadTestsFromTestCase(\
                                   RomanNumeralConverterTest)
    else:
        for test_name in sys.argv[1:]:
            suite.addTest(\
                RomanNumeralConverterTest(test_name))
    unittest.TextTestRunner(verbosity=2).run(suite)

 

运行测试代码,我们发现根据不同的命令行参数,会进行不同代码的测试。

在命令行中进行调用可分4种情况。

1、输入:python recipe4.py

输出:

test_parsing_century (__main__.RomanNumeralConverterTest) ... ok
test_parsing_millenia (__main__.RomanNumeralConverterTest) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK

2、输入:python recipe4.py test_parsing_century

输出:

test_parsing_century (__main__.RomanNumeralConverterTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

3、输入:python recipe4.py test_parsing_millenia

输出:

test_parsing_millenia (__main__.RomanNumeralConverterTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
4、输入:python recipe4.py test_parsing_millenia test_parsing_century

输出:

test_parsing_millenia (__main__.RomanNumeralConverterTest) ... ok
test_parsing_century (__main__.RomanNumeralConverterTest) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

转载于:https://www.cnblogs.com/luhouxiang/archive/2012/06/24/2560236.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值