You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求使用unittest.FunctionTestCase测试Python脚本的实际示例

使用unittest.FunctionTestCase测试已有Python函数的正确示例

你的代码存在几个关键问题:

  • 不需要在单个测试方法内部创建测试套件并断言用例数量,这不符合unittest的测试流程;
  • self.assertEqual(suite.testCase1)这类写法完全错误,测试套件没有testCase1属性,且对于无返回值的函数,测试核心是验证它能否正常执行不抛出异常——FunctionTestCase会自动处理这一点:函数执行无异常则测试通过,抛出异常则测试失败。

以下是实际可用的正确示例:

基础用法(无前置/后置操作)

假设你的已有业务函数如下:

def existingFunctionToLoadWebPage():
    # 模拟加载网页逻辑,出错时会抛出异常
    print("加载网页成功")

def existingFunctionToSubmitWebForm():
    # 模拟提交表单逻辑,出错时会抛出异常
    print("提交表单成功")

用FunctionTestCase包装并运行测试:

import unittest

# 已有业务函数
def existingFunctionToLoadWebPage():
    print("加载网页成功")

def existingFunctionToSubmitWebForm():
    print("提交表单成功")

# 将普通函数包装为测试用例
test_load_page = unittest.FunctionTestCase(existingFunctionToLoadWebPage)
test_submit_form = unittest.FunctionTestCase(existingFunctionToSubmitWebForm)

# 组合测试套件
test_suite = unittest.TestSuite([test_load_page, test_submit_form])

# 执行测试
if __name__ == '__main__':
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(test_suite)

带前置/后置操作的用法

如果需要在测试前后执行初始化、清理操作(比如启动/关闭浏览器),可以给FunctionTestCase传入setUp和tearDown函数:

import unittest

def test_setup():
    print("测试前置:初始化浏览器实例")

def test_teardown():
    print("测试后置:关闭浏览器实例")

# 已有业务函数
def existingFunctionToLoadWebPage():
    print("加载网页成功")

def existingFunctionToSubmitWebForm():
    print("提交表单成功")

# 带前置后置的测试用例
test_load_page = unittest.FunctionTestCase(
    existingFunctionToLoadWebPage,
    setUp=test_setup,
    tearDown=test_teardown
)
test_submit_form = unittest.FunctionTestCase(
    existingFunctionToSubmitWebForm,
    setUp=test_setup,
    tearDown=test_teardown
)

test_suite = unittest.TestSuite([test_load_page, test_submit_form])

if __name__ == '__main__':
    unittest.TextTestRunner(verbosity=2).run(test_suite)

验证函数返回值的用法

如果业务函数有返回值,你可以包装一个测试函数来调用它并添加断言:

import unittest

# 有返回值的已有函数
def existingFunctionToLoadWebPage():
    # 模拟返回加载结果
    return "加载成功"

# 自定义测试逻辑的函数
def verify_load_page():
    result = existingFunctionToLoadWebPage()
    assert result == "加载成功", "网页加载失败"

# 包装为测试用例
test_load_page = unittest.FunctionTestCase(verify_load_page)

if __name__ == '__main__':
    unittest.main()

内容的提问来源于stack exchange,提问作者hal9kaye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:10:50