python-unittest(4)

來源:互聯網
上載者:User

根據不同的命令列參數進行不同代碼的單元測試。

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.pyclass 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 valimport unittestclass 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.