Pytest:没有运行测试

Tak*_*ama 3 pytest python-3.x

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

目录.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')
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

但当我跑步时

pytest -x dir_test.py
Run Code Online (Sandbox Code Playgroud)

它只是打印no tests ran in 0.01 seconds

我不知道为什么。这是我第一次使用 pytest,除了exercism.io的练习之外,我看不出他们的测试文件有任何区别。

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

hoe*_*ing 6

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

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

你的是TestDir,这个匹配。

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

你的是IOErrorIfPathNotExists,它不以 开头test并且不被执行。

来源