Bird
Raised Fist0
Testing Fundamentalstesting~15 mins

Test case writing in Testing Fundamentals - Build an Automation Script

Choose your learning style10 modes available
Verify login functionality with valid credentials
Preconditions (2)
Step 1: Enter 'user@example.com' in the email input field
Step 2: Enter 'Password123' in the password input field
Step 3: Click the 'Login' button
✅ Expected Result: User is redirected to the dashboard page and sees a welcome message
Automation Requirements - Selenium with Python
Assertions Needed:
Verify the current URL is the dashboard URL
Verify the welcome message is displayed on the dashboard
Best Practices:
Use explicit waits to wait for elements to be visible or clickable
Use meaningful locators like ID or name attributes
Organize code using Page Object Model for maintainability
Automated Solution
Testing Fundamentals
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.email_input = (By.ID, 'email')
        self.password_input = (By.ID, 'password')
        self.login_button = (By.ID, 'loginBtn')

    def enter_email(self, email):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.email_input)).send_keys(email)

    def enter_password(self, password):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.password_input)).send_keys(password)

    def click_login(self):
        WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable(self.login_button)).click()

class DashboardPage:
    def __init__(self, driver):
        self.driver = driver
        self.welcome_message = (By.ID, 'welcomeMsg')

    def is_welcome_message_displayed(self):
        return WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.welcome_message)).is_displayed()

class TestLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/login')

    def test_valid_login(self):
        login_page = LoginPage(self.driver)
        login_page.enter_email('user@example.com')
        login_page.enter_password('Password123')
        login_page.click_login()

        WebDriverWait(self.driver, 10).until(EC.url_contains('/dashboard'))
        self.assertIn('/dashboard', self.driver.current_url)

        dashboard_page = DashboardPage(self.driver)
        self.assertTrue(dashboard_page.is_welcome_message_displayed())

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

This test script uses Selenium with Python and unittest framework.

We define two page classes: LoginPage and DashboardPage to organize locators and actions, following the Page Object Model.

In test_valid_login, we enter the email and password, click login, then wait for the dashboard URL and check the welcome message is visible.

Explicit waits ensure elements are ready before interacting, avoiding flaky tests.

The setUp and tearDown methods open and close the browser cleanly for each test.

Common Mistakes - 3 Pitfalls
Using time.sleep() instead of explicit waits
Using brittle XPath locators that rely on full element paths
Not verifying the expected page or element after login
Bonus Challenge

Now add data-driven testing with 3 different sets of valid credentials

Show Hint

Practice

(1/5)
1. What is the main purpose of writing test cases in software testing?
easy
A. To write the program code
B. To describe step-by-step how to test a feature
C. To design the user interface
D. To create marketing materials

Solution

  1. Step 1: Understand the role of test cases

    Test cases provide clear instructions on how to test a specific feature or function.
  2. Step 2: Differentiate from other activities

    Writing code, designing UI, or marketing are not related to test case writing.
  3. Final Answer:

    To describe step-by-step how to test a feature -> Option B
  4. Quick Check:

    Test case purpose = step-by-step test guide [OK]
Hint: Test cases guide testing steps clearly [OK]
Common Mistakes:
  • Confusing test cases with coding tasks
  • Thinking test cases design UI
  • Mixing test cases with marketing
2. Which of the following is the correct format for a test case title?
easy
A. Test login with valid username and password
B. Check if login works
C. LoginTest123
D. TestCase1

Solution

  1. Step 1: Identify clear and descriptive titles

    A good test case title clearly describes what is being tested, like Test login with valid username and password.
  2. Step 2: Evaluate other options

    Options A, B, and C are vague or not descriptive enough for easy understanding.
  3. Final Answer:

    Test login with valid username and password -> Option A
  4. Quick Check:

    Clear descriptive title = Test login with valid username and password [OK]
Hint: Use clear, descriptive titles for test cases [OK]
Common Mistakes:
  • Using vague or generic titles
  • Using codes or numbers only
  • Not describing the test purpose
3. Given this test case step: Enter username 'user1' and password 'pass123', what is the expected result?
medium
A. Page reloads without change
B. Error message appears
C. User is logged in successfully
D. Username and password fields clear

Solution

  1. Step 1: Understand the test step

    The step inputs valid credentials, so the expected result is successful login.
  2. Step 2: Analyze other options

    Error message or no change would mean failure, which is not expected here.
  3. Final Answer:

    User is logged in successfully -> Option C
  4. Quick Check:

    Valid login inputs = successful login [OK]
Hint: Valid inputs usually lead to success expected result [OK]
Common Mistakes:
  • Assuming error message for valid inputs
  • Confusing page reload with success
  • Ignoring expected behavior for valid data
4. Identify the error in this test case step: Click the 'Submit' button without entering any data with expected result: Form submits successfully.
medium
A. Expected result should be an error message, not success
B. Step should include entering data before submit
C. Button name is incorrect
D. No error, test case is correct

Solution

  1. Step 1: Analyze the test step

    Clicking submit without data usually triggers validation errors, not success.
  2. Step 2: Check expected result correctness

    Expected result should be an error message indicating missing data.
  3. Final Answer:

    Expected result should be an error message, not success -> Option A
  4. Quick Check:

    Empty submit triggers error, not success [OK]
Hint: Empty form submit expects error, not success [OK]
Common Mistakes:
  • Expecting success without input
  • Ignoring validation rules
  • Assuming button name error
5. You need to write a test case for a password reset feature that requires entering an email and clicking 'Reset'. Which of these is the best test case title and expected result pair?
hard
A. Reset password; Expected: Password changes immediately
B. Check password reset button; Expected: Button is clickable
C. Password reset test; Expected: Page reloads
D. Test password reset with valid email; Expected: Reset link sent to email

Solution

  1. Step 1: Evaluate clarity of test case title

    Test password reset with valid email; Expected: Reset link sent to email clearly states the action and input (valid email) for password reset.
  2. Step 2: Check expected result relevance

    Test password reset with valid email; Expected: Reset link sent to email's expected result matches the feature behavior: sending reset link.
  3. Final Answer:

    Test password reset with valid email; Expected: Reset link sent to email -> Option D
  4. Quick Check:

    Clear title + correct expected result = Test password reset with valid email; Expected: Reset link sent to email [OK]
Hint: Match test title and expected result clearly [OK]
Common Mistakes:
  • Using vague titles
  • Wrong expected results
  • Ignoring feature behavior
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard