我有以下类文件和相应的测试文件
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)中运行它,pytest
和pytest-cache
通过pip
安装。
答案 0 :(得分:1)
那是因为你的测试方法没有正确命名。
默认情况下,pytest会将任何以
Test
为前缀的类视为测试集合。
你的是TestDir
,这匹配。
默认情况下,pytest会将任何以
test
为前缀的函数视为测试。
您的IOErrorIfPathNotExists
,不以test
开头且未执行。