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

标签 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 测试,nose,什么都行。

我该怎么做?

最佳答案

注意有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())

关于包含自己的单元测试的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505806/

相关文章:

javascript - 使用 Jest 进行 React 组件测试

objective-c - 测试核心数据应用

Python lxml xpath - 返回所有标签而不是所选标签

python - Python 中的多变量核密度估计

javascript - 我应该对我的/src 文件还是/build 文件进行单元测试?

node.js - 在 node.js 中模拟数据库?

django - 如何编写填充 raw_post_data 和 request.FILES ['myfile' 的测试]

python - Julia 的 `@edit` 宏的 Python 等价物是什么?

python - 在 pandas/python 中,读取存储为字符串的数组

python - 二维 numpy 数组中的比率计算