我在eclipse中使用PyDev单元测试对python代码进行单元测试。我右键单击相应的文件,然后选择Run As->;Python unit test。关于这个插件,我有几个问题:
提前感谢您的回答和评论^^
切里奥沃尔坦
示例:
class TestClass(unittest.TestCase):
@classmethod
def setUpClass(self):
print "Setup"
def test1(self):
print "Test1"
def test2(self):
print "Test2"
如果我使用run As->;Python unit test运行此函数,则不会调用setUpClass方法。
编辑:摘要
使用调试器逐步检查您的测试用例,看起来这是PyDev的测试运行程序不支持
setUpClass()
的一个限制,至少不支持我正在使用的1.6.5。也许这会在PyDev的v2.0中得到修复,但同时,我认为我们将不得不stick使用
__init__()
,正如CarlS所建议的那样。详细信息
PyDev 1.6.5 PyDevTestSuite类使用:
这与Python2.6中的TestSuite.run()非常相似,而Python2.7.1的unittest中的TestSuite.run()做的更多:
旧答案
我怀疑这可能是被引用的Python版本造成的。
如果您检查Window>;Preferences>;PyDev>;解释器-Python并查看正在使用的Python解释器,您可能会发现它是v2.7之前的版本,如果我没记错的话,这里引入了setUpClass。
引用较新版本的python,我怀疑您的测试将按原样工作。
这是一个PyDev错误,已在2.0.1中修复。
由于PyDev 2.0.0和更早版本中的错误,
setUpModule()
、tearDownModule()
、setUpClass()
和tearDownClass()
未在“Python单元测试”运行配置中运行。在2.0.1中,它们在“Python单元测试”和“Python运行”配置中正确运行。我自己测试了一下。好吧,我来试一试:我使用Pydev,并且一直在探索使用“nosetests”来启动测试,所以它有点相关。我的解决方案是彻底的破解,但是当从PyDev内部说“Debug as UnitTest”时似乎确实有效:
不幸的是,这在使用nosetest时不起作用,但在从pydev运行时确实起作用。我猜nosetests是在运行每个测试方法之前被编码来实例化测试对象的,在这种情况下,init方法就足够了。
我说不出鼻子测试的好话:
示例:
附加
在进一步的调查中,如果你正在使用nose tests,那么它已经覆盖了你,请参见“http://somethingaboutorange.com/mrl/projects/nose/1.0.0/writing_tests.html”。
你可以有:
包级拆分:(这些位于包级init脚本中)
模块级拆卸:
班级级别:
试验方法水平:
我喜欢使用“setup”名称,因为它很好地描绘了特定于鼻子的入口点。当通过命令行从nosetests运行时,我已经很好地验证了这些功能。但它们不是从Pydev“作为单元测试运行…”运行的。一个潜在的解决方案可能是编写一个pydev插件,该插件使用nose运行测试。。。也许有人有?你可以把我的黑客技术和nose技术结合起来,调用公共模块函数来完成实际的工作。理想情况下,我们的init(初始化)会意识到以某种方式从Pydev启动。
相关问题 更多 >
编程相关推荐