Salutare! Incerc sa fac un program cli in python care sa monitorizeze un proces la un anumit interval de timp, insa m-am lovit de o problema.
Mai exact, cum as putea sa testez că exceptia ValueError a fost chemata odata ce a fost folosita o valoare negativa pentru argumentul timp?
Am facut o incercare nereusita care poate fi regasita in functia test_valoare_negativa din test_exemplu.py.
M-as bucura daca raspunsul vostru ar putea respecta structura regasita in ambele fisiere de mai jos. Daca acest lucru nu este posibil, atunci orice fel de raspuns este bine-venit.
Daca aveti neclaritati, va rog sa mi le adresati!
Va multumesc!
Am folosit:
Python: 3.10.4
argparse: 1.1
Aici este codul pentru exemplu.py si test_exemplu.py:
# exemplu.py
import argparse, sys
def parse_args(args):
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--cale", type=str, metavar=" ")
parser.add_argument("-t", "--timp", type=float, metavar=" ")
return parser.parse_args(args)
def main():
parser = parse_args(sys.argv[1:])
if parser.timp < 0:
raise ValueError(f"Timpul are o valoare negativa: {parser.timp}. Te rog introdu o valoare pozitiva")
print(parser.cale)
print(parser.timp)
# aici vine restul programului
if __name__ == '__main__':
main()
# test_exemplu.py
import unittest
from exemplu import parse_args
class TestExemplu(unittest.TestCase):
def test_parser(self):
parser = parse_args(['-c', 'asd', '-t', '-1'])
self.assertEqual(parser.cale,'asd')
self.assertEqual(parser.timp, -1)
# asta e incercarea esuata pe care am facut-o
def test_valoare_negativa(self):
parser = parse_args(['-t', '-1'])
self.assertRaises(ValueError, parser.timp, -1)
if __name__ == '__main__':
unittest.main()