json数据
1、准备json数据:
{
"login_success": {
"enterprise": "ydhl",
"account":"ganfeimei",
"psd": "Ydhl123456",
"expect": "甘飞梅原点演示"
}
}
2、编写读取json数据的函数:在utils第三方工具文件中封装读取测试参数的方法
python
BaseDir=os.path.dirname(os.path.abspath(__file__))
def read_params_data(filename,method,param_names):
"""
:param filename: json数据文件名称
:param method: 测试用例名称
:param param_names: 用例中参数名称
:return:
"""
filename=BaseDir+"/data/"+filename
test_case_data = []
with open(filename,encoding="utf-8")as f:
file_data= json.load(f)
test_data=file_data.get(method)
#定义参数list
test_param=[]
for param in param_names.split(","): #以逗号分隔list
test_param.append(test_data.get(param)) #测试json文件中取参数的值后加大参数list中
test_case_data.append(tuple(test_param)) #参数值加到测试用例数中
return test_case_data
修改测试脚本
1、增加参数化:
- 方法一直接使用参数
@pytest.mark.parametrize("enterprise,account,psd,expect",[("ydhl","ganfeimei","Ydhl123456","甘飞梅原点演示")]) - 方法二:
case_data=read_params_data("login_data.json", "login_success", "enterprise,account,psd,expect"),脚本中`` - 方法二:通过函数获取参数:
@pytest.mark.parametrize(read_params_data("login_data.json","login_success","enterprise,account,psd,expect"))
python
import pytest
from page.page_home import HomeProxy
from page.page_login import LoginProxy
from page.page_digital import DigitalProxy
import logging
from utils import UtilsDriver,get_msg,read_params_data
from parameterized import parameterized
#方法二参数化
# case_data=read_params_data("login_data.json", "login_success", "enterprise,account,psd,expect")
# print(case_data)
#定义测试类,
class TestLogin:
#初始化。类级别的
def setup_class(self):
self.login_proxy=LoginProxy()
self.home_proxy=HomeProxy()
self.dig_proxy=DigitalProxy()
#结束销毁,类级别,统一销毁
def teardown_class(self):
UtilsDriver.quit_driver() #调用工具类中的关闭webdriver对象
#方法三:参数化使用函数
@pytest.mark.parametrize("enterprise,account,psd,expect",read_params_data("login_data.json", "login_success", "enterprise,account,psd,expect"))
# 方法二:参数化使用函数获取的参数
# @pytest.mark.parametrize("enterprise,account,psd,expect",case_data)
#方法一:参数化直接在列表元组中直接输入测试参数
# @pytest.mark.parametrize("enterprise,account,psd,expect",[("ydhl","ganfeimeiydys","Ydhl123","甘飞梅原点演示")])
def test01_login(self,enterprise,account,psd,expect):
# 调用登陆业务进入首页,参数有账号密码
self.login_proxy.go_home_page(enterprise,account,psd)
username = self.home_proxy.get_username_msg() #获取登陆者姓名
#断言
assert expect == username
logging.info("登陆者姓名:{}".format(username))
#日志记录测试用例数据
logging.info("测试用例数据:企业:{},账号:{},预期结果:{}".format(enterprise,account,expect))
2、增加日志,显示测试数据: #日志记录测试用例数据 logging.info("测试用例数据:企业:{},账号:{},预期结果:{}".format(enterprise,account,expect))
3、测试结果和报告:
