#100DaysOfWeb in Python Transcripts
Chapter: Day 49: Selenium
Lecture: Test #3: testing the login, using the debugger with pytest
Login or
purchase this course
to watch this video and the rest of the course contents.
0:01
Alright next we're going to test the log in to the site. We're going to click the log in button in the header
0:10
log in with the user we set in our virtual environment assert that the log in link changed to log out and check the additional private links
0:20
that should appear in the navigation bar at the top. So going back to my terminal to the code. First of all, we are using another feature
0:29
which is driver_login and we actually already wrote the code to log in so when we get to the homepage we're going to find a link that's called log in.
0:41
And to show you that, if I do inspect and here we didn't actually have a class name or CSS id attribute, so we're going to look for
0:55
the link text, which should be log in so that's why we did find_element_by_link_text of login so we're going to click that, the test will be doing this
1:08
and then I'm going to target the username and password fields, which are conveniently named username and password.
1:20
And going to enter data, which we saw before can be done with the send_keys method and we're going to give it the username and password.
1:29
And importantly, after filling in the password we want to hit return. The way to do that is to append Keys.RETURN to the input.
1:39
Alternatively you could also target the log in button and hit click, but a form can also be committed by just hitting enter.
1:47
And again username and password are loaded in from my environment as shown in a previous video so once we get into this test function as well as
1:56
the next ones, the log in should already be done. And let me actually show you that in action and one trick I want to show you is to put a break point
2:04
in there, which is new in 3.7, on 3.6 or before you would actually have to write import pdb; pdb.set_trace but I'm on 3.7, so I can use
2:16
the new shorter syntax and this will pause the execution and I want to do that to show the view after logging in
2:26
because what we're going to test in this function is the presence of the private links. So let me run this test.
2:42
It should login, and then it should hang there because I put a breakpoint in there. Great, so here I'm at my pdb prompt
2:53
and this is actually pretty convenient to poke around at the code as well. Not only is this good to see the state
3:00
of my headless browser, it's also nice to inspect the driver at this point. For example, I can just write my code here
3:10
and later paste it into the test. For example, I should have an element now called logout, and that's true. I should not have a login anymore
3:28
and that indeed raises a NoSuchElementException. Another link I should have is, let's see, my books
3:41
and that's true, so I can now just copy this information and use it in my test.
3:58
So we can assert that there is a logout link but let's do it like I did before to try this. And if there's a NoSuchElementException
4:14
I'm going to say, pytest fail missing private links in nav bar so it should not get to here when logged in otherwise the test will fail.
4:33
On the other hand, the login link should not be there anymore so this code should actually hit and if it's not, I will fall through
4:50
to another pytest fail saying should not have a login link when logged in, so again, I should not hit this
5:05
because this should already raise an exception. Now just to complete this, let's add my books and the five hour challenge, that's another nav bar item
5:22
that's only visible when I'm logged in. So when I'm logged in, which is the case here because I'm using the driver login fixture
5:30
this should all work, and when I get here it's definitely not good. On the other hand, the login link should be gone
5:38
so I will hit this, which is fine, pass. If this actually does not raise an exception this test should fail.
5:50
And that's our test for the login transition and the linking in the nav bar, let's run it again.
6:10
Awesome, and in the next video we're going to add and delete a book and see how that updates the counts on my books page.