【发布时间】:2021-12-30 20:40:50
【问题描述】:
我的Project/tests/learn_pytest.py 中有一个基本测试。这是文件中的所有内容:
import pytest
import os
class Learning(tmpdir):
def create_file(self):
p = tmpdir.mkdir("sub").join("hello.txt")
p.write("content")
print tmpdir.listdir()
assert p.read() == "content"
assert len(tmpdir.listdir()) == 1
assert 0
在命令行上,无论我是在 Project 中还是在 cd 中进行测试,当我运行 pytest 时,它都会输出“collected 0 items”。如果我在测试目录中并执行pytest -q learn_pytest.py,也会发生同样的事情。我在这里错过了什么?
【问题讨论】:
-
我实际上没有定义 tmpdir,但在示例中(docs.pytest.org/en/2.8.7/tmpdir.html)他们也没有在任何地方定义它。
-
根据
pytest测试发现规则:被认为是测试,模块名必须以test_开头,类名必须以Test开头,方法名必须以@开头987654329@(所有规则都可以自定义)。不要从tmpdir扩展,它是一个固定装置而不是一个类。相反,将tmpdir作为测试函数 arg 传递,例如def test_create_file(self, tmpdir): ...