包含自己的单元测试的Python脚本

时间:2017-09-30 18:27:32

标签: python unit-testing

我有一个小的python脚本,我想添加一些测试。

对于一个更大的系统,我会从被测系统中获得模块和单独的测试,但是对于这个小小的东西,我想把它全部放在一个.py文件中。然后我就可以跑了:

> foo.py --test

运行测试和

> foo.py

正常运行我的脚本。

我到目前为止:

import unittest
import sys
import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--test", action="store_true")
    args = parser.parse_args()

    if (args.test):
        return unittest.main()

class TestBasicFunction(unittest.TestCase):
    def test(self):
        self.assertTrue(True)

if __name__ == '__main__':
    sys.exit(main())

但它失败了,因为unittest.main()试图解析我脚本的参数。

我对单元测试框架并不挑剔。 py测试,鼻子,无论什么都好。

我该怎么做?

1 个答案:

答案 0 :(得分:4)

请注意,reasons you might want to consider separating unittests from the code it is testing

但是,

import unittest
import sys
import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--test", action="store_true")
    args = parser.parse_args()
    print(args)
    if args.test:
        sys.argv.remove('--test')
        return unittest.main(argv=sys.argv)

class TestBasicFunction(unittest.TestCase):
    def test(self):
        self.assertTrue(True)

if __name__ == '__main__':
    sys.exit(main())