TestingAssist / app.py
thechaiexperiment's picture
Rename app (15).py to app.py
139d052 verified
import gradio as gr
import openai
import os
import docx
from docx.shared import Pt
# OpenRouter API Key
OPENROUTER_API_KEY = "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"
OPENROUTER_MODEL = "sophosympatheia/rogue-rose-103b-v0.2:free"
# Initialize OpenAI client with OpenRouter base URL
print(f"Using API Key: {OPENROUTER_API_KEY}")
openai_client = openai.OpenAI(
api_key=OPENROUTER_API_KEY,
base_url="https://openrouter.ai/api/v1" # OpenRouter API endpoint
)
# Few-shot examples for test case generation
FEW_SHOT_EXAMPLES = """
Example 1:
Project: E-commerce Website
Requirement: Users should be able to add items to their cart.
Test Case:
1. Navigate to the product page.
2. Click the "Add to Cart" button.
3. Verify that the item appears in the cart.
Example 2:
Project: Banking App
Requirement: Users should be able to transfer funds between accounts.
Test Case:
1. Log in to the banking app.
2. Navigate to the "Transfer Funds" section.
3. Select the source and destination accounts.
4. Enter the amount and confirm the transfer.
5. Verify that the transaction is reflected in both accounts.
"""
# Function to generate test cases using OpenRouter API
def generate_test_cases(project_details):
print("Generating test cases...")
try:
response = openai_client.chat.completions.create(
model=OPENROUTER_MODEL,
messages=[
{
"role": "system",
"content": "You are a software testing expert. Your task is to generate test cases based on the provided project details. "
"Use the following examples as a guide:\n" + FEW_SHOT_EXAMPLES
},
{
"role": "user",
"content": f"Project Details:\n{project_details}\n\nGenerate test cases for the above project."
}
]
)
print("Test cases generated.")
return response.choices[0].message.content
except Exception as e:
print(f"Error generating test cases: {e}")
return f"Error: {e}"
# Function to create a Word document
def create_word_document(content, filename="test_cases.docx"):
print("Creating Word document...")
doc = docx.Document()
doc.add_heading("Generated Test Cases", level=1)
# Add content to the document
for line in content.split("\n"):
if line.strip():
doc.add_paragraph(line)
# Save the document
doc.save(filename)
print(f"Word document saved as {filename}.")
return filename
# Gradio UI for software testing automation
def gradio_ui():
with gr.Blocks() as demo:
gr.Markdown("## Software Testing Automation Tool")
gr.Markdown("Upload project details or enter them as text to generate test cases and documentation.")
# Inputs
project_input = gr.Textbox(label="Enter Project Details", lines=5, placeholder="Describe the project requirements...")
file_upload = gr.File(label="Or Upload Project Document (TXT, PDF, DOCX)", file_types=[".txt", ".pdf", ".docx"])
# Outputs
output_text = gr.Textbox(label="Generated Test Cases", lines=10, interactive=False)
download_link = gr.File(label="Download Test Cases as Word Document")
# Buttons
generate_btn = gr.Button("Generate Test Cases")
# Event handling
generate_btn.click(
fn=lambda project_details: generate_test_cases(project_details),
inputs=[project_input],
outputs=[output_text]
)
generate_btn.click(
fn=lambda project_details: create_word_document(generate_test_cases(project_details)),
inputs=[project_input],
outputs=[download_link]
)
return demo
# Launch Gradio UI
demo = gradio_ui()
print("Launching Gradio UI...")
demo.launch()