Pytest: 没有运行任何测试。

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

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)中运行它,通过pip安装了pytestpytest-cache

1个回答

6
那是因为你的测试方法命名不正确。
默认情况下,pytest将任何以“Test”为前缀的类视为测试集合。
你的类名是“TestDir”,这符合要求。
默认情况下,pytest将任何以“test”为前缀的函数视为测试。
你的函数名是“IOErrorIfPathNotExists”,它不以“test”开头,因此不会被执行。 来源

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接