Test_Types / app.py
eaglelandsonce's picture
Create app.py
cbcbbca verified
raw
history blame
4.28 kB
import streamlit as st
import unittest
import io
import sys
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# Define test functions
def run_unit_test():
"""Unit Test: Test individual functions for correctness."""
def add_numbers(a, b):
return a + b
class TestAddNumbers(unittest.TestCase):
def test_add_positive_numbers(self):
self.assertEqual(add_numbers(2, 3), 5)
def test_add_negative_numbers(self):
self.assertEqual(add_numbers(-2, -3), -5)
suite = unittest.TestLoader().loadTestsFromTestCase(TestAddNumbers)
result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(suite)
return result
def run_smoke_test():
"""Smoke Test: Quick test of core functionality."""
import requests
try:
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
assert response.status_code == 200
return "Smoke Test Passed! API responded successfully."
except AssertionError:
return "Smoke Test Failed!"
def run_integration_test():
"""Integration Test: Test the interaction between modules."""
import sqlite3
try:
conn = sqlite3.connect(":memory:")
cursor = conn.cursor()
cursor.execute("CREATE TABLE users (id INT, name TEXT)")
cursor.execute("INSERT INTO users VALUES (1, 'Alice')")
conn.commit()
result = cursor.execute("SELECT name FROM users WHERE id = 1").fetchone()
conn.close()
assert result[0] == "Alice"
return "Integration Test Passed! Database interaction works."
except AssertionError:
return "Integration Test Failed!"
def run_regression_test():
"""Regression Test: Ensure changes do not break existing functionality."""
def login(username, password):
if username == "admin" and password == "password":
return "Login successful"
else:
return "Invalid credentials"
try:
assert login("admin", "password") == "Login successful"
assert login("user", "wrongpassword") == "Invalid credentials"
return "Regression Test Passed!"
except AssertionError:
return "Regression Test Failed!"
def run_e2e_test():
"""End-to-End Test: Simulate full user workflows using Selenium."""
try:
# Simulating a basic Google search workflow
driver = webdriver.Chrome()
driver.get("https://www.google.com")
# Search for a term
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Streamlit Selenium Test")
search_box.send_keys(Keys.RETURN)
# Validate the results page
assert "Streamlit Selenium Test" in driver.page_source
driver.quit()
return "E2E Test Passed! Google search workflow is functional."
except Exception as e:
return f"E2E Test Failed! Error: {e}"
def run_acceptance_test():
"""Acceptance Test: Validate the application meets requirements."""
try:
meets_requirements = True # Simulated check
assert meets_requirements
return "Acceptance Test Passed! Application meets requirements."
except AssertionError:
return "Acceptance Test Failed!"
# Streamlit Interface
st.title("Interactive Testing Suite with Selenium")
# Dropdown for test selection
test_options = {
"Unit Test": run_unit_test,
"Smoke Test": run_smoke_test,
"Integration Test": run_integration_test,
"Regression Test": run_regression_test,
"End-to-End Test (Selenium)": run_e2e_test,
"Acceptance Test": run_acceptance_test,
}
selected_test = st.selectbox("Select a test to run:", list(test_options.keys()))
st.write(f"**Description:** {test_options[selected_test].__doc__}")
# Run the selected test
if st.button("Run Test"):
if selected_test == "Unit Test":
# Capture stdout for unittest
with io.StringIO() as buf:
sys.stdout = buf
test_options[selected_test]()
sys.stdout = sys.__stdout__
st.text(buf.getvalue())
else:
# Run other test functions
test_result = test_options[selected_test]()
st.write(f"**Result:** {test_result}")