来自类的Python3单元测试运行测试

时间:2020-03-05 08:15:05

标签: python-3.x python-unittest

我想澄清以下问题。测试工具应具有:

  1. 仅具有测试功能的类或模块集,此类中没有其他人
  2. 一个能够使用部分或完整套件测试运行此类的测试运行器

为此,我编写了以下代码: 亚军:

import os
import sys
import unittest
import HtmlTestRunner
import command_line_parser
import logging_utils
import logging
import test


def run_test_suite():
    test_name = os.path.basename(sys.argv[0])
    args = command_line_parser.parser_factory()
    logging_utils.init_logging(test_name, args.env_name, args.log_folder)
    LOG = logging.getLogger()
    sys.argv[1:] = args.unittest_args
    loader = unittest.TestLoader()
    start_dir = 'path\to\tests'
    suite = loader.discover(start_dir, pattern="test_*.py")
    LOG.debug("Found : " + str(suite.countTestCases()) + " tests")
    runner = HtmlTestRunner.HTMLTestRunner(output=args.report_folder + test_name)
    runner.run(suite)


if __name__ == '__main__':
    run_test_suite()

测试套件示例

import logging
import unittest

import login_utils
import page_utils
import webdriver_utils


class test_ui_welcome(unittest.TestCase):
    def __init__(self, env_name: str):
        self.env_name = env_name
        unittest.TestCase.__init__(self)

    def setUp(self):
        self.driver = webdriver_utils.get_webdriver_instance(self.env_name)
        self.LOG = logging.getLogger()
        super(test_ui_welcome, self).setUp()

    def tearDown(self) -> None:
        webdriver_utils.close_all_instance()

    def test_login(self):
        login_utils.pon_browser_login(self.driver, self.env_name)
        page_id = page_utils.get_page_id(self.driver)
        self.LOG.debug("id = " + page_id)
        assert page_id == "0"
    def runTest(self):
        super.runTest()

然后我发现,从带有测试套件的命令行类运行测试的以下内容应包含runTest方法的原始实现,如

 def runTest(self):
        super.runTest()

如果我删除此原始实现,则unittest模块找到一个测试,而不执行任何操作 我想避免在测试类中实现testRun方法。我想在没有运行器的测试类中获得清晰的纯测试代码。测试类的作者应考虑测试的逻辑,并且不得考虑运行方式。

是否可以删除此原始实现?

提前谢谢 亚历山大

0 个答案:

没有答案