Bird
Raised Fist0
Selenium Pythontesting~20 mins

Reading test data from CSV in Selenium Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
CSV Test Data Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of reading CSV test data with Python csv.reader
What will be the output of this code snippet that reads a CSV file and prints each row as a list?
Selenium Python
import csv
with open('testdata.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)
AError: FileNotFoundError
Busername,password\nuser1,pass1\nuser2,pass2
C['username,password', 'user1,pass1', 'user2,pass2']
D[['username', 'password'], ['user1', 'pass1'], ['user2', 'pass2']]
Attempts:
2 left
💡 Hint
csv.reader returns each row as a list of strings.
❓ assertion
intermediate
1:30remaining
Correct assertion for CSV test data length
Given a list 'data' read from a CSV file with 3 rows including header, which assertion correctly checks the number of data rows excluding the header?
Selenium Python
data = [['username', 'password'], ['user1', 'pass1'], ['user2', 'pass2']]
Aassert len(data) == 2
Bassert len(data[1:]) == 3
Cassert len(data) - 1 == 2
Dassert len(data[1:]) == 1
Attempts:
2 left
💡 Hint
Remember to exclude the header row when counting data rows.
❓ locator
advanced
1:30remaining
Best locator to find username input for CSV-driven test
In a Selenium test reading usernames from CSV, which locator is best to find the username input field for entering data?
Adriver.find_element(By.ID, 'username')
Bdriver.find_element(By.XPATH, '//input[@name="user"]')
Cdriver.find_element(By.CLASS_NAME, 'input-field')
Ddriver.find_element(By.CSS_SELECTOR, 'input[type="text"]')
Attempts:
2 left
💡 Hint
ID locators are unique and fast.
🔧 Debug
advanced
2:00remaining
Identify error reading CSV with DictReader
What error will this code raise when reading a CSV file missing the header row?
Selenium Python
import csv
with open('testdata_noheader.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        print(row['username'])
AAttributeError: 'NoneType' object has no attribute 'get'
BKeyError: 'username'
CNo error, prints usernames
DFileNotFoundError
Attempts:
2 left
💡 Hint
DictReader uses the first row as keys by default.
❓ framework
expert
3:00remaining
Best practice for integrating CSV test data in Selenium Python tests
Which approach best integrates CSV test data into Selenium tests for multiple login scenarios?
ARead CSV in test setup, use pytest parametrize to run test with each row
BHardcode test data in test function, ignore CSV
CRead CSV inside each test method without reuse
DManually copy CSV data into test assertions
Attempts:
2 left
💡 Hint
Use test frameworks features to run tests with multiple data sets.

Practice

(1/5)
1. What is the main advantage of reading test data from a CSV file in Selenium Python tests?
easy
A. It allows running tests with multiple sets of data without changing the code.
B. It makes the test run faster by using CSV format.
C. It automatically fixes bugs in the test code.
D. It encrypts the test data for security.

Solution

  1. Step 1: Understand the purpose of external test data

    Using CSV files lets you separate test data from test code, making tests flexible.
  2. Step 2: Identify the benefit in test execution

    With CSV, you can run the same test multiple times with different inputs easily.
  3. Final Answer:

    It allows running tests with multiple sets of data without changing the code. -> Option A
  4. Quick Check:

    CSV externalizes data = flexible tests [OK]
Hint: CSV stores data separately for easy test reuse [OK]
Common Mistakes:
  • Thinking CSV speeds up test execution
  • Believing CSV fixes code bugs automatically
  • Assuming CSV encrypts data
2. Which Python code snippet correctly opens a CSV file named data.csv for reading test data?
easy
A. file = open('data.csv', 'w')
B. file = open('data.csv', 'r')
C. file = open('data.csv', 'a')
D. file = open('data.csv')

Solution

  1. Step 1: Identify the correct file mode for reading

    To read a file, use mode 'r' which stands for read-only.
  2. Step 2: Check the options

    file = open('data.csv', 'r') uses 'r' mode correctly; others use write ('w'), append ('a'), or default mode which may not be explicit.
  3. Final Answer:

    file = open('data.csv', 'r') -> Option B
  4. Quick Check:

    Read mode = 'r' [OK]
Hint: Use 'r' mode to open files for reading [OK]
Common Mistakes:
  • Using 'w' which overwrites the file
  • Using 'a' which appends instead of reading
  • Not specifying mode explicitly
3. Given the CSV file users.csv with content:
username,password
alice,pass123
bob,secure456

What will the output of this code be?
import csv
with open('users.csv', 'r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
medium
A. ('username', 'password') ('alice', 'pass123') ('bob', 'secure456')
B. username,password alice,pass123 bob,secure456
C. Error: csv.reader cannot read files
D. ['username', 'password'] ['alice', 'pass123'] ['bob', 'secure456']

Solution

  1. Step 1: Understand csv.reader output

    csv.reader reads each line as a list of strings split by commas.
  2. Step 2: Analyze the print output

    Each row prints as a list, so header and data rows print as lists of strings.
  3. Final Answer:

    ['username', 'password'] ['alice', 'pass123'] ['bob', 'secure456'] -> Option D
  4. Quick Check:

    csv.reader returns lists per row [OK]
Hint: csv.reader returns list of strings per row [OK]
Common Mistakes:
  • Expecting strings instead of lists
  • Confusing tuples with lists
  • Thinking csv.reader raises error on valid files
4. What is wrong with this code snippet that reads CSV data for Selenium tests?
import csv
file = open('testdata.csv')
reader = csv.reader(file)
for row in reader:
    print(row)
file.close()
medium
A. The file is not opened in read mode explicitly.
B. The file is not closed after reading.
C. Using open() without a context manager can cause resource leaks.
D. csv.reader cannot be used with open() function.

Solution

  1. Step 1: Check file handling best practices

    Using open() without 'with' can cause the file to remain open if errors occur.
  2. Step 2: Identify the issue in the code

    Though file.close() is called, if an error happens before, file may not close properly.
  3. Final Answer:

    Using open() without a context manager can cause resource leaks. -> Option C
  4. Quick Check:

    Use 'with' to auto-close files [OK]
Hint: Always use 'with' to open files safely [OK]
Common Mistakes:
  • Thinking file.close() always prevents leaks
  • Believing csv.reader can't work with open()
  • Ignoring explicit read mode is optional
5. You want to run a Selenium test multiple times using usernames and passwords stored in credentials.csv. Which code snippet correctly reads the CSV and uses the data in a test function?
hard
A. import csv with open('credentials.csv', 'r') as file: reader = csv.DictReader(file) for row in reader: username = row['username'] password = row['password'] test_login(username, password)
B. import csv file = open('credentials.csv', 'r') reader = csv.reader(file) for row in reader: test_login(row[0], row[1]) file.close()
C. import csv with open('credentials.csv') as file: reader = csv.reader(file) for row in reader: test_login(row['username'], row['password'])
D. import csv with open('credentials.csv', 'r') as file: reader = csv.reader(file) for row in reader: test_login(row[0], row[1])

Solution

  1. Step 1: Choose correct CSV reading method for named columns

    csv.DictReader reads CSV rows as dictionaries with column names as keys.
  2. Step 2: Use dictionary keys to access username and password

    Accessing row['username'] and row['password'] matches CSV headers and passes correct data.
  3. Final Answer:

    Using csv.DictReader and accessing row['username'] and row['password'] correctly. -> Option A
  4. Quick Check:

    DictReader + keys = clean data access [OK]
Hint: Use csv.DictReader for named column access [OK]
Common Mistakes:
  • Using csv.reader but accessing row by keys
  • Not closing files without 'with' block
  • Forgetting to specify read mode explicitly
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