繁体   English   中英

使用unittest.TestCase子类Python的方法调用测试方法

[英]Invoking Test Methods with a Method for a unittest.TestCase Subclass Python

我一直在阅读unittest模块的文档 ,但是我什至无法解释我是否可以做我想做的事情。 具体来说,我希望能够执行以下课程:

class TestMyCode(unittest.TestCase):

    def test_code(self):
        self.assertTrue(True)

    # Not sure how to do implement this method below
    def run_tests(self):
        # This would run all of the tests in my class
        self.run()

我想这样做的原因是因为我想从另一个Python文件中运行测试。 例如,说我在另一个文件中编写代码:

from test_my_code import TestMyCode
tests = TestMyCode()
# Runs all of the tests from the TestMyCode subclass
tests.run_tests()

这可能吗?

谢谢

要尝试执行的替代方法是运行下面显示的main模块。 如果您希望在其中运行测试,请确保该test模块可用于导入。 希望这对您有所帮助!


模块: test

import unittest


class TestMyCode(unittest.TestCase):

    def test_code(self):
        self.assertTrue(True)

模块: main

import test


def run_tests(module):
    module.unittest.main(module.__name__)


if __name__ == '__main__':
    run_tests(test)

附录:要执行您的要求,请添加一个方法,该方法复制unittest.main完成的一些内部工作以运行测试。 以下两个模块有助于说明如何修改TestMyCode类,以便它可以在没有外部帮助的情况下自行运行测试。


模块: test_module

import unittest


class TestMyCode(unittest.TestCase):

    def test_code(self):
        self.assertTrue(True)

    @classmethod
    def run_tests(cls):
        test = unittest.defaultTestLoader.loadTestsFromTestCase(cls)
        unittest.TextTestRunner().run(test)

模块: main

import test_module


def main():
    test_module.TestMyCode.run_tests()


if __name__ == '__main__':
    main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM