Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写Python unittest打印结果的方式_Python_Unit Testing_Jython - Fatal编程技术网

重写Python unittest打印结果的方式

重写Python unittest打印结果的方式,python,unit-testing,jython,Python,Unit Testing,Jython,我完全被unittest文档弄糊涂了:TestResult、TestLoader、测试框架等等 我只想调整打印测试运行最终结果的方式 我需要做一件特别的事情:我实际上在使用Jython,所以当一段代码引发一个ExecutionException时,我需要深入挖掘这个异常的原因(ExecutionException.getCause())来找到发生的“真正”异常,它发生在哪里,等等。目前,我正在获取引发此类异常的Future.get()的位置,以及来自原始异常的消息(没有位置)。有用,但可以改进

我完全被
unittest
文档弄糊涂了:
TestResult、TestLoader
、测试框架等等

我只想调整打印测试运行最终结果的方式

我需要做一件特别的事情:我实际上在使用Jython,所以当一段代码引发一个
ExecutionException
时,我需要深入挖掘这个异常的原因(
ExecutionException.getCause()
)来找到发生的“真正”异常,它发生在哪里,等等。目前,我正在获取引发此类异常的
Future.get()
的位置,以及来自原始异常的消息(没有位置)。有用,但可以改进

找出负责输出测试结果的对象并覆盖诸如“
print\u result
”之类的方法(原则上)难道不是很简单吗

这里还有一个问题: ... 这没有答案,尽管提问者在9个月前说他已经“解决”了这个问题,但他没有给出答案。无论如何,这看起来非常复杂,因为这是一种希望温和地调整事物的非不合理的方式。。。有没有一个简单的方法可以做到这一点

稍后,回答MartinBroadhurst关于跑步期间记录的问题:

事实上,我可以用
try…费力地围绕各种代码位,除了后面跟着一个文档函数的
。。。但是如果我不这样做,任何意外的异常都会被弹出,最终被测试框架捕获

事实上,我有一个我制作的装饰器,
@vigil(is_EDT)
(boolean param),我用它装饰大多数方法和函数,其主要功能是检查装饰的方法是否在“正确类型的线程”(即EDT线程或非EDT线程)中被调用。这可以扩展到捕获任何类型的异常。。。这是我以前为解决这个问题所做的。然后在那里打印出异常详细信息,这很好:这些内容显然没有与unittest运行的结果同时打印出来,但它很有用

但事实上,我不应该以这种“制造和修复”的方式求助于我的守夜功能!调整unittest类以覆盖异常的处理方式确实应该是可能的!最终,除非某个unittest专家能够回答我的这个问题,否则我将不得不检查unittest源代码并找到一种方法

在我的一篇文章中,我问了一些关于
unittest.TestResult
的非功能方法的问题。。。遗憾的是,这并没有像Python文档所宣称的那样实现。类似地,刚才的一些附加实验似乎表明了更多的错误记录:在for unittest上,他们似乎错误地记录了
TestResult.startTest()
stopTest()
,等等:参数“
test
”不应该在那里(本文档中的惯例似乎是省略
self
param,并且这些方法中的每一种都只采用
self
param)


简言之,整个unittest模块出人意料地笨拙和狡猾……我很惊讶,因为我本以为其他比我更有影响力的人会改变事情……

我不同意:用Python实现的unittest模块在出现故障时,根据大家的意见,会给您一个堆栈跟踪你需要的是说明哪些失败发生了。但事实上,当异常发生时,它也会给你一个堆栈跟踪。因此,你对单元测试的描述太窄了。异常是预期的和可预测的吗?@MartinBroadhurst No。如果你想知道的话,我知道unittest
assertRaises
之类的东西。我只是nt以适应(意外)异常的文档,如当前在unittest模块中实现的,因此它可以处理Java(Jython)多线程上下文。如果出现异常,您是否可以打印stacktrace或其他内容?这将在您运行测试时添加到测试输出中。感谢您考虑此事!如果您允许,我将把我的回答添加到问题的底部,而不是扩展注释…我必须取消注释ee:在Python中实现的unittest模块在出现故障时会给你一个堆栈跟踪,根据你的要求,你所需要的只是说明发生了什么故障。但事实上,当出现异常时,它也会给你一个堆栈跟踪。因此,你对单元测试的描述太窄了。异常是可以预料的吗?@MartinBroadhurst No.我知道unittest
assertRaises
之类的东西,如果你想知道的话。我只是想修改一下(意外)异常的文档,就像目前在unittest模块中实现的那样,这样它就可以处理Java(Jython)多线程上下文。如果出现异常,您是否可以
打印
堆栈跟踪或其他内容?这将在您运行测试时添加到测试输出中。感谢您考虑这一问题!如果您允许,我将把我对这一问题的答复添加到问题的底部,而不是扩展注释。。。