From abf8a470b4c3b0b7f61a8162ef98ccf501f297a6 Mon Sep 17 00:00:00 2001 From: Max Cotton Date: Mon, 11 Mar 2024 10:51:08 +0000 Subject: [PATCH] Add unittest.main() call to test_database.py --- project-report/project-report.pdf | Bin 1747150 -> 1747334 bytes school_project/test/test_database.py | 3 +++ 2 files changed, 3 insertions(+) diff --git a/project-report/project-report.pdf b/project-report/project-report.pdf index 89b621e59cadc026b7a7131ac88fbd2f9ad4e981..774589d05d2d05a0cc22598ecd5c78a3b2b4c246 100644 GIT binary patch delta 12379 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 DCNIPr delta 12161 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 None: # Compare test data with loaded data for test_value, loaded_value in zip(test_data, loaded_data[1:]): self.assertEqual(first=test_value, second=loaded_value) + +if __name__ == "__main__": + unittest.main()