prnvtripathi14 commited on
Commit
d5f7564
·
verified ·
1 Parent(s): a570538

Update app.py to add logging

Browse files
Files changed (1) hide show
  1. app.py +85 -28
app.py CHANGED
@@ -1,44 +1,101 @@
 
 
1
  from transformers import pipeline
2
  import gradio as gr
3
 
4
- # Load the model
5
- model_name = "google/flan-t5-base" # Choose your desired model
6
- generator = pipeline("text2text-generation", model=model_name)
7
-
8
- # Function to generate test cases
9
- def generate_test_cases(method, url, headers, payload = ""):
10
- prompt = f"""
11
- Generate comprehensive API test cases:
12
- Method: {method}
13
- URL: {url}
14
- Headers: {headers}
15
- Payload: {payload}
16
-
17
- Include:
18
- - Happy path
19
- - Negative test cases
20
- - Performance scenarios
21
- - Boundary conditions
22
- """
23
  try:
24
- response = generator(prompt, max_length=500)
25
- return response[0]['generated_text']
26
- except Exception as e:
27
- return f"Error generating test cases: {str(e)}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  # Create the Gradio interface
30
  iface = gr.Interface(
31
  fn=generate_test_cases,
32
  inputs=[
33
- gr.Textbox(label="HTTP Method (GET, POST, etc.)"),
34
- gr.Textbox(label="API URL"),
35
- gr.Textbox(label="Headers (JSON format)"),
36
- gr.Textbox(label="Payload (JSON format)"),
37
  ],
38
  outputs="text",
39
  title="API Test Case Generator",
40
  description="Generate structured test cases for APIs using Hugging Face models."
41
  )
42
 
 
43
  if __name__ == "__main__":
44
- iface.launch()
 
 
 
 
 
1
+ import logging
2
+ import json
3
  from transformers import pipeline
4
  import gradio as gr
5
 
6
+ # Configure logging
7
+ logging.basicConfig(level=logging.DEBUG,
8
+ format='%(asctime)s - %(levelname)s - %(message)s')
9
+ logger = logging.getLogger(__name__)
10
+
11
+ # Load the model with explicit logging
12
+ try:
13
+ model_name = "google/flan-t5-base"
14
+ logger.info(f"Attempting to load model: {model_name}")
15
+ generator = pipeline("text2text-generation", model=model_name)
16
+ logger.info("Model loaded successfully")
17
+ except Exception as model_load_error:
18
+ logger.error(f"Failed to load model: {model_load_error}")
19
+ generator = None
20
+
21
+ def generate_test_cases(method, url, headers, payload=""):
 
 
 
22
  try:
23
+ # Log input parameters
24
+ logger.info(f"Generating test cases for:")
25
+ logger.info(f"Method: {method}")
26
+ logger.info(f"URL: {url}")
27
+ logger.info(f"Headers: {headers}")
28
+ logger.info(f"Payload: {payload}")
29
+
30
+ # Validate inputs
31
+ if not method or not url:
32
+ logger.warning("Method or URL is missing")
33
+ return "Error: Method and URL are required"
34
+
35
+ # Attempt to parse headers and payload as JSON
36
+ try:
37
+ headers_dict = json.loads(headers) if headers else {}
38
+ payload_dict = json.loads(payload) if payload else {}
39
+ except json.JSONDecodeError as json_error:
40
+ logger.error(f"JSON parsing error: {json_error}")
41
+ return f"JSON Parsing Error: {json_error}"
42
+
43
+ # Prepare the prompt
44
+ prompt = f"""
45
+ Generate comprehensive API test cases:
46
+ Method: {method}
47
+ URL: {url}
48
+ Headers: {headers_dict}
49
+ Payload: {payload_dict}
50
+ Include:
51
+ - Happy path scenarios
52
+ - Negative test cases
53
+ - Performance test considerations
54
+ - Boundary condition tests
55
+ - Error handling scenarios
56
+ """
57
+
58
+ # Check if generator is available
59
+ if generator is None:
60
+ logger.error("Model generator is not initialized")
61
+ return "Error: Model generator not initialized"
62
+
63
+ # Generate test cases
64
+ logger.info("Attempting to generate test cases")
65
+ try:
66
+ response = generator(prompt, max_length=500)
67
+ generated_text = response[0]['generated_text']
68
+
69
+ logger.info("Test cases generated successfully")
70
+ logger.debug(f"Generated Text: {generated_text}")
71
+
72
+ return generated_text
73
+ except Exception as generation_error:
74
+ logger.error(f"Test case generation error: {generation_error}")
75
+ return f"Error generating test cases: {generation_error}"
76
+
77
+ except Exception as overall_error:
78
+ logger.error(f"Unexpected error: {overall_error}")
79
+ return f"Unexpected error: {overall_error}"
80
 
81
  # Create the Gradio interface
82
  iface = gr.Interface(
83
  fn=generate_test_cases,
84
  inputs=[
85
+ gr.Textbox(label="HTTP Method (GET, POST, etc.)", placeholder="e.g., GET, POST"),
86
+ gr.Textbox(label="API URL", placeholder="e.g., https://api.example.com/endpoint"),
87
+ gr.Textbox(label="Headers (JSON format)", placeholder='e.g., {"Content-Type": "application/json"}'),
88
+ gr.Textbox(label="Payload (JSON format)", placeholder='e.g., {"key": "value"}', optional=True),
89
  ],
90
  outputs="text",
91
  title="API Test Case Generator",
92
  description="Generate structured test cases for APIs using Hugging Face models."
93
  )
94
 
95
+ # Main execution
96
  if __name__ == "__main__":
97
+ try:
98
+ logger.info("Starting Gradio interface")
99
+ iface.launch()
100
+ except Exception as launch_error:
101
+ logger.error(f"Failed to launch Gradio interface: {launch_error}")