Eine gute Suite von Einheitstests ist entscheidend für den Erfolg jedes Projekts. Das Schreiben dieser Tests kann jedoch zeitaufwändig sein und wird oft vernachlässigt. Copilot-Chat kann Ihnen 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. Sie können Copilot-Chat bitten, diese Tests für Sie 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")
Beispielaufforderung
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
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")
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
/tests Generate unit tests for this function. Validate both success and failure, and include edge cases.
Beispielantwort
Hinweis
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 Sie zum ersten Mal zum Generieren von Komponententests aufgefordert werden Copilot-Chat , werden Sie möglicherweise gefragt, ob Sie Komponententests für Ihr Projekt konfigurieren möchten. In diesem Beispiel wird davon ausgegangen, dass du dies nicht möchtest.
Copilot stellt eine Strategie zum Generieren der Tests bereit und stellt 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()