我用鼻子跑了一堆的测试用例。 我想记录每个案例的输出到单独的文件,要知道导致每个案件的[成功/失败。 不幸的是,我无法弄清楚如何与鼻子做。 有谁能够提供一些线索? 谢谢
Answer 1:
首先,这听起来像不寻常的用法 ,并可能表明你应该重新考虑你的测试方案。
我能想到几种方法来解决这个问题的。 最简单的办法是有每个测试日志本身,而不必鼻子为你做它。 如果只有几个测试,或者只关心记录的一些测试结果,这肯定是做到这一点的方式。
一个更复杂的和一般的方法是写一个鼻子插件 ,记录每个测试的结果,因为它完成。 要做到这一点,你会想编写一个插件,实现了afterTest()方法。
from nose.plugins import Plugin
import datetime
class SeparateReports(Plugin):
"Log the results of each test into a separate file."
def afterTest(self, test):
logname = test.id() + '.log'
success = test.passed
date = datetime.datetime.now()
# print logname, datetime.datetime.now(), success
with open(logname, 'a') as log:
log.write("%s: %s\n" % (date, success))
这将附加到一个特定的测试而得名成功的邮戳和True / False的故障日志文件。 有两点要注意:
- 看到该被印刷的结果的一个例子的注释的线。
- 这个插件将不得不通过鼻子登记 ; 请参阅该文档 。
- 一旦注册成功,插件将不得不被启用。 使用--with-separatereports的命令行选项(基于插件名称自动地生成)。
- 因为它触及文件每个测试这将是相当缓慢。 您可能需要一个SQLite数据库是开放的或类似的东西。
文章来源: how to make nose to log output of cases to separate files?