Getting started with pytest Transcripts
Chapter: Test Functions
Lecture: Writing our first tests
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Now that we have our environment set up. I've got I'm in my project directory,
0:05
project pytest course. I have a virtual environment activated and it's the same one that I already have pytest involved installed in.
0:14
And now let's write some tests. So I'm gonna open up a code editor. I'm using VS Code but you can really use anything and let's pull down the
0:24
terminal so that we can see both the terminal and the editor. So within chapter we're going to put it in Chapter two and we want a new
0:35
file that starts with, it needs to start with test underscores so that pytest can find it easily and the rest of it doesn't matter.
0:43
Test something works and now I'm going to write a test function. So let's start with a test function.
0:51
Just any this first one I just wanted wanted to pass the name of.
0:54
It doesn't matter except for it does need to start with test underscore still both the
0:59
file and the function should start with that and we can really do anything we want
1:04
within this function but I'm just going to find a tuple 123 and assert that that value is equal to the expected value of 123 that should pass.
1:19
So let's write this is so I'm in the directory. I'm not in the Chapter two yet. So we'll go into chapter two and go ahead and run pytest.
1:32
Cool. So we ran pytest within the direct chapter two directory. and it found test something. It did list some information about our environment.
1:45
It showed what our directory is, the root directory of the testing and it collected one item. The one item is the test that it found.
1:54
If there were two tests which will write shortly, it would say two items. And it said test something with a dot,
2:00
the dot, the green dot means everything passed. And then down here it says one passed and then the time it took. So this is pretty neat already.
2:10
it gets even neater. Well, if this isn't enough information for you and you're like, well what if it found something else?
2:17
We can give it a -V flag and it'll tell you specifically which test function and the two colons between the the the path.
2:26
This right now it's just a file name but this is the if we were somewhere
2:30
else and there's a subdirectory this would be the full path and the then two colons and then the test name, this is called the the test node ID.
2:40
And it shows up in pytest documentation. I probably won't refer to it too much but that's the note. I node name or node ID.
2:47
So let's make this a little bit more exciting by having a failing test. So let's do a failing test and to make it fail,
3:02
we'll just make the tuple not the same. So 123 is not equal to 321. So this should fail. So if I run high pytest again I get more output
3:13
So I get this test session start the same information here did collect two items It's these two items and the dot is passing and the red f is
3:26
for failing. And then below below that we see the list of failures. And in this case it's one test says this is the test name,
3:35
test fail. And it points us exactly where the assert is and where the where
3:41
the problem is the failure is right here it says assert 123 is equals 321 that is not right and the index zero is different.
3:53
So it noticed that this is different but we also know that this is different. So hopefully if we give it a -V as it says it says use
4:01
-V to get more diff. So let's do that and if we do that then we've got the -V. One of the things we'll notice.
4:09
We also get the the more verbose test listings, we have both the tests this one past and this one failed and then we have
4:18
a full diff that explains has little carrots which is nice exactly where the differences.
4:24
So that's pretty cool. And pytest will show us it also has a little summary and then also one test, one failed in one passed and the time it took.
4:35
So that's nice. Um But it gives us as much information as it can come up with. So if we have, so this is this is something where there's placement,
4:44
there's there's that's wrong. If we have something else, like let's do another test, that's 123, but then add another element, so 1234,
4:54
those are both equal also, but there isn't how is it going to show us exactly how that's different? So we can give it,
5:01
let's run that again with the -V. So we see the full diff and we get it runs both. It runs all the tests even, it doesn't stop. It's got,
5:11
it'll show us the this full list and the the same failures before and then this new failure and has a different creative way to say it,
5:21
it says like this is different. So the right one contains one more item, which is four. So that's handy.
5:28
So anyway, Pytest will try to give us more information than as much information as it can as to why the failure happened,
5:37
which is really nice and we we don't have to do just equals, we can do not equals or less than or really any expression that can be converted
5:46
to a boolean, which is really anything that but usually, you know, these sort of algebraic looking sort of expressions are common in in python
5:57
for asserts. Anyway, this whole section here. This is what the it's called the trace back is this part and it gives
6:07
us both trace back for both failures. So we have actually quite a bit more to learn about pytest,
6:14
but we're going to use instead of like 123 and comparing tuples for the rest of the project and the rest of the course,
6:24
we're going to use the cards application for testing. So let's take a look at the cards application next. And if you had any difficulty with this,
6:34
trying to get these two tests, two or three tests to run. this would be a good time to try to figure out why because hopefully this
6:44
is pretty easy stuff. The if you're having difficulty, one of the problems might be that you're not in the right directory is the same
6:52
one or you might not be in the right environment. Virtual environment. You also, if you installed pytest,
6:59
make sure that pytest is installed and that it's part of your virtual environment. Um that's pretty much it also python version. so check the version.
7:12
I'm using 3.10.3 Pytest supports 3.7 and above. So hopefully you're using 3.7 or above.