new test framework #1
1 changed files with 53 additions and 39 deletions
92
src/main.py
92
src/main.py
|
|
@ -11,12 +11,9 @@ TESTS_DIR = Path("../tests")
|
|||
|
||||
ENV_FILES = [
|
||||
Path("../envfiles/login.test.dev.local-it.cloud.env"), # authentik
|
||||
Path("../envfiles/blog.test.dev.local-it.cloud.env"), # wordpress
|
||||
# Path("../envfiles/blog.test.dev.local-it.cloud.env"), # wordpress
|
||||
]
|
||||
|
||||
ic(ENV_FILES[0].is_file())
|
||||
ic(ENV_FILES[1].is_file())
|
||||
|
||||
|
||||
class TestRunner(Protocol):
|
||||
def __init__(self, dotenv_path: Path):
|
||||
|
|
@ -26,16 +23,28 @@ class TestRunner(Protocol):
|
|||
...
|
||||
|
||||
|
||||
RUNNER_DICT: dict[str, type[TestRunner]] = {"wordpress": RunnerWordpress}
|
||||
# Register all runners here. A .env file with TYPE=authentik will be ran with RunnerAuthentik
|
||||
RUNNER_DICT: dict[str, type[TestRunner]] = {
|
||||
"authentik": RunnerAuthentik,
|
||||
"wordpress": RunnerWordpress,
|
||||
}
|
||||
|
||||
|
||||
class Wrapper:
|
||||
def __init__(self, env_files: list[Path]):
|
||||
self.env_files = env_files
|
||||
|
||||
self.setup_test_dir()
|
||||
|
||||
self.check_env_files(self.env_files)
|
||||
|
||||
session_id = self.get_session_id()
|
||||
self.setup_test(session_id)
|
||||
|
||||
self.run_test()
|
||||
|
||||
def setup_test(self, session_id: str):
|
||||
self.dir_manager = DirManager(root_tests_dir=TESTS_DIR, session_id=session_id)
|
||||
self.dir_manager.create_all_dirs()
|
||||
|
||||
def run_test(self):
|
||||
self.runners: list[TestRunner] = self.load_runners(self.env_files)
|
||||
self.run_tests(self.runners)
|
||||
|
||||
|
|
@ -57,42 +66,47 @@ class Wrapper:
|
|||
for env_file in env_files:
|
||||
assert env_file.is_file()
|
||||
|
||||
def setup_test_dir(self):
|
||||
session_id = self.get_session_id()
|
||||
test_dir = self.create_test_dir(session_id)
|
||||
self.create_records_dir(test_dir)
|
||||
self.create_states_dir(test_dir)
|
||||
self.create_results_dir(test_dir)
|
||||
|
||||
@staticmethod
|
||||
def get_session_id() -> str:
|
||||
current_datetime = datetime.now()
|
||||
return current_datetime.strftime("%Y-%m-%d-%H-%M")
|
||||
return current_datetime.strftime("%Y-%m-%d-%H-%M-%S")
|
||||
|
||||
|
||||
class DirManager:
|
||||
def __init__(self, root_tests_dir: Path, session_id: str):
|
||||
# root test dir
|
||||
self.root_tests_dir = root_tests_dir
|
||||
self.session_id = session_id
|
||||
|
||||
self.get_all_dirs()
|
||||
|
||||
def get_all_dirs(self):
|
||||
self.session_dir = self.root_tests_dir / f"test-{self.session_id}"
|
||||
self.session_sub_dirs = self.get_subdirs(self.session_dir)
|
||||
|
||||
def create_all_dirs(self):
|
||||
self.create_dirs(self.root_tests_dir, exist_ok=True)
|
||||
self.create_dirs(self.session_dir)
|
||||
self.create_dirs(self.session_sub_dirs)
|
||||
|
||||
def get_subdirs(self, session_dir: Path):
|
||||
return {
|
||||
"records": session_dir / Path("records"),
|
||||
"states": session_dir / Path("states"),
|
||||
"results": session_dir / Path("results"),
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def create_test_dir(session_id: str) -> Path:
|
||||
TESTS_DIR.mkdir(exist_ok=True)
|
||||
test_dir = TESTS_DIR / Path(f"test_{session_id}")
|
||||
test_dir.mkdir()
|
||||
return test_dir
|
||||
|
||||
@staticmethod
|
||||
def create_records_dir(test_dir: Path) -> Path:
|
||||
records = test_dir / Path("records")
|
||||
records.mkdir()
|
||||
return records
|
||||
|
||||
@staticmethod
|
||||
def create_states_dir(test_dir: Path) -> Path:
|
||||
states = test_dir / Path("states")
|
||||
states.mkdir()
|
||||
return states
|
||||
|
||||
@staticmethod
|
||||
def create_results_dir(test_dir: Path) -> Path:
|
||||
results = test_dir / Path("results")
|
||||
results.mkdir()
|
||||
return results
|
||||
def create_dirs(dirs: Path | list[Path] | dict[str, Path], exist_ok=False):
|
||||
match dirs:
|
||||
case Path():
|
||||
dirs.mkdir(exist_ok=exist_ok)
|
||||
case list():
|
||||
for d in dirs:
|
||||
d.mkdir(exist_ok=exist_ok)
|
||||
case dict():
|
||||
for d in dirs.values():
|
||||
d.mkdir(exist_ok=exist_ok)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue