如果定义了构造函数,test将跳过测试类

2024-05-29 08:07:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下通过py.test运行的unittest代码。 构造函数的存在使整个类在运行时跳过 py.试验-v-s

已收集0个项目/1跳过

有人能给我解释一下这种皮试的行为吗?

我对理解py.test行为很感兴趣,我知道不需要构造函数。

谢谢, 兹德内克

class TestClassName(object):
    def __init__(self):
       pass

    def setup_method(self, method):
       print "setup_method called"

    def teardown_method(self, method):
       print "teardown_method called"

    def test_a(self):
       print "test_a called"
       assert 1 == 1

    def test_b(self):
       print "test_b called"
       assert 1 == 1

Tags: 项目代码pytestselfdefsetupassert
2条回答

正如Matti Lyra py.test在回答中已经提到的,故意跳过具有构造函数的类。这是因为类只用于py.test中的结构原因,并且没有任何固有的行为,而在实际编写代码时,没有类的.__init__()方法则是相反的,而且要难得多。所以在实践中,跳过一个带有构造函数的类很可能是我们想要的,通常它只是一个碰巧有冲突名称的类。

最后,py.test需要实例化类才能执行测试。如果构造函数接受任何参数,则无法实例化它,因此再次跳过是正确的做法。

py.test的文档实现了以下标准测试发现:

  • 集合从最初的命令行参数开始,这些参数可以是目录、文件名或测试ID。 递归到目录中,除非它们与norecursedirs匹配
  • 按包名导入的test*.py或*.u test.py文件。
  • Test前缀测试类(不带__init__方法)[<;--注意这里的这个
  • test_带前缀的测试函数或方法是测试项

所以并不是不需要构造函数,py.test只是忽略了构造函数的类。还有一个guide用于更改标准测试发现。

相关问题 更多 >

    热门问题