使用loadTestsFromName运行指定单元测试并输出结果至文件遇错求助
正确指定单个单元测试并输出结果到文件
错误原因
你给loadTestsFromName()传入的sys.modules[__name__]=='test1'是布尔值表达式,返回True或False,但该方法要求传入字符串格式的测试名称——内部需要对名称做拆分处理,布尔对象没有split方法,因此触发报错。
正确的测试名称格式
loadTestsFromName()接受的合法名称格式为:
- 同模块内:
测试类名.测试方法名 - 跨模块:
模块名.测试类名.测试方法名
修改代码
将指定测试的代码行替换为以下任意一种:
写法1(同模块简化版)
suite = loader.loadTestsFromName('TestClass.test1')
写法2(通用完整路径)
suite = loader.loadTestsFromName(f"{__name__}.TestClass.test1")
修改后的完整代码
import unittest import sys import os def main(out=sys.stderr, verbosity=2): loader = unittest.TestLoader() suite = loader.loadTestsFromName('TestClass.test1') unittest.TextTestRunner(out, verbosity=verbosity).run(suite) class TestClass(unittest.TestCase): def test1(self): self.assertEqual(True, True) if __name__ == '__main__': with open('test-results.txt', 'w') as f: main(f)
运行结果
执行python test.py后,test1测试会单独运行,结果写入test-results.txt,文件内容示例:
test1 (__main__.TestClass) ... ok ---------------------------------------------------------------------- Ran 1 test in 0.000s OK
内容的提问来源于stack exchange,提问作者Osca
相关产品推荐
相关产品推荐

