Skip to content

Commit c615219

Browse files
Merge pull request #179 from python-discord/add-setup
Allow Setup For Unittests
2 parents 7d4affd + 0befbe9 commit c615219

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

backend/models/question.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ class Unittests(BaseModel):
1515
@validator("tests")
1616
def validate_tests(cls, value: _TESTS_TYPE) -> _TESTS_TYPE:
1717
"""Confirm that at least one test exists in a test suite."""
18-
if isinstance(value, dict) and len(value.keys()) == 0:
19-
raise ValueError("Must have at least one test in a test suite.")
18+
if isinstance(value, dict):
19+
keys = len(value.keys()) - (1 if "setUp" in value.keys() else 0)
20+
if keys == 0:
21+
raise ValueError("Must have at least one test in a test suite.")
2022

2123
return value
2224

backend/routes/forms/unittesting.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ def _make_unit_code(units: dict[str, str]) -> str:
3636
result = ""
3737

3838
for unit_name, unit_code in units.items():
39-
result += (
40-
f"\ndef test_{unit_name.lstrip('#')}(unit):" # Function definition
41-
f"\n{indent(unit_code, ' ')}" # Unit code
42-
)
39+
# Function definition
40+
if unit_name == "setUp":
41+
result += "\ndef setUp(self):"
42+
else:
43+
result += f"\nasync def {unit_name.removeprefix('#')}(self):"
44+
45+
# Unite code
46+
result += f"\n{indent(unit_code, ' ')}"
4347

4448
return indent(result, " ")
4549

@@ -83,7 +87,7 @@ async def execute_unittest(form_response: FormResponse, form: Form) -> list[Unit
8387
# Tests starting with an hashtag should have censored names.
8488
hidden_test_counter = count(1)
8589
hidden_tests = {
86-
test.lstrip("#").lstrip("test_"): next(hidden_test_counter)
90+
test.removeprefix("#").removeprefix("test_"): next(hidden_test_counter)
8791
for test in question.data["unittests"]["tests"].keys()
8892
if test.startswith("#")
8993
}

resources/unittest_template.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
### USER CODE
1616

1717

18-
class RunnerTestCase(unittest.TestCase):
18+
class RunnerTestCase(unittest.IsolatedAsyncioTestCase):
1919
### UNIT CODE
2020

2121

@@ -64,8 +64,8 @@ def _main() -> None:
6464
if not result.wasSuccessful():
6565
RESULT.write(
6666
";".join(chain(
67-
(error[0]._testMethodName.lstrip("test_") for error in result.errors),
68-
(failure[0]._testMethodName.lstrip("test_") for failure in result.failures)
67+
(error[0]._testMethodName.removeprefix("test_") for error in result.errors),
68+
(failure[0]._testMethodName.removeprefix("test_") for failure in result.failures)
6969
))
7070
)
7171

0 commit comments

Comments
 (0)