使用Python 2.6,我在目录中的python文件中进行了非常简单的测试:
#mytest.py
import unittest
class BasicTests(unittest.TestCase):
def test_ok(self):
self.assertTrue(True)
suite = unittest.TestLoader().loadTestsFromTestCase(BasicTests)
我进入目录并运行,python -m unittest mytest.suite
并出现以下错误:
Traceback (most recent call last):
File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib/python2.6/unittest.py", line 875, in <module>
main(module=None)
File "/usr/lib/python2.6/unittest.py", line 816, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.6/unittest.py", line 843, in parseArgs
self.createTests()
File "/usr/lib/python2.6/unittest.py", line 849, in createTests
self.module)
File "/usr/lib/python2.6/unittest.py", line 613, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.6/unittest.py", line 598, in loadTestsFromName
test = obj()
File "/usr/lib/python2.6/unittest.py", line 464, in __call__
return self.run(*args, **kwds)
TypeError: run() takes exactly 2 arguments (1 given)
我尝试了几种变体(例如unittest.makeSuite
和unittest.LoadTestFromNames
),但它们都给了我相同的基本错误。我想念什么?我一直在阅读文档,并且似乎遵循规范。
我通常不使用unittest
命令行,但是有自己的测试运行脚本。
您需要向suite
模块添加功能
def suite():
return unittest.TestLoader().loadTestsFromTestCase(BasicTests)
然后称它为python -m unittest mytest.suite
。但是后来我遇到了以下问题:
TypeError: calling <function suite at 0x00C1FB70> returned <unittest.TestSuite tests=[<mysite.BasicTests testMethod=test_ok>]>, not a test
发生这种情况是因为unittest
使用了类似的东西,isinstance(mytest.suite(), TestSuite)
但是通过执行-m
,您得到了TestSuite
该类的两个不同版本(一个是__main__.TestSuite
,另一个是unittest.TestSuite
),因此isinstance
返回false。
对我来说,这似乎是一个错误。unittest.py
通过from unittest import TestSuite, TestCase
在开始时插入进行修补即可loadTestsFromName
解决isinstance
问题。抱歉,我不能给您“ 正确的
”解决方案(如果有)。
问题内容: 我试图了解Java 8中API 的方法。 我有简单的逻辑: 但这会导致编译错误: 我当然可以做这样的事情: 但这就像混乱的支票一样。 如果我将代码更改为此: 代码变得越来越脏,这让我想到了回到旧支票。 有任何想法吗? 问题答案: 需要作为参数。您正在向其传递类型为void的表达式。因此,它不会编译。 使用者应被实现为lambda表达式: 甚至更简单,使用方法参考: 这基本上与 想法是仅
问题内容: 我正在尝试了解的语义,以及实体管理器对未保存的瞬态实例的确切含义。我要实现的只是向会话添加一个新的临时实例,并在刷新会话时让Hibernate执行一个。 我发现如果持久保存一个新实例,然后在同一会话中对其进行修改,则实体管理器将同时生成和语句,这可能会导致约束冲突。 例如,假设我有一个带有列 栏 和以下服务方法的实体关系 Foo 。 __ 尽管我们为提供了一个值,但是执行此代码将违反数
问题内容: 什么时候应该从而不是从中导出例外? 不必在方法的子句中声明A ,因为它不一定要专门列出,否则可能是 好 方法,也可能是 不好的, 因为显式声明方法的异常是一种好习惯。 有什么想法吗? 问题答案: 来自未经检查的异常- 争议 : 如果可以合理预期客户端会从异常中恢复,请将其设置为已检查的异常。如果客户端无法采取任何措施来从异常中恢复,请将其设置为未经检查的异常。 请注意,未检查的异常是从
问题内容: SimpleHttpConnectionManager使用不正确。确保始终调用HttpMethod.releaseConnection(),并且一次只有一个线程和/或方法正在使用此连接管理器。 是否有人知道为什么会出现此错误,并导致我要下载的文件失败或失败,然后重试或下载未完成的文件 谢谢 ! 问题答案: 确保不使用SimpleHttpConnectionManager创建和使用来自多
我有一个结构如下的项目。 是我的主要应用程序,而和是导入到Project中的两个库。使用了的一些类,使用了的一些类。 在的文件中,我使用了。一切正常。但是,如果我用替换,它就不能从导入类。它给出错误。
问题内容: 我的代码如下: Eclipse的此代码有两个问题: 对于那行说 对于那行说 问题答案: Apache Commons Configuration 的核心具有以下运行时依赖性: Apache Commons Lang(版本2.2、2.3、2.4、2.5或2.6) Apache Commons Collections(版本3.1、3.2或3.2.1) Apache Commons Logg