Python [不懂就问],简单写了一个 unittest 的例子,为什么输出的结果是两遍?附图 (小弟刚来,麻烦各路大神看下)

大洋 · 2020年03月06日 · 最后由 骷髅弓箭手 回复于 2020年03月06日 · 2487 次阅读

艾瑞巴蒂有时间指点一下,不知道为什么

原因:像组织运行用例或生成测试报告需要单开一个.py 文件来操作,否则就是本测试类运行一遍,runner 的又运行了一遍。附区别编写
在测试类内部普通运行:
if name == 'main':
unittest.main(verbosity=2)

组织运行:
suite=unittest.TestSuite()
suite=unittest.makeSuite(POTest,'test') # 测试用例中包含 test 的,若是参数只有类名那就是所以用例
#suite.addTest(POTest('testOne'))
unittest.TextTestRunner(verbosity=2).run(suite)
# 生成文本报告:
with open('path/report.txt','w') as f:
unittest.TextTestRunner(stream=f,verbosity=2).run(suite)
# 生成 url 报告
with open('path','wb') as f:# 二进制写格式打开要生成的报告文件
HTMLTestRunner(stream=f,title="potest",description="测试描述").run(suite) #HTMLTestRunner 出自https://www.cnblogs.com/superhin/p/10338993.html

共收到 3 条回复 时间 点赞

有两条测试用例,会调用两次后置条件。所以看起来结果是输出了两遍,可以在测试用例中加入输出。这样就能看出来具体执行了哪条用例

2楼 已删除

tearDown 是在每条用例执行后都执行,tearDownClass 才是在测试类执行完后才执行。

因为你跑了两遍,所以有两个结果。
你把最底下的 runner 代码注释掉或者执行方式改为普通的 python 脚本执行方式,就只会输出一遍了。

大洋 关闭了讨论 03月08日 19:08
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册