繁体   English   中英

py.test 在类下找不到测试

[英]py.test does not find tests under a class

我正在尝试创建不基于单元测试的测试类。

这个类下的这个方法

class ClassUnderTestTests:

    def test_something(self):

当您从命令行调用 py.test 或在 PyCharm 中运行此测试(它在其自己的模块上)时,无法检测并运行。

def test_something(self):

可以检测并运行类外的相同方法。

我想将我的测试归类,除非我遗漏了一些东西,否则我会遵循py.test 规范来做到这一点。

环境:Windows 7,将 py.test 设置为测试运行器的 PyCharm。

按照惯例,它会搜索

测试前缀测试类(没有init方法)

例如。

# content of test_class.py
class TestClass:
    def test_one(self):
        x = "this"
        assert 'h' in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')

请参阅此处的文档

接受的答案不是不正确的,但它是不完整的。 此外,它包含的文档链接不再有效,对该答案的评论中的更新链接也不再有效。

现在可以在此处找到当前文档。 该文档的相关位是:

  • ...
  • 在这些目录中,搜索test_*.py*_test.py文件,通过它们的测试包名称导入。
  • 从这些文件中,收集测试项目:
    • ...
    • 测试前缀测试类中的测试前缀测试函数或方法(没有__init__方法)

接受的答案中缺少的关键位是,不仅类名必须以Test开头并且没有__init__方法,而且包含该类的文件的名称必须test_*.py形式之一或*_test.py

我在这里被绊倒的地方,我认为还有很多其他人也会,是我通常命名我的 Python 源文件,其中只包含一个类定义以直接反映类的名称。 因此,如果我的类名为TestClass ,我通常会将其代码放在名为TestClass.py的文件中。 这不适用于 PyTest。 为了让PyTest对我的测试类做它的事情,我需要为这个类命名文件test_class.pytest_TestClass.pyTestClass_test.py等。我选择了最后一种形式,所以我通常在否则我会选择需要命名的文件名,以便 PyTest 解析它们以查找测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM