import allure
import pytest
from webAutoTest.actions.addAddress_actions import AddAddressActions
from webAutoTest.common.file_load import get_excel
from webAutoTest.common.logger import logger
@allure.feature("收货地址测试点")
class TestAddAddress:
data = get_excel()
# data = [['收货人为空', '', 15715151010, True, '金山行政村', '金山'],
# ['联系方式为空', 'lee01', '', True, '金山行政村', '金山'],
# ['不选择收货地区', 'lee02', 15715151012, False, '金山行政村', '金山'],
# ['详细地址为空', 'lee03', 15715151013, True, '', '金山'],
# ['正常添加收件地址', 'lee04', 15715151014, True, '金山行政村', '金山'],
# ['别名为空', 'lee05', 15715151015, True, '金山行政村', ''],
# ['手机号格式不对', 'lee06', 'abc', True, '金山行政村', '金山2']]
@allure.title('添加收货地址 - {case_name}')
@allure.story("添加收货地址测试点")
@pytest.mark.parametrize("case_name, deliName, telNum, region_flag, detailAddress, addressNick", data)
def test_addAddress(self, case_name, deliName, telNum, region_flag, detailAddress, addressNick):
# 登录: 维护成fixture
AddAddressActions().addAddress(deliName, telNum, region_flag, detailAddress, addressNick)
【conftest.py】
@pytest.fixture(scope='session', autouse=True)
def init_driver():
# 前置:登录
GlobalDriver.driver = InitDriver()
GlobalDriver.driver.get_url("https://www.iloyou.com:3000")
LoginActions().login("leeseller", "123456", 1512)
yield
# 会话结束后,关闭浏览器
# GlobalDriver.driver.quit()
@pytest.fixture(scope='function', autouse=True)
def case_teardown():
"""
"""
yield
GlobalDriver.driver.get_url("https://www.ilove.com:3000")
【pytest.ini】
[pytest]
addopts = -sv -n 2 --reruns 2 --alluredir ./reports/shop --clean-alluredir
testpaths = ./testcases
python_files = test_add*.py
python_classes = Test*
python_functions = test_*
log_format = %(asctime) s [%(filename) s:%(lineno)-4s] [%(levelname) 5s] %(message) s
log_date_format=%Y-%m-%d %H:%M:%S
【读取excel文件参数化数据】
def get_excel():
"""
:: DIR_NAME项目所在路径,常量
:: filepath: 相对路径(入参为项目下的路径,参照setting.py路径),如:./data/*.*
::keep_default_na: 读取文件会出现单元格 N/A,获取不到有效值;设置False获取空字符串
::engine: 指定引擎
用来处理excel数据,希望获取的数据格式 "[[],[],[],[],[],[]]"
"""
filepath = conf_parser_obj.configParser(["excel", "relative_path"]) # 参数配置ini文件
sheet_name = conf_parser_obj.configParser(["excel", "sheet_name"])
path = str(DIR_NAME) + str(filepath)
pandrxl = pandas.read_excel(path, sheet_name=sheet_name, keep_default_na=False, engine='openpyxl')
# print(pandrxl)
# 元组中获取总行和总列 (lines,columns)
lines = pandrxl.shape[0] # 总行数
cols = pandrxl.shape[1] # 总行数
# 数据解析不包含表头,所以数据是从第二行计算的
data = []
for l in range(lines): # 行
line_list = []
for c in range(cols): # 列
line_list.append(pandrxl.iloc[l, c]) # 获取单元格数据 pandrxl.iloc[1, 2]
data.append(line_list) # 全量数据装表
return data