我的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”。如果我在tests目录中并执行pytest -q learn_pytest.py
,则会发生相同的情况。我在这里想念什么?
答案 0 :(得分:0)
您的模块(learn_pytest.py)和方法(create_file)必须符合pytest默认命名约定(即:测试文件和函数必须加test_
前缀)
因此,例如,将文件重命名为test_learn.py
,将方法重命名为test_create_file
greg@canon:~/tmp/54486852$ echo "def foo(): assert 0" > foo.py
greg@canon:~/tmp/54486852$ pytest -v
=============================================================================================== test session starts ===============================================================================================
platform linux -- Python 3.6.7, pytest-4.0.0, py-1.7.0, pluggy-0.8.0 -- /usr/bin/python3.6
cachedir: .pytest_cache
rootdir: /home/greg/tmp/54486852, inifile:
plugins: devpi-server-4.7.1
collected 0 items
========================================================================================== no tests ran in 0.00 seconds ===========================================================================================
greg@canon:~/tmp/54486852$ echo "def test_foo(): assert 0" > test_foo.py
greg@canon:~/tmp/54486852$ pytest -v --collect-only
=============================================================================================== test session starts ===============================================================================================
platform linux -- Python 3.6.7, pytest-4.0.0, py-1.7.0, pluggy-0.8.0 -- /usr/bin/python3.6
cachedir: .pytest_cache
rootdir: /home/greg/tmp/54486852, inifile:
plugins: devpi-server-4.7.1
collected 1 item
<Module 'test_foo.py'>
<Function 'test_foo'>
=============================================================================================
greg@canon:~/tmp/54486852$
答案 1 :(得分:0)
这里是:
文件test_learn_pytest.py
:
def test_create_file(tmpdir): # tmpdir is a fixture and must be a function parameter
assert 0, "now that will fail ; change the body to what you want"