Update backend.py
Browse files- backend.py +12 -20
backend.py
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
import json
|
| 2 |
import csv
|
| 3 |
import io
|
| 4 |
import requests
|
|
@@ -64,7 +63,6 @@ def generate_testcases(user_story):
|
|
| 64 |
if chunk.choices[0].delta.content is not None:
|
| 65 |
test_cases_text += chunk.choices[0].delta.content
|
| 66 |
|
| 67 |
-
|
| 68 |
# Ensure the entire response is captured before cleaning
|
| 69 |
if test_cases_text.strip() == "":
|
| 70 |
return [{"test_case": "No test cases generated or output was empty."}]
|
|
@@ -89,40 +87,34 @@ def generate_testcases(user_story):
|
|
| 89 |
print(f"API request failed: {str(e)}")
|
| 90 |
return []
|
| 91 |
|
| 92 |
-
#
|
| 93 |
-
def export_test_cases(test_cases, format='
|
| 94 |
if not test_cases:
|
| 95 |
return "No test cases to export."
|
| 96 |
|
| 97 |
# Convert test cases (which are currently strings) into a structured format for CSV
|
| 98 |
-
structured_test_cases = [{'Test Case': case} for case in test_cases]
|
| 99 |
|
| 100 |
-
if format == '
|
| 101 |
-
# Improve JSON export to be line-by-line formatted
|
| 102 |
-
return json.dumps(test_cases, indent=4, separators=(',', ': ')) # More readable format
|
| 103 |
-
elif format == 'csv':
|
| 104 |
if isinstance(test_cases, list) and isinstance(test_cases[0], dict):
|
| 105 |
output = io.StringIO()
|
| 106 |
-
csv_writer = csv.DictWriter(output, fieldnames=
|
| 107 |
csv_writer.writeheader()
|
| 108 |
-
csv_writer.writerows(
|
| 109 |
return output.getvalue()
|
| 110 |
else:
|
| 111 |
raise ValueError("Test cases must be a list of dictionaries for CSV export.")
|
| 112 |
|
| 113 |
-
#
|
| 114 |
-
def save_test_cases_as_file(test_cases, format='
|
| 115 |
if not test_cases:
|
| 116 |
return "No test cases to save."
|
| 117 |
|
| 118 |
-
if format == '
|
| 119 |
-
with open('test_cases.json', 'w') as f:
|
| 120 |
-
json.dump(test_cases, f)
|
| 121 |
-
elif format == 'csv':
|
| 122 |
with open('test_cases.csv', 'w', newline='') as file:
|
| 123 |
-
dict_writer = csv.DictWriter(file, fieldnames=
|
| 124 |
dict_writer.writeheader()
|
| 125 |
-
dict_writer.writerows(test_cases)
|
| 126 |
else:
|
| 127 |
return f"Unsupported format: {format}"
|
| 128 |
-
return f'{format} file saved'
|
|
|
|
|
|
|
| 1 |
import csv
|
| 2 |
import io
|
| 3 |
import requests
|
|
|
|
| 63 |
if chunk.choices[0].delta.content is not None:
|
| 64 |
test_cases_text += chunk.choices[0].delta.content
|
| 65 |
|
|
|
|
| 66 |
# Ensure the entire response is captured before cleaning
|
| 67 |
if test_cases_text.strip() == "":
|
| 68 |
return [{"test_case": "No test cases generated or output was empty."}]
|
|
|
|
| 87 |
print(f"API request failed: {str(e)}")
|
| 88 |
return []
|
| 89 |
|
| 90 |
+
# Export test cases in CSV format
|
| 91 |
+
def export_test_cases(test_cases, format='csv'):
|
| 92 |
if not test_cases:
|
| 93 |
return "No test cases to export."
|
| 94 |
|
| 95 |
# Convert test cases (which are currently strings) into a structured format for CSV
|
| 96 |
+
structured_test_cases = [{'Test Case': case.get('test_case', case)} for case in test_cases]
|
| 97 |
|
| 98 |
+
if format == 'csv':
|
|
|
|
|
|
|
|
|
|
| 99 |
if isinstance(test_cases, list) and isinstance(test_cases[0], dict):
|
| 100 |
output = io.StringIO()
|
| 101 |
+
csv_writer = csv.DictWriter(output, fieldnames=structured_test_cases[0].keys(), quoting=csv.QUOTE_ALL)
|
| 102 |
csv_writer.writeheader()
|
| 103 |
+
csv_writer.writerows(structured_test_cases)
|
| 104 |
return output.getvalue()
|
| 105 |
else:
|
| 106 |
raise ValueError("Test cases must be a list of dictionaries for CSV export.")
|
| 107 |
|
| 108 |
+
# Save test cases as a CSV file
|
| 109 |
+
def save_test_cases_as_file(test_cases, format='csv'):
|
| 110 |
if not test_cases:
|
| 111 |
return "No test cases to save."
|
| 112 |
|
| 113 |
+
if format == 'csv':
|
|
|
|
|
|
|
|
|
|
| 114 |
with open('test_cases.csv', 'w', newline='') as file:
|
| 115 |
+
dict_writer = csv.DictWriter(file, fieldnames=['Test Case'])
|
| 116 |
dict_writer.writeheader()
|
| 117 |
+
dict_writer.writerows([{'Test Case': case.get('test_case', case)} for case in test_cases])
|
| 118 |
else:
|
| 119 |
return f"Unsupported format: {format}"
|
| 120 |
+
return f'{format} file saved'
|