python -m unittest执行什么功能?

时间:2014-10-02 14:37:56

标签: python python-unittest

在python 2.6中,我一直在阅读unittest documentation。但我仍然没有找到答案。

pyton -m unittest执行什么功能?

例如,我如何修改此代码,以便只执行python -m unittest会检测到它并运行测试?

import random
import unittest

class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        self.seq = range(10)

    def test_shuffle(self):
        # make sure the shuffled sequence does not lose any elements
        random.shuffle(self.seq)
        self.seq.sort()
        self.assertEqual(self.seq, range(10))

    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)

    def test_sample(self):
        self.assertRaises(ValueError, random.sample, self.seq, 20)
        for element in random.sample(self.seq, 5):
            self.assertTrue(element in self.seq)

if __name__ == '__main__':
    unittest.main()

编辑: 请注意,这只是一个示例,我实际上试图让它检测并运行多个测试作为套件,这是我的起点 - 但python -m unittest没有检测到它,也没有python -m unittest discovery 1}}使用它。我必须致电python discovery.py来执行它。

discovery.py:

import os
import unittest


def makeSuite():
    """Function stores all the modules to be tested"""
    modules_to_test = []
    test_dir = os.listdir('.')
    for test in test_dir:
        if test.startswith('test') and test.endswith('.py'):
            modules_to_test.append(test.rstrip('.py'))

    all_tests = unittest.TestSuite()
    for module in map(__import__, modules_to_test):
        module.testvars = ["variables you want to pass through"]
        all_tests.addTest(unittest.findTestCases(module))
    return all_tests


if __name__ == '__main__':
    unittest.main(defaultTest='makeSuite')

1 个答案:

答案 0 :(得分:1)

python -m something执行模块something作为脚本。即来自python --help

  

-m mod:将库模块作为脚本运行(终止选项列表)

unittest模块can be run as a script - 您传递给它的参数决定了它测试的文件。命令行界面也记录在the language reference