her er min erfaring med å spørre chatGPT (gratis versjon) til å skrive kode for meg:
så jeg sporte å lage en funksjon som kunne aktivere en av mine skripter en gang om dagen i en tidsrom mellom 12:15 og fram til 12:00 dagen etter. Jeg ville også ha unit test for denne.
Det took chaptGpt mindre en 1 minutt å lage. Jeg måtte finjustere denne da logikken feilet, men ellers 99% av kide har jeg brukt sånn som jeg fikk det.
Kan det bli bedre en dette? Jeg kan tenke meg å bruke chatGPT plugin, slik at chatten har tilgang til hele koden, og kan hjelpe å feilsøke koden, opptimalisere og ha referanse til koden for å gi bedre svar generelt.
```python
def __ready_to_run(file_path, current_time=None😞
try:
with open(file_path, 'r') as file:
execution_datetime_str = file.read().strip()
executed_last_time = datetime.strptime(execution_datetime_str, "%d.%m.%Y %H:%M:%S")
current_datetime = current_time or datetime.now()
if current_datetime.hour >= 12 and (current_datetime.hour > 12 or current_datetime.minute >= 15😞
current_time_frame_start = datetime(
current_datetime.year, current_datetime.month, current_datetime.day, 12, 15, 0
)
else:
previous_day = current_datetime - timedelta(days=1)
current_time_frame_start = datetime(
previous_day.year, previous_day.month, previous_day.day, 12, 15, 0
)
time_frame_end = current_time_frame_start + timedelta(days=1) - timedelta(minutes=20) - timedelta(seconds=1)
if current_time_frame_start <= executed_last_time <= time_frame_end:
print("Allready did today")
return False
else:
print("Ready to run")
return True
except FileNotFoundError:
return False
#Unit testen (definert i en annen fil)
class TestReadyToRun(unittest.TestCase😞
def test_execution_within_timeframe(self😞
file_path = './textfiles/last_execution.txt'
# create timestamp in test test file with yesterday time of execution
execution_time = datetime(2023, 6, 17, 12, 30, 0)
with open(file_path, 'w') as file:
file.write(execution_time.strftime("%d.%m.%Y %H:%M:%S"))
# Test case 1: test if ready to run at 17.06.2023 23:30:00
current_time = datetime(2023, 6, 17, 23, 30, 0)
expected_result = False # Don't expect to run again today
self.assertEqual(ready_to_run_cb(file_path, current_time), expected_result)
# Test case 2: test if ready to run at 18.06.2023 1:30:00
current_time = datetime(2023, 6, 18, 1, 30, 0)
expected_result = False
self.assertEqual(ready_to_run_cb(file_path, current_time), expected_result)
# Test case 3: test if ready to run at 18.06.2023 12:30:00
current_time = datetime(2023, 6, 18, 12, 30, 0)
expected_result = True
self.assertEqual(ready_to_run_cb(file_path, current_time), expected_result)
```