| import transformers |
| import streamlit as st |
| import requests |
| import json |
| import sqlite3 |
| import os |
| from transformers import pipeline |
|
|
| |
| test_case_generator = pipeline("text-generation", model="microsoft/CodeGPT-small-py") |
|
|
| DB_PATH = "results.db" |
|
|
| |
| if not os.path.exists(DB_PATH): |
| conn = sqlite3.connect(DB_PATH) |
| cursor = conn.cursor() |
| cursor.execute(''' |
| CREATE TABLE IF NOT EXISTS results ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| api_name TEXT, |
| test_status TEXT, |
| run_timestamp DATETIME DEFAULT CURRENT_TIMESTAMP |
| ) |
| ''') |
| conn.commit() |
| conn.close() |
| |
|
|
| 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): |
| |
| 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(DB_PATH) |
| cursor = conn.cursor() |
| cursor.execute("SELECT * FROM results") |
| data = cursor.fetchall() |
| conn.close() |
| return data |
|
|
| |
| 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) |
|
|