Gute Komponententests sind für den Erfolg jedes Projekts entscheidend. Das Schreiben dieser Tests kann jedoch zeitaufwändig sein und wird oft vernachlässigt. Copilot Chat kann dir dabei helfen, diese Tests zu generieren.
Beispielszenario
Stelle dir vor, du verfügst über eine Python-Funktion, die Daten vor dem Aktualisieren der Datenbank überprüft. Du musst Komponententests erstellen, um zu gewährleisten, dass die Überprüfung wie erwartet funktioniert. Du kannst Copilot Chat dazu auffordern, diese Tests für dich zu generieren.
def validate_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")
Beispiel für Prompt
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
Beispielantwort
Note
Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.
Wenn du Copilot Chat zum ersten Mal dazu aufforderst, Komponententests zu generieren, wirst du möglicherweise gefragt, ob du Komponententests für dein Projekt konfigurieren möchtest. In diesem Beispiel wird davon ausgegangen, dass du dies nicht möchtest.
Copilot stellt eine Strategie zum Generieren von Tests und dann die Tests selbst bereit.
import unittest
from generate_unit_tests import validate_price
class TestValidateProduct(unittest.TestCase):
def test_price_zero(self):
with self.assertRaises(ValueError) as context:
validate_price(0)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_price_negative(self):
with self.assertRaises(ValueError) as context:
validate_price(-10)
self.assertEqual(str(context.exception), "Price must be greater than 0")
def test_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")
def test_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")
def test_price_edge_case_max(self):
try:
validate_price(1000)
except ValueError:
self.fail("validate_price() raised ValueError unexpectedly!")
if __name__ == '__main__':
unittest.main()