我想澄清以下问题。测试工具应具有:
为此,我编写了以下代码: 亚军:
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方法。我想在没有运行器的测试类中获得清晰的纯测试代码。测试类的作者应考虑测试的逻辑,并且不得考虑运行方式。
是否可以删除此原始实现?
提前谢谢 亚历山大