Python Selenium Tutorial #5 - UnitTest Framework (Part 1)

Tech With Tim · Beginner ·🧠 Large Language Models ·6y ago

Key Takeaways

The video demonstrates the use of Selenium with Python for browser automation and unit testing, utilizing the unittest framework to write scalable code for testing websites. It covers the creation of page objects, locators, and test cases, as well as the use of assertions and teardown methods.

Full Transcript

[Music] hello everybody and welcome to another selenium Python tutorial so what we're gonna be talking about this video is the unit test framework and how that works with selenium now we remember that selenium is really used the main purpose for testing websites and in fact if you're making a large website you're really gonna want to create these automated tests which I'm going to be showing you here so that rather than having to manually go to the website and you know fill in a form or type this here or press a button all you have to do is run a script that will tell you yes this website worked or no this website did not and that's extremely useful that will literally save you hours maybe even days of development time depending on how large the website is and learning a skill like unit test is useful just in Python in general because this is a built-in module you can use this for any application and its standard practice kind of in software engineering and in large development to be using automated tests or automated build you know you've heard of things like circles CI I and stuff like that to really make sure that what your code is functioning without having to manually go in there and test all the different functions especially when you have you know millions of lines of code or whatever it may be so another advantage to the way that I'm going to show you how to write selenium coding this video is that think about if we were testing a large website that if we kept writing code like this in a procedural manner where we're just kind of going like line by line down by down this we get very messy very fast and in fact you know if we had to test a hundred web pages well this would you know be a nightmare to have to scroll through and look for different things so the way I'm gonna show you here actually separates every component that we've kind of defined here into its own class and it makes it really easy to once we have this initial set up go ahead and test another page and it just you'll understand as we get through but the idea is that what I'm gonna do here is just walk through the code that they have on the selenium website so if you go to the selenium website this is the documentation this is in section 6 it's called page objects and this is the way that they recommend you write the selenium code so rather than me trying to come up with a better example I figured we'll just use theirs and the reason I'm gonna do this cuz some of you may be equal why don't I just go look at the documentation is because the documentation is very very and if you're a beginner especially if you're watching this far into the videos you probably you know would rather have me walk through and kind of explain these different aspects of the code they don't talk about so for example they come down here you understand what set means what get means what about lambda you know what is all of these things that we have here why are we importing this why are we inheriting from a base page I'm gonna walk through and explain how all of these different things work so not only do you understand selenium but you understand the Python syntax that goes into building something like this so I'll just be copying that but I will be you know slowing down making some other examples to really hopefully make you guys understand how that works all right so the first thing we need to do is make a new folder now I'm gonna call this test case you can call whatever you want and inside of this folder I'm going to put four Python files now it's not important that you have a new folder but you just need these files that I'm gonna make so we're gonna have main dot PI we're gonna have a new file called element dot PI we're gonna have a file called locator dot pi if I could find where was the new file thing oh it's all the way up here locator jumped PI what's another one that we wanted and then the last one we need if I can find out here is called page pine now already we're noticing how things might be going here right so we have four files in each of these files is gonna represent a different thing and we're gonna have different parts of the webpage that we're testing in each of them this is who's gonna make it way easier and more organized and you'll understand the benefit of this as we go on so the first thing we're gonna do is start coding out the main top - I'm not gonna code the entire thing but a majority of it we're gonna start by importing unit tests now unit test is built into Python you don't need to install this it's already there in the syntax I'm gonna show you this will apply to things that aren't selenium as well so this is useful just to learn unit tests if you want to do that so next thing we're gonna say from selenium import webdriver and then we're gonna actually import that page file because we'll use it later on so import page so notice pages of file I created here oops excellent close main will be loading some stuff from that now the next thing I want to do is create class in this class is going to stand for the main test case that I want to perform on this website now you could have multiple of these classes we're going to use one but this one is called is Python oops Python or search if I could type today which apparently is not happening Python org search test or not test sorry just search and then in here we're gonna inherit from unit test dot test case now whenever we want to make like a new separate thing to test like a completely different maybe page or not even pages a completely different function of the website we'd likely create a new test case but inside of here you're gonna see that we can test multiple aspects of the website from this case it's hard to really explain until you see the methods but I'll talk about when you would make a new one of these classes later on now why are we inherited from unit test test case well essentially this is gonna give us access to some methods there's some things that are gonna be inherited that we need to make this set up like a test case and you guys are gonna see that when we press a button what's actually gonna happen is this is gonna run all of the tests that we've defined and give us some nice output and say test one passed test two passed test three failed whatever it may be so let's go ahead and start writing some methods inside of here now the first method that we're usually gonna write inside of our test case is called setup now you can think of this is almost like an an it method but specific to test case so essentially whenever we call this test case the first thing that will run every single time is this setup so this is where you can put any variables you want to define any things you need to well setup before the test case gets started so the first thing we need is a driver so we're gonna say self dot driver equals webdriver doc chrome and then here we're gonna put the path to Chrome which I'm just gonna copy from here now it is worth noting that what we're gonna be doing here is actually testing the Python website so that website itself and making sure that the search function which obviously we know works works on the website so that's what this example is I guess it makes sense since again we aren't doing pipe up now the next I'm gonna do is say self dot not get self dot driver gets and then the website that we want to test we've seen this before and I'm just gonna copy it in from over here but it's HTTP colon slash slash wwp I thought work alright so now that we have that set up the next method we're gonna write is actually teardown so we write teardown and we put self in here what this is going to do is run after this test case finished so think of this is like cleaning up you know once everything's done do this so in here all we're gonna do is say self dot driver closed which will close that tab pretty straightforward you know this will run at the beginning this will run at the end everything in between and it doesn't obviously matter where like what order you define these methods and is gonna run in between them so why don't we want to make a method that tests something so it gives us an output of like pass/fail what we need to do is start this with the named test so since we inherited from unit test test case if we start a method name with the keyword test underscore you know am I saying underscore test in lower case then we can name it whatever we want so I can just say test example cuz I'm just gonna do an example here and this means this method will automatically be run when we run the unit test if I made another method though which I can do and I called not a test like that for example this method will not be run automatically because it doesn't start with the word test so that's important I'll actually show you Mike I'll prove to you this doesn't work so this won't print and then inside of here I'm just gonna say print test and then I'm actually going to assert true now assert essentially says assert like see if the condition on the right side is true and this is going to tell us whether the test case failed or whether it passed and each one of these little methods here will be their own tests that are gonna be run from within this main test case so they need to end or they need to have an assert inside of them to tell us whether this was true or whether this was false in whether this test case failed or passed right so essentially if the argument on the right side of assert is true the test case passed if it's false it failed so I'm actually gonna just show you how this works so far for the unit test we're gonna just do this if underscore underscore name underscore underscore equals underscore underscore main underscore underscore this just means if we run this module not if it's being imported then what we'll do is say Python or not actually sorry unit test dot me now what this says is run all of the unit tests that we've defined and since this inherit from unit tests we know that this is a unit test so this is gonna run so let's actually run this code let's see what we get obviously gonna open the Python website and then if we look at the output it says ran one test in 3.1 32 seconds okay so nuts notice this work that was fine and this is the nice output we're getting from the test case now if I decide to assert false like that and run this here we will have to wait for this to boot up but we can see test wait for the output assert false and notice that this did not work so ran one test in four point eight six two seconds failed failures equals one so that's the output we're getting and it even tells us where it failed so it failed at test example and you see it says test F because we failed so let's just make another one and notice is not a test method was not running because it didn't start with test so let's get rid of that let's make another test case and let's show you what happens when one passes in one fails so test example two like that say self I don't need to print anything I'll just assert true like that so let's run this and let's have a look okay so test F alright and ran two tests in five point six four six seconds and notice failures equals one so it says one failed it shows us where it failed a test example and that is kind of how that works now notice though that this set up and I'll actually I'll print inside of setup so we can show you ran twice so let's see this print so so setup boom we see that's in the console one time close and then it prints setup again so essentially this setup method will be called every time that the the test cases are run so for each test key setup is called once and teardown is called one so we'll boot this up run test case one and then teardown boot this up run test case two and then teardown so that's kind of the procedure that's pretty important to know actually because you have to make sure that you know you're gonna be starting fresh every single time for each one of these tests so that's how that works these are the test cases now I can't we can't really do any real test cases yet we need to set some other things up but that's the basis so hopefully you at least understand why this is useful because we can test different components and we can see which one's passed and which ones failed with some nice output and I mean this is all you really need to do to get that set up so now that we have that the next thing we're going to do is actually set up what's called a page object now each page on our website we want to actually define inside of a class so that we can access things really easily we can check if something is correct and this is where we're going to be writing a lot of more selenium code is actually inside of page so what I'm gonna do inside a page is just say class base page like that is equal to and within a Heron it's object now the inheritance object is optional I'm just including it because that's what they have on the selenium website but again you don't need that so then here we're gonna say define underscore underscore knit underscore underscore self and we're gonna say self dot driver like this equals driver and driver is gonna be an argument here as well so essentially when we set up a base page and base page is gonna stand for this will be the base class for all of our pages we will need to pass it a driver so the idea here is inside of this page file we're gonna define a class for each web page we're gonna test so say we have the home page and maybe like you know the search page or something like that then we would have two classes home page search page right and we would both inherit from base page because now we've defined this constructor which will be used for both of them and there was any methods that we wanted both of them to have access to when you put them inside of base page and then since we're inheriting from base page we would get access to that so that's the basis of inheritance hopefully you guys understand basic inheritance but the idea is do I do something like you know class main page and I inherit from base page this constructor method here will be used because what this says is use the methods from base page that's that's what this says so I don't need to now define in an it in here because automatically by default since I've inherited we'll be using this initialization so let's say class main page what I'm gonna do is actually create a method and I'm gonna say is underscore title underscore matches like that now in here we're gonna put self and what this method is gonna do is tell us if the title of the webpage matches what we want it to match so it's gonna say you know is this true is this false so we're gonna return if Python in self dot driver remember drivers that web driver that we've got from the initialization because we've inherited so we have access to driver in self dot driver dot yeah title I believe it is yeah so that's right so what this is gonna do is just tell us whether or not the string Python is in the title of the website or the webpage that this driver is currently on so that's the method we've defined here and we can define those kind of methods inside of these pages right and what we're actually gonna do if we go back to say main dot PI is if we're running a test and we'll say define you know test underscore title like that we do self what we'll say is all right so we have page imported here so we'll say you know main page equals page dot main page we'd initialize that and then we'd say assert main page like that dots is title matches so this will now tell us okay so let's go to the main page which is over here and it will return if Python isn't self dot driver dot title and then here we'll say okay well if that's true this test case you know passed if it was false this failed so that's the idea here for these kind of test cases so let's go back to page dot pi I just trying to show you you know sequentially how we're actually doing this so the next thing that's inside of here is the define click underscored go on the square button again I'm just following along with what they have in the documentation and we're gonna do in here is say element equals self dot driver dot find underscore element and then here we're gonna have to add something that I haven't yet defined and then we're gonna say element uh click so let me leave this blank for a second and here we're gonna put something and this is what brings me now to the next file which is locators I know this is a lot of but we kind of have to go between all the files and write them I can't write them you know one at a time okay so now we have this locators file so the idea behind this file is any CSS selector any ID any way that we locate an element we should keep in one centralized location so that if we ever need to it's very easy to change the ID or to change the CSS selector to change some attribute and we don't to change any other aspect of the code other than this file which will be quite small so what we'll actually do in here is safe from selenium dot webdriver dot common dot by import by so we should remember this import from earlier and what we're gonna do is create classes that represent objects that we want to find so for example class main page locator just like that this will inherit from object I'll talk about more exactly what this is in a second so in here from object and we'll say go underscore button notice is this in all capitals because this is gonna be constant by dot ID and the ID is submit okay so what I've done here is I've said let's make a class that defines all of the locators for the main page so for the main page right that's the home page or whatever page it might be and if there's any attribute it's easier I did oops accidentally if there's any attributes on that page we want to access what we should do is define how we want to access them and what their value is so if we want to access the Go button on the Python website and I'll actually I'll bring up the Python website and show you here let's go python org let's you know see so the go button i guess is this so let's inspect notice that this has the ID submit so since we want to access that what we do is we say let's make a main page locators class this will have all of the locators for the stuff on the main page we'll define as a constant what you know the actual element is so go button that's what we're naming it and then we access that by the ID with the value submit so that's what we do with this tuple and that's just it makes it really organized and clean an easy way to find all of our locators so the next thing we're going to do is say class search Saltz page locators I know this is a bit of a mess here locators is that correct I think so and this one here from object again object is not necessary but I'll just include it and if you will just put pass so they've done pass here I don't know why all search result locators should come here okay so we'll talk about this in a second month search results page locators so the idea I think behind this is that this will actually get filled later on like we'll add stuff into this class at least that's what it's saying in the documentation a class for search result locators all search result locators should come here okay so maybe there's putting that there's a template what we'll see if we actually end up using that later on but the idea is let's say we had another page for the search results well we will put the locators for whatever it is we wanted to find inside here and again remember if you don't want to find bout ID you can find by XPath CSS selector class name name all of that fun stuff and this will just be equal to whatever that value is that you want to find okay so locator is good

Original Description

In this python selenium tutorial I cover the python unittest framework and how to write scaleable code to test your websites. Unit testing is useful because it allows you to run one module and see the output of multiple test cases, which ones passed and which ones failed. Selenium Documentation: https://selenium-python.readthedocs.io/ Playlist: https://www.youtube.com/watch?v=Xjv1sY630Uc&list=PLzMcBGfZo4-n40rB1XaJ0ak1bemvlqumQ Subscribe to my second YouTube channel for weekly podcasts: https://www.youtube.com/channel/UCSATlCAUi7R0Ik-wsZb2gOA ◾◾◾◾◾ 💻 Enroll in The Fundamentals of Programming w/ Python https://tech-with-tim.teachable.com/p/the-fundamentals-of-programming-with-python 📸 Instagram: https://www.instagram.com/tech_with_tim 🌎 Website https://techwithtim.net 📱 Twitter: https://twitter.com/TechWithTimm ⭐ Discord: https://discord.gg/pr2k55t 📝 LinkedIn: https://www.linkedin.com/in/tim-ruscica-82631b179/ 📂 GitHub: https://github.com/techwithtim 🔊 Podcast: https://anchor.fm/tech-with-tim 💵 One-Time Donations: https://www.paypal.com/donate/?token=m_JfrPK7DsK4PLk0CxNnv4VPutjqSldorAmgQIQnMozUwwQw93vdul-yhU06IwAuig15uG&country.x=CA&locale.x= 💰 Patreon: https://www.patreon.com/techwithtim ◾◾◾◾◾◾ ⚡ Please leave a LIKE and SUBSCRIBE for more content! ⚡ ⭐ Tags ⭐ - Tech With Tim - Python Tutorials - Selenium Python - Python Selenium - Selenium Unittest - Unittest Selenium ⭐ Hashtags ⭐ #python #selenium
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Tech With Tim · Tech With Tim · 0 of 60

← Previous Next →
1 A* Path Finding Algorithm(Visualization)
A* Path Finding Algorithm(Visualization)
Tech With Tim
2 Python Programming Tutorial #1 - Variables and Data Types
Python Programming Tutorial #1 - Variables and Data Types
Tech With Tim
3 Python Programming Tutorial #2 - Basic Operators and Input
Python Programming Tutorial #2 - Basic Operators and Input
Tech With Tim
4 Python Programming Tutorial #3 - Conditions
Python Programming Tutorial #3 - Conditions
Tech With Tim
5 Python Programming Tutorial #4 - IF/ELIF/ELSE
Python Programming Tutorial #4 - IF/ELIF/ELSE
Tech With Tim
6 Python Programming Tutorial #5 - Chained Conditionals and Nested Statements
Python Programming Tutorial #5 - Chained Conditionals and Nested Statements
Tech With Tim
7 Python Programming Tutorial #6 - For Loops
Python Programming Tutorial #6 - For Loops
Tech With Tim
8 Python Programming Tutorial #7 - While Loops
Python Programming Tutorial #7 - While Loops
Tech With Tim
9 Python Programming Tutorial #8 - Lists and Tuples
Python Programming Tutorial #8 - Lists and Tuples
Tech With Tim
10 Python Programming Tutorial #9 - Iteration by Item (For Loops Continued...)
Python Programming Tutorial #9 - Iteration by Item (For Loops Continued...)
Tech With Tim
11 Python Programming Tutorial #10 - String Methods
Python Programming Tutorial #10 - String Methods
Tech With Tim
12 How to Overclock a NVIDIA GPU
How to Overclock a NVIDIA GPU
Tech With Tim
13 Python Programming Tutorial #11 - Slice Operator
Python Programming Tutorial #11 - Slice Operator
Tech With Tim
14 Python Programming Tutorial #12 - Functions
Python Programming Tutorial #12 - Functions
Tech With Tim
15 Python Programming Tutorial #13 - How to Read a Text File
Python Programming Tutorial #13 - How to Read a Text File
Tech With Tim
16 Python Programming Tutorial #14 - Writing to a Text File
Python Programming Tutorial #14 - Writing to a Text File
Tech With Tim
17 Python Programming Tutorial #15 - Using .count() and .find()
Python Programming Tutorial #15 - Using .count() and .find()
Tech With Tim
18 Python Programming Tutorial #16 - Introduction to Modular Programming
Python Programming Tutorial #16 - Introduction to Modular Programming
Tech With Tim
19 Python Programming Tutorial #17 - Optional Parameters
Python Programming Tutorial #17 - Optional Parameters
Tech With Tim
20 Python Programming Tutorial #18 - Try and Except (Python Error Handling)
Python Programming Tutorial #18 - Try and Except (Python Error Handling)
Tech With Tim
21 Python Programming Tutorial #19 - Global vs Local Variables
Python Programming Tutorial #19 - Global vs Local Variables
Tech With Tim
22 Python Programming Tutorial #20 - Classes and Objects
Python Programming Tutorial #20 - Classes and Objects
Tech With Tim
23 Cool VBS Script to Prank Your Friends!
Cool VBS Script to Prank Your Friends!
Tech With Tim
24 How to Overclock an AMD GPU
How to Overclock an AMD GPU
Tech With Tim
25 Best GPU'S For Mining Ethereum (2018)
Best GPU'S For Mining Ethereum (2018)
Tech With Tim
26 Recursion and Memoization Tutorial Python
Recursion and Memoization Tutorial Python
Tech With Tim
27 Ethereum Mining Rig - Hardware Guide
Ethereum Mining Rig - Hardware Guide
Tech With Tim
28 Pygame Tutorial #1 - Basic Movement and Key Presses
Pygame Tutorial #1 - Basic Movement and Key Presses
Tech With Tim
29 How to Install Pygame (Windows 8/10)
How to Install Pygame (Windows 8/10)
Tech With Tim
30 How to Trade Your Cryptocurrency (Bitcoin, Ethereum etc.) For Cash!
How to Trade Your Cryptocurrency (Bitcoin, Ethereum etc.) For Cash!
Tech With Tim
31 How to Mine Ethereum 2018 - WORKING (Super-Easy)
How to Mine Ethereum 2018 - WORKING (Super-Easy)
Tech With Tim
32 Microphone Comparison - $10 Mic vs $150 Mic (Blue Yeti USB)
Microphone Comparison - $10 Mic vs $150 Mic (Blue Yeti USB)
Tech With Tim
33 Pygame Tutorial #2 - Jumping and Boundaries
Pygame Tutorial #2 - Jumping and Boundaries
Tech With Tim
34 Pygame Tutorial #3 - Character Animation & Sprites
Pygame Tutorial #3 - Character Animation & Sprites
Tech With Tim
35 Pygame Tutorial #4 - Optimization & OOP
Pygame Tutorial #4 - Optimization & OOP
Tech With Tim
36 OBS Studio Tutorial - Best OBS Settings
OBS Studio Tutorial - Best OBS Settings
Tech With Tim
37 Linear Search Algorithm - Python Example and Code
Linear Search Algorithm - Python Example and Code
Tech With Tim
38 Make Any Mic Sound AMAZING! (WITH OBS)
Make Any Mic Sound AMAZING! (WITH OBS)
Tech With Tim
39 Binary Search Algorithm - Python Example & Code
Binary Search Algorithm - Python Example & Code
Tech With Tim
40 Pygame Tutorial #5 - Projectiles
Pygame Tutorial #5 - Projectiles
Tech With Tim
41 Pygame Game - Mini Golf
Pygame Game - Mini Golf
Tech With Tim
42 Pygame Tutorial - Projectile Motion (Part 1)
Pygame Tutorial - Projectile Motion (Part 1)
Tech With Tim
43 Pygame Tutorial - Projectile Motion (Part 2)
Pygame Tutorial - Projectile Motion (Part 2)
Tech With Tim
44 Pygame Tutorial #6 - Enemies
Pygame Tutorial #6 - Enemies
Tech With Tim
45 Pygame Tutorial #7 - Collision and Hit Boxes
Pygame Tutorial #7 - Collision and Hit Boxes
Tech With Tim
46 Pygame Tutorial #8 - Scoring and Health Bars
Pygame Tutorial #8 - Scoring and Health Bars
Tech With Tim
47 Cloud Mining vs. Hardware Mining - 2018
Cloud Mining vs. Hardware Mining - 2018
Tech With Tim
48 How to Install Pygame on Mac OSX (Fast-Simple)
How to Install Pygame on Mac OSX (Fast-Simple)
Tech With Tim
49 Pygame Tutorial #9 - Sound Effects, Music & More Collision
Pygame Tutorial #9 - Sound Effects, Music & More Collision
Tech With Tim
50 Pygame Tutorial #10 - Finishing Touches & Next Steps
Pygame Tutorial #10 - Finishing Touches & Next Steps
Tech With Tim
51 How to Fade Your Screen in Pygame [CODE IN DESCRIPTION]
How to Fade Your Screen in Pygame [CODE IN DESCRIPTION]
Tech With Tim
52 How to Create a Button in Pygame [CODE IN DESCRIPTION]
How to Create a Button in Pygame [CODE IN DESCRIPTION]
Tech With Tim
53 Pygame Side-Scroller Tutorial #1 - Scrolling Background/Character Movement
Pygame Side-Scroller Tutorial #1 - Scrolling Background/Character Movement
Tech With Tim
54 Pygame Side-Scroller Tutorial #2 - Random Object Generation
Pygame Side-Scroller Tutorial #2 - Random Object Generation
Tech With Tim
55 Pygame Side-Scroller Tutorial #3 - Collision
Pygame Side-Scroller Tutorial #3 - Collision
Tech With Tim
56 Pygame Side-Scroller Tutorial #4 - Scoring and End Screen
Pygame Side-Scroller Tutorial #4 - Scoring and End Screen
Tech With Tim
57 How to Create A Message Box in Python - Tkinter
How to Create A Message Box in Python - Tkinter
Tech With Tim
58 Is Ethereum Mining Still Profitable - Is It Worth It (April 2018)
Is Ethereum Mining Still Profitable - Is It Worth It (April 2018)
Tech With Tim
59 How to Run MAC OSX on a WINDOWS PC (Clover Boot-loader)
How to Run MAC OSX on a WINDOWS PC (Clover Boot-loader)
Tech With Tim
60 Programming Problem #1 - Alphabet Soup (Beginner/Novice)
Programming Problem #1 - Alphabet Soup (Beginner/Novice)
Tech With Tim

This video teaches how to use Selenium with Python for browser automation and unit testing, covering the creation of page objects, locators, and test cases. It provides a comprehensive introduction to the unittest framework and its applications in software engineering.

Key Takeaways
  1. Create a new folder and four Python files: main.py, element.py, locator.py, page.py
  2. Import unit tests and webdriver
  3. Create a class inheriting from unittest.TestCase
  4. Define a setup method to initialize the driver and website URL
  5. Define a teardown method to clean up after each test case
  6. Write test cases using the unittest framework
  7. Use assertions to check conditions
  8. Create a page object and locators
💡 The unittest framework provides a structured way to write and run tests, making it easier to ensure the quality and reliability of software applications.

Related AI Lessons

Embeddings Simplified
Learn the basics of embeddings and how they simplify complex data, a crucial concept in AI and ML
Medium · RAG
I built a tool that cuts Claude/ChatGPT token usage by 97% — here's how it works
Learn how to build a tool that reduces Claude/ChatGPT token usage by 97%, increasing productivity and efficiency in debugging and development
Dev.to · Rohith Matam
Serverless AI in a Browser Tab: Java WebAssembly + Local WebGPU LLMs
Learn to build a serverless AI model in a browser tab using Java WebAssembly and Local WebGPU LLMs for a zero-infrastructure RAG architecture
Dev.to · vishalmysore
Building LSTMs with PyTorch and Lightning AI Part 7: Resuming Training with Checkpoints
Learn to resume LSTM training with checkpoints using PyTorch and Lightning AI, enabling efficient model iteration and development
Dev.to · Rijul Rajesh
Up next
5 Levels of AI Agents - From Simple LLM Calls to Multi-Agent Systems
Dave Ebbelaar (LLM Eng)
Watch →