What is the main benefit of reading test data from a JSON file in Selenium tests?
It separates test data from test scripts, making tests easier to maintain and reuse with different data sets.
Click to reveal answer
beginner
How do you load JSON data in Python for Selenium tests?
Use Python's built-in json module with json.load() to read JSON data from a file.
Click to reveal answer
beginner
Which Python statement correctly opens a JSON file named data.json for reading?
<pre>import json
with open('data.json', 'r') as file:
data = json.load(file)</pre>
Click to reveal answer
intermediate
Why is it better to use JSON files for test data instead of hardcoding data in Selenium scripts?
Because JSON files allow easy updates without changing code, support multiple data sets, and improve test clarity.
Click to reveal answer
beginner
What is a common structure of JSON test data for a login test?
A list or dictionary with keys like username and password for each test case.
Click to reveal answer
Which Python module is used to read JSON files for test data?
Aos
Bcsv
Cjson
Dsys
✗ Incorrect
The json module is designed to parse JSON data in Python.
What is the correct way to open a JSON file named testdata.json for reading?
Aopen('testdata.json', 'x')
Bopen('testdata.json', 'w')
Copen('testdata.json', 'a')
Dopen('testdata.json', 'r')
✗ Incorrect
Use mode 'r' to open a file for reading.
Why should test data be stored outside Selenium test scripts?
ATo make tests slower
BTo separate data from code for easier maintenance
CTo avoid using JSON files
DTo make tests harder to read
✗ Incorrect
Separating data from code improves maintainability and reusability.
Which of these is a valid JSON data type for test data?
ADictionary (object)
BFunction
CClass
DModule
✗ Incorrect
JSON supports objects (dictionaries), arrays, strings, numbers, booleans, and null.
What does json.load(file) do in Python?
AReads JSON data from a file and converts it to Python objects
BDeletes a JSON file
CWrites JSON data to a file
DConverts Python objects to JSON string
✗ Incorrect
json.load() reads JSON from a file and parses it into Python data types.
Explain how to read test data from a JSON file in a Selenium Python test.
Think about file handling and JSON parsing in Python.
You got /4 concepts.
Describe the advantages of using JSON files for test data in automated testing.
Consider maintainability and flexibility.
You got /4 concepts.
Practice
(1/5)
1. What is the main benefit of reading test data from a JSON file in Selenium Python tests?
easy
A. It encrypts test data for security.
B. It makes tests run faster by avoiding web interactions.
C. It automatically generates test cases without writing code.
D. It keeps test code clean and makes data easy to update without changing code.
Solution
Step 1: Understand test data separation
Reading test data from JSON separates data from test logic, making code cleaner.
Step 2: Recognize flexibility advantage
Updating test data in JSON does not require changing test scripts, improving flexibility.
Final Answer:
It keeps test code clean and makes data easy to update without changing code. -> Option D
Quick Check:
Data separation = Clean code + Easy updates [OK]
Hint: Separate data from code for easy updates [OK]
Common Mistakes:
Thinking JSON speeds up test execution
Believing JSON auto-generates tests
Confusing data storage with encryption
2. Which Python code snippet correctly reads a JSON file named data.json into a variable test_data?
easy
A. import json
test_data = json.load(open('data.json'))
B. test_data = open('data.json').read()
C. import json
test_data = json.loads('data.json')
D. test_data = json.read('data.json')
Solution
Step 1: Identify correct json module usage
The json.load() function reads JSON from a file object, so open() must be passed to json.load().
Step 2: Check syntax correctness
import json
test_data = json.load(open('data.json')) correctly imports json and uses json.load(open('data.json')) to read the file.
Final Answer:
import json\ntest_data = json.load(open('data.json')) -> Option A
Quick Check:
json.load + open(file) = correct JSON read [OK]
Hint: Use json.load() with open() for files [OK]
Common Mistakes:
Using json.loads() on filename string
Forgetting to import json module
Calling non-existent json.read() function
3. Given the JSON file user.json with content:
{"username": "testuser", "password": "pass123"}
and the code:
import json
with open('user.json') as f:
data = json.load(f)
print(data['username'])
What will be the output?
medium
A. {'username': 'testuser', 'password': 'pass123'}
B. pass123
C. testuser
D. KeyError
Solution
Step 1: Load JSON data into dictionary
The json.load(f) reads the JSON file and converts it into a Python dictionary with keys 'username' and 'password'.
Step 2: Access dictionary value by key
data['username'] accesses the value 'testuser' from the dictionary.
Final Answer:
testuser -> Option C
Quick Check:
data['username'] = 'testuser' [OK]
Hint: Access JSON keys like dictionary keys [OK]
Common Mistakes:
Printing the whole dictionary instead of key value
Using wrong key causing KeyError
Confusing json.load() with json.loads()
4. What is wrong with this code snippet that reads JSON test data?
import json
file = open('data.json')
data = json.load(file)
file.close()
print(data['email'])
Assuming data.json does not contain the key email.
medium
A. The code will raise a KeyError because 'email' key is missing.
B. The print statement syntax is incorrect.
C. The file is not closed properly.
D. json.load() cannot read from open file objects.
Solution
Step 1: Understand json.load() behavior
json.load() correctly reads JSON from an open file object, so no error here.
Step 2: Identify missing key issue
Accessing data['email'] when 'email' key is missing causes a KeyError at runtime.
Final Answer:
The code will raise a KeyError because 'email' key is missing. -> Option A
Quick Check:
Missing key access = KeyError [OK]
Hint: Check keys exist before accessing JSON data [OK]
Common Mistakes:
Thinking json.load() fails on open files
Ignoring possible missing keys in JSON
Assuming file.close() is missing or wrong
5. You want to use JSON test data to fill a login form in Selenium Python. The JSON file login.json contains:
{"username": "user1", "password": "pass1"}
Which code snippet correctly reads the JSON and uses Selenium to fill the form fields with ids user and pass?
hard
A. import json
with open('login.json') as f:
data = json.load(f)
driver.find_element_by_name('user').send_keys(data['username'])
driver.find_element_by_name('pass').send_keys(data['password'])
B. import json
with open('login.json') as f:
data = json.load(f)
driver.find_element('id', 'user').send_keys(data['username'])
driver.find_element('id', 'pass').send_keys(data['password'])
C. import json
with open('login.json') as f:
data = json.loads(f)
driver.find_element_by_id('user').send_keys(data['username'])
driver.find_element_by_id('pass').send_keys(data['password'])
D. import json
with open('login.json') as f:
data = json.load(f)
driver.find_element('name', 'user').send_keys(data['username'])
driver.find_element('name', 'pass').send_keys(data['password'])
Solution
Step 1: Correctly read JSON file
json.load(f) reads JSON from file object correctly; json.loads() expects a string, so import json
with open('login.json') as f:
data = json.loads(f)
driver.find_element_by_id('user').send_keys(data['username'])
driver.find_element_by_id('pass').send_keys(data['password']) is wrong.
Step 2: Use correct Selenium locator method
driver.find_element('id', 'user') is the modern syntax to find element by id; find_element_by_id() is deprecated.
Step 3: Match locators with element ids
The form fields have ids 'user' and 'pass', so locating by id is correct, not by name.
Final Answer:
import json
with open('login.json') as f:
data = json.load(f)
driver.find_element('id', 'user').send_keys(data['username'])
driver.find_element('id', 'pass').send_keys(data['password']) -> Option B