Pytest:没有测试

时间:2018-06-16 11:40:56

标签: python-3.x pytest

我有以下类文件和相应的测试文件

dir.py

import os


class Dir:
    def __init__(self, path=''):
        self.path = path

    @property
    def path(self):
        return self._path

    @path.setter
    def path(self, path):
        abspath = os.path.abspath(path)
        if abspath.exists():
            self._path = path
        else:
            raise IOError(f'{path} does not exist')

dir_test.py

import unittest

from ..dir import Dir


class TestDir(unittest.TestCase):

    def IOErrorIfPathNotExists(self):
        with self.assertRaises(IOError):
            Dir.path = "~/invalidpath/"
        with self.assertRaises(IOError):
            Dir('~/invalidpath/')


if __name__ == "__main__":
    unittest.main()

但是当我跑步时

pytest -x dir_test.py

它只打印no tests ran in 0.01 seconds

我不明白为什么。这是我第一次使用pytest,除了exercism.io的练习,我发现他们的测试文件没有任何区别。

我在虚拟环境(Python 3.6.5)中运行它,pytestpytest-cache通过pip安装。

1 个答案:

答案 0 :(得分:1)

那是因为你的测试方法没有正确命名。

  

默认情况下,pytest会将任何以Test为前缀的类视为测试集合。

你的是TestDir,这匹配。

  

默认情况下,pytest会将任何以test为前缀的函数视为测试。

您的IOErrorIfPathNotExists,不以test开头且未执行。

Source