Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import requests | |
| import json | |
| import sqlite3 | |
| from transformers import pipeline | |
| # Load AI model for test case generation | |
| test_case_generator = pipeline("text-generation", model="microsoft/CodeGPT-small-py") | |
| def fetch_swagger_data(swagger_url): | |
| try: | |
| response = requests.get(swagger_url) | |
| return response.json() | |
| except Exception as e: | |
| st.error(f"Error fetching Swagger data: {e}") | |
| return None | |
| def generate_bdd_test_cases(swagger_data): | |
| test_cases = {} | |
| for path, methods in swagger_data.get("paths", {}).items(): | |
| for method, details in methods.items(): | |
| prompt = f"Generate BDD test case for {method.upper()} {path} with {details.get('parameters', [])}" | |
| ai_response = test_case_generator(prompt, max_length=200, num_return_sequences=1) | |
| test_cases[f"{method.upper()} {path}"] = ai_response[0]['generated_text'] | |
| return test_cases | |
| def execute_test_script(test_case): | |
| # Simulate API call execution | |
| st.write(f"Executing test: {test_case}") | |
| return {"status": "Passed", "response_time": "200ms"} | |
| def store_test_results(test_case, result): | |
| conn = sqlite3.connect("test_results.db") | |
| cursor = conn.cursor() | |
| cursor.execute(""" | |
| CREATE TABLE IF NOT EXISTS results (test_case TEXT, status TEXT, response_time TEXT) | |
| """) | |
| cursor.execute("INSERT INTO results (test_case, status, response_time) VALUES (?, ?, ?)", | |
| (test_case, result["status"], result["response_time"])) | |
| conn.commit() | |
| conn.close() | |
| def show_past_results(): | |
| conn = sqlite3.connect("test_results.db") | |
| cursor = conn.cursor() | |
| cursor.execute("SELECT * FROM results") | |
| results = cursor.fetchall() | |
| conn.close() | |
| return results | |
| # Streamlit UI | |
| st.title("AI-Powered API Test Case Generator") | |
| swagger_url = st.text_input("Enter Swagger URL") | |
| if st.button("Generate Test Cases"): | |
| swagger_data = fetch_swagger_data(swagger_url) | |
| if swagger_data: | |
| test_cases = generate_bdd_test_cases(swagger_data) | |
| st.session_state["test_cases"] = test_cases | |
| st.success("Test Cases Generated!") | |
| st.json(test_cases) | |
| if "test_cases" in st.session_state: | |
| st.subheader("Execute Test Cases") | |
| for api, test_case in st.session_state["test_cases"].items(): | |
| if st.button(f"Run {api}"): | |
| result = execute_test_script(test_case) | |
| store_test_results(api, result) | |
| st.success(f"{api} - {result['status']}") | |
| st.subheader("Past Execution Results") | |
| past_results = show_past_results() | |
| st.table(past_results) | |