Создание тестовых методов (тестов)
Тестовые методы - это и как раз-таки сами тесты, это обычные методы с selenium-кодом внутри, но с test_ в их названии и лежат они внутри тестового класса (можно писать тесты и без использования классов, но это плохо, ужасно, неприемлемо, фу, зло).

Например, тест на открытие страницы логина:


from selenium import webdriver


class TestLogin: # Название тестового класса

    def test_open_login_page(self): # Название теста
        driver = webdriver.Chrome()
        driver.get("https://demoqa.com/login")
        assert driver.current_url == "https://demoqa.com/login", "Открыта некорректная страница"
test_login.py

Мы видим, что тут стандартный selenium-код внутри метода, но при запуске он будет восприниматься, как тест.

Но что, если вы занимаетесь автоматизацией API, к примеру? Давайте рассмотрим и такой пример, чтобы был более прикладной подход для лучшего восприятия информации:

import requests

class TestEvilinsult: # Название тестового класса

    def test_get_insult(self): # Название теста
        response = requests.get("https://evilinsult.com/generate_insult.php")
        assert response.status_code == 200, "Некорректный ответ от сервера"
Как вы можете видеть, все тоже самое и ничего сложного) Суть и логика одна и та же, и неважно что вы автоматизируете!

Пример теста на отправку формы:

from selenium import webdriver


class TestExample:

    USERNAME_FIELD = ("xpath", "//input[@id='userName']")
    EMAIL_FIELD = ("xpath", "//input[@id='userEmail']")
    CURRENT_ADDRESS_FIELD = ("xpath", "//textarea[@id='currentAddress']")
    SUBMIT_BUTTON = ("xpath", "//button[@id='submit']")
    OUTPUT_BLOCK = ("xpath", "//div[@id='output']")

    def test_fill_form_with_valid_data(self):
        driver = webdriver.Chrome()
        driver.get("https://demoqa.com/text-box")

        username = driver.find_element(*self.USERNAME_FIELD)
        username.send_keys("Aleksei")
        assert username.get_attribute("value") == "Aleksei"

        email = driver.find_element(*self.EMAIL_FIELD)
        email.send_keys("mani@ya.ru")
        assert email.get_attribute("value") == "mani@ya.ru"

        address = driver.find_element(*self.CURRENT_ADDRESS_FIELD)
        address.send_keys("Chapaeva 23")
        assert address.get_attribute("value") == "Chapaeva 23"

        driver.find_element(*self.SUBMIT_BUTTON).click()

        output = driver.find_element(*self.OUTPUT_BLOCK)
        assert output.is_displayed() is True
        assert ("Aleksei" and "mani@ya.ru" and "Chapaeva 23") in output.text