Before the Lab
Read
Practical Python on Testing (mainly the part on
pytest, at the end).- Practical Python on Files
- Practical Python on Datatypes
Read
Practical Python on Testing (mainly the part on pytest, at the end).
~/cs2613/labs/L14In a terminal run
pipx install --include-deps unb-cs2613
rehash
Save the following sample code (based on Exercise 1.19) to a file listex.py in the directory
you created above.
symbols = 'HPQ,AAPL,IBM,MSFT,YHOO,DOA,GOOG'
symlist = symbols.split(',')
def test_lookup0():
assert symlist[0] == 'HPQ'
def test_lookup1():
assert symlist[1] == 'AAPL'
In ~/cs2613/labs/L14, run
pytest listex.py
You should see
[student@id414m22 L14]$ pytest listex.py
=================== test session starts ===================
platform linux -- Python 3.9.18, pytest-7.4.3, pluggy-1.3.0
rootdir: /home1/ugrad/student/cs2613/labs/L14
plugins: pylama-8.4.1, cov-4.1.0
collected 2 items
listex.py .. [100%]
==================== 2 passed in 0.02s ====================
Modify one of the tests so it fails. Run pytest again.
Question to think about: what are three ways failing tests are indicated?
For each of the remaining interactive evaluations in Exercise
1.19,
add a corresponding test to listex.py.
make sure each test_* function (def) has a unique name.
if you want, you can have multiple asserts in a single test.
Questions to think about:
== in JavaScript and Python?node test framework and pytestWe have already been using python functions for pytest, without
really thinking about how they work. In Part 1.7 of Practical
Python,
functions are explained.
def sumcount(n):
'''
Returns the sum of the first n integers
'''
total = 0
while n > 0:
total += n
n -= 1
return total
Make a recursive version of this function.
Add sufficient pytest tests for both versions of the function.
Check your test(s) for coverage with
pytest --cov=sum --cov-report=term-missing sum.py
(assuming your file is called sum.py)
Do Exercise 1.26.
Convert the interactive demos to pytest tests. You can replace
print with appending to a list.