Beispiel #1
0
def pytest_runtest_makereport(item, call):
    """Pytest hook for report preparation.

    Submit tests' data to a database.
    """

    run_id = item.config.getoption("db_submit")
    if not run_id:
        yield
        return

    data = item._request.test_info["db_info"].copy()
    data["results"] = item._request.test_info["results"].copy()
    data["raw_results"] = item._request.test_info["raw_results"].copy()
    data["status"] = "not_finished"
    data["error_msg"] = ""

    report = (yield).get_result()
    if call.when in ["setup", "call"]:
        if call.when == "call":
            if not report.passed:
                data["status"] = "failed"
                data["error_msg"] = report.longrepr.reprcrash.message
            else:
                data["status"] = "passed"

        db_url = item.config.getoption("db_url")
        db_collection = item.config.getoption("db_collection")
        logging.info("Upload data to {}/{}.{}. Data: {}".format(db_url, DATABASE, db_collection, data))
        upload_timetest_data(data, db_url, db_collection)
Beispiel #2
0
def pytest_runtest_makereport(item, call):
    """Pytest hook for report preparation.

    Submit tests' data to a database.
    """

    FIELDS_FOR_ID = ['timetest', 'model', 'device', 'niter', 'run_id']
    FIELDS_FOR_SUBMIT = FIELDS_FOR_ID + [
        '_id', 'test_name', 'results', 'status', 'error_msg'
    ]

    run_id = item.config.getoption("db_submit")
    db_url = item.config.getoption("db_url")
    db_collection = item.config.getoption("db_collection")
    if not (run_id and db_url and db_collection):
        yield
        return
    if not item._request.test_info["submit_to_db"]:
        logging.error(
            "Data won't be uploaded to a database on '{}' step".format(
                call.when))
        yield
        return

    data = item.funcargs.copy()
    data["timetest"] = data.pop("executable").stem
    data.update(data["instance"])

    data['run_id'] = run_id
    data['_id'] = hashlib.sha256(''.join(
        [str(data[key]) for key in FIELDS_FOR_ID]).encode()).hexdigest()

    data["test_name"] = item.name
    data["results"] = item._request.test_info["results"]
    data["status"] = "not_finished"
    data["error_msg"] = ""

    data = {field: data[field] for field in FIELDS_FOR_SUBMIT}

    report = (yield).get_result()
    if call.when in ["setup", "call"]:
        if call.when == "call":
            if not report.passed:
                data["status"] = "failed"
                data["error_msg"] = report.longrepr.reprcrash.message
            else:
                data["status"] = "passed"
        logging.info("Upload data to {}/{}.{}. Data: {}".format(
            db_url, DATABASE, db_collection, data))
        upload_timetest_data(data, db_url, db_collection)
Beispiel #3
0
def pytest_runtest_makereport(item, call):
    """Pytest hook for report preparation.

    Submit tests' data to a database.
    """

    FIELDS_FOR_ID = ['timetest', 'model', 'device', 'niter', 'run_id']
    FIELDS_FOR_SUBMIT = FIELDS_FOR_ID + [
        '_id', 'test_name', 'results', 'status', 'error_msg'
    ]

    run_id = item.config.getoption("db_submit")
    db_url = item.config.getoption("db_url")
    db_collection = item.config.getoption("db_collection")
    if not (run_id and db_url and db_collection):
        yield
        return

    data = item.funcargs.copy()
    data["timetest"] = data.pop("executable").stem
    data.update({key: val for key, val in data["instance"].items()})

    data['run_id'] = run_id
    data['_id'] = hashlib.sha256(''.join(
        [str(data[key]) for key in FIELDS_FOR_ID]).encode()).hexdigest()

    data["test_name"] = item.name
    data["results"] = {}
    data["status"] = "not_finished"
    data["error_msg"] = ""

    data = {field: data[field] for field in FIELDS_FOR_SUBMIT}

    report = (yield).get_result()
    if call.when in ["setup", "call"]:
        if call.when == "call":
            if not report.passed:
                data["status"] = "failed"
                data["error_msg"] = report.longrepr.reprcrash.message
            else:
                data["status"] = "passed"
        upload_timetest_data(data, db_url, db_collection)