Skip to content

Commit

Permalink
Add basic fixture cli
Browse files Browse the repository at this point in the history
This change adds a new fixture_cli.py script under the scripts
directory.

The basic usage of this script is to take in a space-separated list
of global fixtures and run them together in a single temporary test.

e.g. python scripts/fixture_cli.py module_ak_with_synced_repo module_lce

Additionally, I had to make some minor adjustments to a couple of
plugins since this temporary test doesn't follow the same rules as the
rest of our framework.
  • Loading branch information
JacobCallahan committed Nov 15, 2023
1 parent f10676e commit c7e7af5
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
5 changes: 3 additions & 2 deletions pytest_plugins/fspath_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@ def pytest_collection_modifyitems(session, items, config):
if item.nodeid.startswith('tests/robottelo/') or item.nodeid.startswith('tests/upgrades/'):
continue

endpoint = endpoint_regex.findall(item.location[0])[0]
item.user_properties.append(('endpoint', endpoint))
endpoints = endpoint_regex.findall(item.location[0])
if endpoints:
item.user_properties.append(('endpoint', endpoints[0]))
4 changes: 3 additions & 1 deletion pytest_plugins/issue_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ def generate_issue_collection(items, config): # pragma: no cover
filepath, lineno, testcase = item.location
# Component and importance marks are determined by testimony tokens
# Testimony.yaml as of writing has both as required, so any
component_mark = item.get_closest_marker('component').args[0]
if not (components := item.get_closest_marker('component')):
continue
component_mark = components.args[0]
component_slug = slugify_component(component_mark, False)
importance_mark = item.get_closest_marker('importance').args[0]
for marker in item.iter_markers():
Expand Down
23 changes: 23 additions & 0 deletions scripts/fixture_cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from pathlib import Path

import click
import pytest


@click.command()
@click.argument("fixtures", nargs=-1, required=True)
def run_fixtures(fixtures):
"""Create a temporary test that depends on each fixture, then run it.
Example: python scripts/fixture_cli.py module_published_cv module_subscribe_satellite
"""
fixture_string = ", ".join(filter(None, fixtures))
test_template = "def test_fake({}):\n assert True"
test_template = test_template.format(fixture_string)
temp_file = Path("test_DELETEME.py")
temp_file.write_text(test_template)
pytest.main(["-qq", str(temp_file)])
temp_file.unlink()

if __name__ == "__main__":
run_fixtures()

0 comments on commit c7e7af5

Please sign in to comment.