Skip to content

Commit 78ffcd8

Browse files
add data driven tests
1 parent 3806937 commit 78ffcd8

6 files changed

+52
-1
lines changed

data/csv/data_driven.csv

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
test_case_id,text_to_use,expected_message
2+
0001,val1,Received!
3+
0002,val2,Received!
4+
0003,val3,Received!

pyproject.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ log_cli_level = "INFO"
2525
markers = [
2626
"selenium",
2727
"selenium_pom",
28-
"selenium_parallel"
28+
"selenium_parallel",
29+
"selenium_data_driven"
2930
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""Sample data driven test"""
2+
3+
import logging
4+
import pytest
5+
6+
from pom.web_form_page import WebFormPage
7+
from utils.reader import get_csv_data
8+
9+
LOGGER = logging.getLogger(__name__)
10+
11+
# run test and generate html report: pytest -m selenium_data_driven --html=results.html
12+
13+
@pytest.mark.selenium_data_driven
14+
@pytest.mark.parametrize("test_data", get_csv_data('data\csv\data_driven.csv'))
15+
def test_data_driven(test_data, browser):
16+
17+
LOGGER.info(f'test case id:[{test_data['test_case_id']}] write text to textarea and submit form')
18+
19+
web_form = WebFormPage(browser)
20+
message = web_form\
21+
.set_textarea(test_data['text_to_use'])\
22+
.submit_form()\
23+
.get_message()
24+
25+
LOGGER.info(f'check that actual message:[{message}] == [{test_data['expected_message']}]')
26+
assert message == test_data['expected_message']
27+
28+
29+
if __name__ == "__main__":
30+
pytest.main()

tests/test_selenium_web_form_parallel.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
LOGGER = logging.getLogger(__name__)
1111

12+
# run tests in parallel and generate html report: pytest -m selenium_parallel -n auto --html=report.html
13+
1214

1315
@pytest.mark.selenium_parallel
1416
def test_write_to_text_area_and_submit_parallel1(browser):

utils/__init__.py

Whitespace-only changes.

utils/reader.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""read files"""
2+
import csv
3+
4+
5+
def get_csv_data(file_path):
6+
"""
7+
read csv file to a list of dict
8+
"""
9+
data_list = []
10+
with open(file_path, newline="") as file:
11+
reader = csv.DictReader(file)
12+
for line in reader:
13+
data_list.append(line)
14+
return data_list

0 commit comments

Comments
 (0)