risultato es1 Homework 1 Timeout

Adriano.Sapuppo (350 points)
0 6 8
asked Oct 25, 2018 in Es3 by Adriano.Sapuppo (350 points)
closed Nov 7, 2018 by andrea.sterbini

Ciao a tutti,

se compilo test_01.py da anaconda promt non ottengo il risultato dei test, ultima parola Timeout. Perché? Condivido il risultato.

(base) C:\Users\adria\OneDrive\Università\Fondamenti di programmazione\homework01>pytest test_01.py -v --timeout=1
============================= test session starts =============================
platform win32 -- Python 3.7.0, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- C:\ProgramData\Anaconda3\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\adria\OneDrive\Università\Fondamenti di programmazione\homework01, inifile:
plugins: timeout-1.3.2, remotedata-0.3.0, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2
timeout: 1.0s
timeout method: thread
timeout func_only: False
collected 9 items

test_01.py::Test::test_2_valori_soli_grandi_1__300__800_ PASSED          [ 11%]
test_01.py::Test::test_2_valori_soli_grandi_2__2000__50000_ PASSED       [ 22%]
test_01.py::Test::test_N_voti_casuali_tra_1_e_K_1__1000__10___1000__1000__895__775__683__589__487__389__286__179__92__ PASSED [ 33%]
test_01.py::Test::test_N_voti_casuali_tra_1_e_K_2__10000__100___10000__10000__9893__9797__9691__9593__9484__9373__9277__9191__9098__9022__8911__8818__8710__8597__8483__8397__8286__8178__8075__7965__7858__7763__7667__7577__7479__7369__7253__7165__7064__6961__6871__6774__6667__6561__6461__6374__6285__6175__6073__5962__5853__5767__5645__5533__5438__5323__5234__5145__5048__4939__4836__4737__4634__4522__4425__4325__4232__4131__4027__3942__3847__3749__3649__3549__3460__3372__3273__3177__3082__2992__2908__2811__2702__2616__2524__2422__2324__2199__2091__1994__1878__1777__1686__1585__1478__1385__1272__1180__1103__998__880__781__687__588__476__388__300__202__103__ PASSED [ 44%]
test_01.py::Test::test_N_voti_casuali_tra_1_e_K_3__100000__1___100000__100000__ PASSED [ 55%]
test_01.py::Test::test_prende_i_dati_dal_file_json_1_lista_ls_di_7_valori_con_massimo_valore_9 PASSED [ 66%]
test_01.py::Test::test_prende_i_dati_dal_file_json_2_lista_ls_di_10000_voti__tutti_tra_0_e_10_ PASSED [ 77%]
test_01.py::Test::test_sequenza_di_N_valori_consecutivi_1_1000 PASSED    [ 88%]
test_01.py::Test::test_sequenza_di_N_valori_consecutivi_2_10000
+++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Captured stdout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10000

~~~~~~~~~~~~~~~~~~~~~~~~~ Stack of MainThread (12724) ~~~~~~~~~~~~~~~~~~~~~~~~~~
  File "C:\ProgramData\Anaconda3\Scripts\pytest-script.py", line 10, in <module>
    sys.exit(main())
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\config\__init__.py", line 67, in main
    return config.hook.pytest_cmdline_main(config=config)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\main.py", line 208, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\main.py", line 178, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\main.py", line 215, in _main
    config.hook.pytest_runtestloop(session=session)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\main.py", line 236, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 66, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 81, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 161, in call_and_report
    call = call_runtest_hook(item, when, **kwds)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 185, in call_runtest_hook
    treat_keyboard_interrupt_as_exception=item.config.getvalue("usepdb"),
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 201, in __init__
    self.result = func()
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 183, in <lambda>
    lambda: ihook(item=item, **kwds),
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\hooks.py", line 258, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 67, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\manager.py", line 61, in <lambda>
    firstresult=hook.spec_opts.get('firstresult'),
  File "C:\ProgramData\Anaconda3\lib\site-packages\pluggy\callers.py", line 180, in _multicall
    res = hook_impl.function(*args)
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\runner.py", line 111, in pytest_runtest_call
    item.runtest()
  File "C:\ProgramData\Anaconda3\lib\site-packages\_pytest\unittest.py", line 185, in runtest
    self._testcase(result=self)
  File "C:\ProgramData\Anaconda3\lib\unittest\case.py", line 663, in __call__
    return self.run(*args, **kwds)
  File "C:\ProgramData\Anaconda3\lib\unittest\case.py", line 615, in run
    testMethod()
  File "C:\ProgramData\Anaconda3\lib\site-packages\ddt.py", line 145, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\adria\OneDrive\Università\Fondamenti di programmazione\homework01\test_01.py", line 60, in test_sequenza_di_N_valori_consecutivi
    self.do_test(voti, expected)
  File "C:\Users\adria\OneDrive\Università\Fondamenti di programmazione\homework01\test_01.py", line 27, in do_test
    result   = program.es1(voti_bis)
  File "C:\Users\adria\OneDrive\Università\Fondamenti di programmazione\homework01\program01.py", line 28, in es1
    ammessi_n += 1

+++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
280 views
closed with note: deadline passed

1 Answer

B
Ballants (3110 points)
0 4 20
answered Oct 25, 2018 by Ballants (3,110 points)

(test del primo esercizio con timeout di 1 secondo per ciascun test e con una stampa dei tempi impiegati per eseguire ciascun test)

  • pytest test_01.py -v --timeout 1 --durations 0

Se vuoi le tempistiche dei singoli test usa questo.

Se continua a non dartele significa che hai sforato il timeout... aumentalo, invece di 1 metti, ad esempio, 10 (almeno sei sicuro di rientrare) 

Adriano.Sapuppo (350 points)
0 6 8
commented Oct 25, 2018 by Adriano.Sapuppo (350 points)
Però se la eseguo senza timeout mi passa i 9 test in 5,53 secondi.
B
Ballants (3110 points)
0 4 20
commented Oct 25, 2018 by Ballants (3,110 points)
Non devi vedere il tempo complessivo ma il tempo che impiega il tuo codice per ogni singolo test. Nel caso dell'esercizio 1 ogni test deve essere svolto in massimo 1 secondo. Ciò significa che se dei 5 secondi totali 2s li butti per l'ultimo test... quest'ultimo non l'hai passato e quando applichi il Timeout non riesce a completarlo
Adriano.Sapuppo (350 points)
0 6 8
commented Oct 25, 2018 by Adriano.Sapuppo (350 points)
Ma non dovrebbe semplicemente restituirmi il test tra i failed? Cioé se per eseguire l'intero codice ci mette 2 secondi supponiamo come fa a non arrivare a completarlo? Non comprendo
B
Ballants (3110 points)
0 4 20
commented Oct 25, 2018 by Ballants (3,110 points)
edited Oct 25, 2018 by Ballants
L'ultimo test è quello che gestisce moli di dati più pesanti, quindi è ovvio che ci metta più tempo... e tu hai detto che il tuo codice ci mette 5 e passa secondi per 9 test (evidentemente per l'ultimo ci mette più di un secondo).
E CREDO sia normale il fatto che non ti dia "Failed" perché il codice funziona, l'unico problema è che non rientra nelle tempistiche
Adriano.Sapuppo (350 points)
0 6 8
commented Oct 26, 2018 by Adriano.Sapuppo (350 points)
Ok grazie. Non capisco come ridurre il tempo di esecuzione..... le sto provando tutte
B
Ballants (3110 points)
0 4 20
commented Oct 26, 2018 by Ballants (3,110 points)
Se le hai REALMENTE provate tutte ti consiglio di cambiare procedimento. Ricomincia da capo cercando un algoritmo migliore