add plugin test to check intermediate steps

still need to move them to folder such that pytest tracks it automatically
This commit is contained in:
2015-12-23 11:12:02 +05:30
parent 24df167f52
commit 26ecc00f2f
3 changed files with 146 additions and 8 deletions
+74
View File
@@ -0,0 +1,74 @@
# pytest_plugins = "pytest_gui_status.status_plugin"
import redis
import pytest
from pytest_gui_status.status_plugin.plugin import REDIS_PORT
class PYTEST_DATA(object):
data = {}
saved_data = {
"after_sessionstart": None,
"after_first_collectstart": None,
"after_last_itemcollected": None,
"after_first_runtest_logstart": None,
"after_this_runtest_logstart": None,
}
def get_cur_data():
dir_name = PYTEST_DATA.data["dir_name_start"]
redis_db = redis.StrictRedis(host='localhost', port=REDIS_PORT, db=0)
hash_dir_name = redis_db.hget("directories_to_hash", dir_name)
assert hash_dir_name is not None
data = {}
data["state"] = redis_db.get("{hash_a}_state".format(hash_a=hash_dir_name))
data["last_updated"] = redis_db.get("{hash_a}_last_updated".format(hash_a=hash_dir_name))
data["collect"] = redis_db.lrange("{hash_a}_collect".format(hash_a=hash_dir_name), 0, -1)
data["pass"] = redis_db.lrange("{hash_a}_pass".format(hash_a=hash_dir_name), 0, -1)
data["fail"] = redis_db.lrange("{hash_a}_fail".format(hash_a=hash_dir_name), 0, -1)
data["skip"] = redis_db.lrange("{hash_a}_skip".format(hash_a=hash_dir_name), 0, -1)
# strip off the filename
data["collect"] = [item.split("::")[-1] for item in data["collect"]]
data["pass"] = [item.split("::")[-1] for item in data["pass"]]
data["fail"] = [item.split("::")[-1] for item in data["fail"]]
data["skip"] = [item.split("::")[-1] for item in data["skip"]]
return data
@pytest.hookimpl(trylast=True)
def pytest_sessionstart(session):
PYTEST_DATA.data["dir_name_start"] = str(session.startdir)
saved_data["after_sessionstart"] = get_cur_data()
@pytest.hookimpl(trylast=True)
def pytest_collectstart(collector):
if not saved_data["after_first_collectstart"]:
saved_data["after_first_collectstart"] = get_cur_data()
@pytest.hookimpl(trylast=True)
def pytest_itemcollected(item):
saved_data["after_last_itemcollected"] = get_cur_data()
@pytest.hookimpl(trylast=True)
def pytest_runtest_logstart(nodeid, location):
if not saved_data["after_first_runtest_logstart"]:
saved_data["after_first_runtest_logstart"] = get_cur_data()
saved_data["after_this_runtest_logstart"] = get_cur_data()
@pytest.fixture
def status_plugin_debug():
return saved_data
+54
View File
@@ -0,0 +1,54 @@
def test_after_sessionstart(status_plugin_debug):
debug_data = status_plugin_debug["after_sessionstart"]
assert debug_data["collect"] == []
assert debug_data["pass"] == []
assert debug_data["fail"] == []
assert debug_data["skip"] == []
assert debug_data["state"] == "start"
def test_after_first_collectstart(status_plugin_debug):
debug_data = status_plugin_debug["after_first_collectstart"]
assert debug_data["collect"] == []
assert debug_data["pass"] == []
assert debug_data["fail"] == []
assert debug_data["skip"] == []
assert debug_data["state"] == "collect"
def test_after_last_itemcollected(status_plugin_debug):
debug_data = status_plugin_debug["after_last_itemcollected"]
# if the tests in this file change, adjust this list too
assert debug_data["collect"] == ["test_after_sessionstart",
"test_after_first_collectstart",
"test_after_last_itemcollected",
"test_after_first_runtest_logstart",
"test_after_this_runtest_logstart"]
assert debug_data["pass"] == []
assert debug_data["fail"] == []
assert debug_data["skip"] == []
assert debug_data["state"] == "collect"
def test_after_first_runtest_logstart(status_plugin_debug):
debug_data = status_plugin_debug["after_first_runtest_logstart"]
assert debug_data["pass"] == []
assert debug_data["fail"] == []
assert debug_data["skip"] == []
assert debug_data["state"] == "runtest"
def test_after_this_runtest_logstart(status_plugin_debug):
debug_data = status_plugin_debug["after_this_runtest_logstart"]
assert len(debug_data["pass"] + debug_data["fail"] + debug_data["skip"]) > 0
assert debug_data["state"] == "runtest"