@@ -22,12 +22,44 @@ def pipeline_config():
22
22
return config
23
23
24
24
25
+ @pytest .fixture (scope = "module" )
26
+ def sql_failure_config ():
27
+ prefix = Path (__file__ ).parent
28
+ config_path = f"{ prefix } /../../resources/assessments/pipeline_config_sql_failure.yml"
29
+ config = PipelineClass .load_config_from_yaml (config_path )
30
+ for step in config .steps :
31
+ step .extract_source = f"{ prefix } /../../{ step .extract_source } "
32
+ return config
33
+
34
+
35
+ @pytest .fixture (scope = "module" )
36
+ def python_failure_config ():
37
+ prefix = Path (__file__ ).parent
38
+ config_path = f"{ prefix } /../../resources/assessments/pipeline_config_python_failure.yml"
39
+ config = PipelineClass .load_config_from_yaml (config_path )
40
+ for step in config .steps :
41
+ step .extract_source = f"{ prefix } /../../{ step .extract_source } "
42
+ return config
43
+
44
+
25
45
def test_run_pipeline (extractor , pipeline_config , get_logger ):
26
46
pipeline = PipelineClass (config = pipeline_config , executor = extractor )
27
47
pipeline .execute ()
28
48
assert verify_output (get_logger , pipeline_config .extract_folder )
29
49
30
50
51
+ def test_run_sql_failure_pipeline (extractor , sql_failure_config , get_logger ):
52
+ pipeline = PipelineClass (config = sql_failure_config , executor = extractor )
53
+ with pytest .raises (RuntimeError , match = "SQL execution failed" ):
54
+ pipeline .execute ()
55
+
56
+
57
+ def test_run_python_failure_pipeline (extractor , python_failure_config , get_logger ):
58
+ pipeline = PipelineClass (config = python_failure_config , executor = extractor )
59
+ with pytest .raises (RuntimeError , match = "Script execution failed" ):
60
+ pipeline .execute ()
61
+
62
+
31
63
def verify_output (get_logger , path ):
32
64
conn = duckdb .connect (str (Path (path )) + "/" + DB_NAME )
33
65
0 commit comments