Why doesn't Python (error msg) tell me WHAT the actual (arg) values are ?

dn PythonList at DancesWithMice.info
Fri Feb 24 14:47:00 EST 2023


On 25/02/2023 08.12, Peter J. Holzer wrote:
> On 2023-02-24 16:12:10 +1300, dn via Python-list wrote:
>> In some ways, providing this information seems appropriate. Curiously, this
>> does not even occur during an assert exception - despite the
>> value/relationship being the whole point of using the command!
>>
>>      x = 1
>>      assert x == 2
>>
>> AssertionError (and that's it)
> 
> Pytest is great there. If an assertion in a test case fails it analyzes
> the expression to give you various levels of details:
> 
> ======================================== test session starts ========================================
> platform linux -- Python 3.10.6, pytest-6.2.5, py-1.10.0, pluggy-0.13.0
> rootdir: /home/hjp/tmp/t
> plugins: cov-3.0.0, anyio-3.6.1
> collected 1 item
> 
> test_a.py F                                                                                   [100%]
> 
> ============================================= FAILURES ==============================================
> ______________________________________________ test_a _______________________________________________
> 
>      def test_a():
>          a = [1, 2, 3]
>          b = {"a": a, "b": 2}
> 
>>        assert len(a) == len(b)
> E       AssertionError: assert 3 == 2
> E        +  where 3 = len([1, 2, 3])
> E        +  and   2 = len({'a': [1, 2, 3], 'b': 2})
> 
> test_a.py:7: AssertionError
> ====================================== short test summary info ======================================
> FAILED test_a.py::test_a - AssertionError: assert 3 == 2
> ========================================= 1 failed in 0.09s =========================================

+1
and hence the tone of slight surprise in the observation - because only 
ever use assert within pytests, and as observed, pytest amplifies the 
report-back to provide actionable-intelligence. See also: earlier 
contribution about using a debugger.


That said, have observed coders 'graduating' from other languages, 
making wider use of assert - assumed to be more data (value) 
sanity-checks than typing, but ...

Do you use assert frequently?


The OP seems wedded to his?her ways, complaining that Python does not 
work the way it 'should'. In turn, gives rise to the impression that 
expounding the advantages of TDD, and thus anticipating such unit and 
integration error-possibilities, might be considered an insult or unhelpful.
(sigh!)

Personally, I struggled a bit to adapt from the more-strictured (if not 
more-structured) languages of my past, to Python - particularly the 
different philosophies or emphases of what happens at 'compile-time' cf 
'execution-time'; and how such required marked changes in attitudes to 
design, time-allocation, work-flow, and tool-set. Two related-activities 
which made the language-change more workable and unleashed greater than 
step-change advantage, were: increased use of TDD, and actively learning 
the facilities within Python-oriented IDEs.

-- 
Regards,
=dn


More information about the Python-list mailing list