---
# System prepended metadata

title: COMP0233 - Day 5 (3rd November 2022)
tags: [teaching, class, COMP0233]

---

# COMP0233 - Day 5 (3rd November 2022)

:::info
## :tada: Welcome to the fifth day! Testing code with :snake:
 

### Today
Today we will look at writing automated tests in Python.
- Automating tests
- Testing edge cases
- Catching invalid inputs and testing that this behaves as expected
- Testing in different setups
- Avoid code repetition in your tests
:::


### Review from last week 
- :1234: Data and Python :snake: (csv, json, yaml)
- :chart_with_upwards_trend: a bit about graphs

#### What was discussed during the week :newspaper: 
- Sample solution for plotting exercise published :check:
- Practical homework done by at least 11 people (count yesterday 11PM)
- Assignment has been released, deadline: Wed 16 Nov 2022 at 16:00 (UK time)
    - Minor clarification on Moodle! 

### Discussion of preparation work
- testing terminology - on [Mentimeter](https://www.menti.com/9fi8o1xcxa).
- homework consisted of writing a unit test for `times.py`
- what else should be tested about `times.py` ([questionnaire](https://moodle.ucl.ac.uk/mod/questionnaire/view.php?id=2483635))


### Exercise: Write more tests
:::info

For this exercise, we will continue working with the `times.py` that was part of the class preparation.

In pairs, share a screen and discuss how to write the tests required. Then work collaboratively on the exercise.

rse-classwork repo: [:hash::one::nine:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/19) 
:::

### Discussion: 


On [Mentimeter](https://www.menti.com/9fi8o1xcxa)

Ask about things you were unsure of, and point out anything you found interesting or unexpected.

### Time for a short-movie :film_projector: 
What can happen when tests are lacking?

### Exercise: Write a negative test
:::info

Let's keep checking the robustness of this code!

In pairs, share a screen, discuss how to write the required validation code, the negative test, and work collaboratively on the exercise.

rse-classwork repo: [:hash::two::zero:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/20)

:::
### Discussion of the exercise

On [Mentimeter](https://www.menti.com/9fi8o1xcxa).

Ask about things you were unsure of, and point out anything you found interesting or unexpected.


### Exercise: :construction_worker: Running the tests automatically
:::info

Continuous integration: Easy check that new contributions don't break stuff.

In pairs, share a screen and work collaboratively on the exercise.

rse-classwork repo: [:hash::two::one:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/21) 

:::
### Discussion of the exercise

On [Mentimeter](https://www.menti.com/9fi8o1xcxa).

Ask about things you were unsure of, and point out anything you found interesting or unexpected.


### Exercise: :sunny:  DRYing the tests
:::info

Let's make these tests easier to manage!

In smaller groups, share a screen, discuss how to write the required test, and work collaboratively on the exercise.

rse-classwork repo: [:hash::two::seven:](https://github.com/UCL-COMP0233-22-23/RSE-Classwork/issues/27) 

:::
### Discussion of the exercise

On [Mentimeter](https://www.menti.com/9fi8o1xcxa).

Ask about things you were unsure of, and point out anything you found interesting or unexpected.

### Feedback

Please, fill the [mid-course feedback questionnaire](https://moodle.ucl.ac.uk/mod/questionnaire/view.php?id=4462960).

### Next... & Homework 
- Remaining exercises from week 5
- Preparation for week 6


###### tags: `COMP0233` `teaching` `class`

