我正在使用pytest灯具。我的测试模块如下:
<!DOCTYPE html>
<html>
<body>
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<img src="http://java2s.com/style/demo/border.png" width="150" height="113">
<p><button onclick="myFunction()">test</button></p>
<p id="demo"></p>
<script>
function myFunction() {
image_report = ""
for (let image of document.images) {
image_report = image_report + image.src + "<br>";
}
document.getElementById("demo").innerHTML = image_report;
}
</script>
</body>
</html>
我按如下方式执行:
import pytest
@pytest.yield_fixture
@pytest.fixture(scope="module")
def jlt() :
print("setup executed")
yield None
print("tearing up")
def test_one(jlt) :
id = 123
assert id == 123
def test_two(jlt) :
id = 456
assert id == 456
输出结果为:
py.test -v --capture=no test_jlt.py
platform linux2 -- Python 2.7.12, pytest-2.8.7, py-1.4.31, pluggy-0.3.1 -- /usr/bin/python
cachedir: ../../.cache
rootdir: /home/vandana/unix Home/pythonLearn, inifile: pytest.ini
collected 2 items
test_jlt.py::test_one setup executed
PASSEDtearing up
test_jlt.py::test_two setup executed
PASSEDtearing up
似乎不起作用。每个功能都会执行夹具,而不是整个模块执行一次。
我不知道应该做什么
答案 0 :(得分:2)
@pytest.yield_fixture
替换 @pytest.fixture
,因此您应该使用@pytest.yield_fixture(scope="module")
代替。
请注意,使用pytest 3.x,你可以简单地使用@pytest.fixture
并在灯具内使用yield
,这简化了一些事情。