- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些运行大量测试的单元测试代码。以前,当运行每个测试时,一些信息会打印到标准输出。如果测试失败,此信息将极大地帮助调试。现在我想编写一个更复杂的程序来调用 unittest 并以编程方式捕获测试结果。 unittest 似乎提供了一个名为 TestResult 的对象,该对象旨在包含测试的输出。它有一个所有错误的列表,一个所有失败的列表,等等。我还想将我的调试输出添加到这个对象,以便我以后可以通过编程方式访问它。这可能吗?
编辑:这是一个例子:
import unittest2
class DemoTest(unittest2.TestCase):
def test_one(self):
print "'grimelsome' attribute of 'smoxy' was set to 'blimpy'"
self.assertTrue(True)
def test_two(self):
print "'smithereen' attribute of 'brouhaha' was set to 'False'"
self.assertTrue(True)
if __name__ == '__main__':
suite = unittest2.TestLoader().loadTestsFromTestCase(DemoTest)
result = unittest2.TextTestRunner(verbosity=2).run(suite)
# this is what I'd like to be able to do:
for fail in result.failures:
print what_would_have_gone_to_stdout
最佳答案
您只需要使用 TextTestRunner 缓冲区选项:
import unittest2
class DemoTest(unittest2.TestCase):
def test_one(self):
print "'grimelsome' attribute of 'smoxy' was set to 'blimpy'"
self.assertTrue(True)
def test_two(self):
print "'smithereen' attribute of 'brouhaha' was set to 'False'"
self.assertTrue(False)
if __name__ == '__main__':
suite = unittest2.TestLoader().loadTestsFromTestCase(DemoTest)
result = unittest2.TextTestRunner(verbosity=2, buffer=True).run(suite)
在每次测试之前,runner 使用的 TextTestResult
将用它自己的流替换 sys.stderr
和 sys.stdout
,并且只如果测试失败则将内容发送到原始流,否则将其丢弃。
请注意,因为伪造的 sys.std*
流在每次测试后都会发生变化,如果您想对日志输出做同样的事情,则必须在 sys.std 之后添加日志处理程序。 sdt* 流已被替换,在每次测试之前或实现您自己的处理程序。
这是一个子类化 logging.StreamHandler
的示例:
import logging
import sys
import unittest2
class DemoTest(unittest2.TestCase):
logger = logging.getLogger('DemoTest')
def setUp(self):
self.logger.debug("setting up stuff and logging it...")
def teardown(self):
self.logger.debug("You won't see me")
print "me neither"
def test_one(self):
self.logger.debug("'grimelsome' attribute of 'smoxy' was set to 'blimpy'")
self.assertTrue(True)
def test_two(self):
self.logger.debug("'smithereen' attribute of 'brouhaha' was set to 'False'")
self.assertTrue(False)
class TestHandler(logging.StreamHandler):
def __init__(self):
logging.Handler.__init__(self)
@property
def stream(self):
"""Use which ever stream sys.stderr is referencing."""
return sys.stderr
if __name__ == '__main__':
formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
logger_handler = TestHandler()
logger_handler.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(logger_handler)
suite = unittest2.TestLoader().loadTestsFromTestCase(DemoTest)
result = unittest2.TextTestRunner(
verbosity=2, buffer=True, resultclass=TestResult
).run(suite)
关于Python unittest - 如何将调试信息添加到 TestResult 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244463/
我只使用了很短一段时间的单元测试。我正在使用 Jython 2.7.10“最终版本” 在解释 TestResult 的 Python 2.7 文档中,它说: The following methods
我有一组单元测试,每个测试都有一堆方法,每个方法都会在 TestResults 文件夹中生成输出。目前,所有测试文件都混杂在这个文件夹中,但我想给困惑带来一些秩序。 理想情况下,我希望每个测试方法都有
我在 jmeter 中做了一些测试,它生成以下格式的 xml 报告 ` 我在 mysql 中创建了一个名为 testResult 的表,其中包含 t、lt、ts、s、lb...等列。 我想知
我有一些运行大量测试的单元测试代码。以前,当运行每个测试时,一些信息会打印到标准输出。如果测试失败,此信息将极大地帮助调试。现在我想编写一个更复杂的程序来调用 unittest 并以编程方式捕获测试结
我在我的 Visual Studio 中遇到了这种异常行为,我的测试二进制文件 (mytestsolution.dll) 和在引用中添加的依赖二进制文件突然从我的 Bin 文件夹中复制到 TestRe
我正在使用 org.junit.runner.JUnitCore 类从我的 java 应用程序内部运行测试。我添加了实现 org.junit.runner.notification.RunListen
我的 TestSuite 在使用 ant 目标构建期间运行。 我想在我的套件中访问 TestResult 并在测试成功与否时执行一些操作。 有没有办法在拆卸方法中检索对象? 谢谢 最佳答案 使用 jU
运行构建脚本后,我正在运行 nunit-console 程序来测试一些程序集。然后将 TestResult.xml 复制到静态 Web 服务器。 我正在寻找一种工具,可以将 xml 输出格式化为一个漂
在Python单元测试框架中,我们希望在每个测试用例之后进行一些检查。无论成功与否,如果不成功,我们都想采取一些行动。 我正在尝试探索Unittest.TestResult.wasSuccessful
当我尝试在新的 Rails 项目中运行规范或生成器时,我在 subj 中遇到错误。 当我添加 shoulda 时会发生这种情况。 我在 config/environment.rb 中添加了以下内容:
我希望能够向单元测试添加“消息”,使其实际出现在 NUnit 生成的 TestResult.xml 文件中。例如,这是当前生成的: 我希望能够有一个额外的属性(或节点视情况而定),例如:
我的所有单元测试项目都在我的解决方案文件夹下的一个文件夹中,并且希望将 TestResults 文件夹与测试项目位于同一文件夹中,而不是在解决方案目录中。 我发现这可以通过测试设置文件来完成: How
自 Xcode 11 以来,自动测试(单元测试或 UITests)生成的输出文件已变为 .xcresult(请参见下面的屏幕截图)。 在 Xcode 11 之前,在 test 文件夹中创建了一个 Te
我试图在我的构建服务器上运行以下命令, c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions
我正在发送一个查询来检查是否有与测试用例关联的测试用例结果。我正在使用这个: QueryRequest c = new QueryRequest("testcaseresult");
我是 visual studio 的新手。我有 visual studio community 2015。 我想做的是在使用 MSTest 的单元测试中输出特定数据时,我想将输出保存到文件中。 我已经
我是一名优秀的程序员,十分优秀!