A good suite of unit tests is critical to the success of any project. However, writing these tests can be time-consuming and are often neglected. Copilot Chat can help generate these tests for you.
Example scenario
Imagine you have a Python function which validates data before updating the database. You need to create unit tests to ensure the validation performs the way you expect. You can ask Copilot Chat to generate these tests for you.
defvalidate_price(price: float): if price <= 0: raise ValueError("Price must be greater than 0") if price >1000: raise ValueError("Price must be less than or equal to 1000")
Example prompt
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
Example response
Note
The following response is an example. Copilot Chat responses are non-deterministic, so you may get a different response from the one shown here.
If this is your first time asking Copilot Chat to generate unit tests, it may ask you if you wish to configure unit tests for your project. For this example, we are assuming you decline this offer.
Copilot will provide a strategy for generating the tests, and then provide the tests themselves.
import unittest from generate_unit_tests import validate_price classTestValidateProduct(unittest.TestCase): deftest_price_zero(self): with self.assertRaises(ValueError) as context: validate_price(0) self.assertEqual(str(context.exception), "Price must be greater than 0") deftest_price_negative(self): with self.assertRaises(ValueError) as context: validate_price(-10) self.assertEqual(str(context.exception), "Price must be greater than 0") deftest_price_above_limit(self): with self.assertRaises(ValueError) as context: validate_price(1500) self.assertEqual(str(context.exception), "Price must be less than or equal to 1000") deftest_price_edge_case_zero(self): with self.assertRaises(ValueError) as context: validate_price(0) self.assertEqual(str(context.exception), "Price must be greater than 0") deftest_price_edge_case_max(self): try: validate_price(1000) except ValueError: self.fail("validate_price() raised ValueError unexpectedly!") if __name__ == '__main__': unittest.main()