vishwas3086 commited on
Commit
0089435
·
verified ·
1 Parent(s): e4c0e7d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +72 -0
app.py ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ import json
4
+ import sqlite3
5
+ from transformers import pipeline
6
+
7
+ # Load AI model for test case generation
8
+ test_case_generator = pipeline("text-generation", model="microsoft/CodeGPT-small-py")
9
+
10
+ def fetch_swagger_data(swagger_url):
11
+ try:
12
+ response = requests.get(swagger_url)
13
+ return response.json()
14
+ except Exception as e:
15
+ st.error(f"Error fetching Swagger data: {e}")
16
+ return None
17
+
18
+ def generate_bdd_test_cases(swagger_data):
19
+ test_cases = {}
20
+ for path, methods in swagger_data.get("paths", {}).items():
21
+ for method, details in methods.items():
22
+ prompt = f"Generate BDD test case for {method.upper()} {path} with {details.get('parameters', [])}"
23
+ ai_response = test_case_generator(prompt, max_length=200, num_return_sequences=1)
24
+ test_cases[f"{method.upper()} {path}"] = ai_response[0]['generated_text']
25
+ return test_cases
26
+
27
+ def execute_test_script(test_case):
28
+ # Simulate API call execution
29
+ st.write(f"Executing test: {test_case}")
30
+ return {"status": "Passed", "response_time": "200ms"}
31
+
32
+ def store_test_results(test_case, result):
33
+ conn = sqlite3.connect("test_results.db")
34
+ cursor = conn.cursor()
35
+ cursor.execute("""
36
+ CREATE TABLE IF NOT EXISTS results (test_case TEXT, status TEXT, response_time TEXT)
37
+ """)
38
+ cursor.execute("INSERT INTO results (test_case, status, response_time) VALUES (?, ?, ?)",
39
+ (test_case, result["status"], result["response_time"]))
40
+ conn.commit()
41
+ conn.close()
42
+
43
+ def show_past_results():
44
+ conn = sqlite3.connect("test_results.db")
45
+ cursor = conn.cursor()
46
+ cursor.execute("SELECT * FROM results")
47
+ results = cursor.fetchall()
48
+ conn.close()
49
+ return results
50
+
51
+ # Streamlit UI
52
+ st.title("AI-Powered API Test Case Generator")
53
+ swagger_url = st.text_input("Enter Swagger URL")
54
+ if st.button("Generate Test Cases"):
55
+ swagger_data = fetch_swagger_data(swagger_url)
56
+ if swagger_data:
57
+ test_cases = generate_bdd_test_cases(swagger_data)
58
+ st.session_state["test_cases"] = test_cases
59
+ st.success("Test Cases Generated!")
60
+ st.json(test_cases)
61
+
62
+ if "test_cases" in st.session_state:
63
+ st.subheader("Execute Test Cases")
64
+ for api, test_case in st.session_state["test_cases"].items():
65
+ if st.button(f"Run {api}"):
66
+ result = execute_test_script(test_case)
67
+ store_test_results(api, result)
68
+ st.success(f"{api} - {result['status']}")
69
+
70
+ st.subheader("Past Execution Results")
71
+ past_results = show_past_results()
72
+ st.table(past_results)