selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告

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、测试结果和报告:

相关推荐
AOI小白新手上路8 小时前
深度学习算力购置方案分析:本地 RTX 4090 服务器 vs 云端租赁
服务器·人工智能·深度学习
千桐科技9 小时前
qKnow智能体构建平台专业版 v3.1.5 发布:扩容工作流编排调用能力,上线Text2SQL插件,拓宽数据类智能应用构建边界
服务器·数据库·oracle·qknow
雪落漂泊9 小时前
Linux进程(四)概念:命令行参数和环境变量篇
linux·运维·服务器
NextTech_9 小时前
不想学 vim,怎么改服务器上的配置文件?
服务器·编辑器·vim
say_fall10 小时前
【Linux系统编程】Linux进程信号:从“外卖到了“到内核里的一张位图
linux·运维·服务器·车载系统·智能硬件
坤坤子吖10 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习
FungLeo11 小时前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈
爱和冰阔落11 小时前
【Linux网络】TCP 服务器怎么写?从 listen、accept 到 read/write,手写完整 Echo Server
linux·运维·服务器·网络
冯小鸟的探戈12 小时前
电脑重生之安装xp系统
运维·服务器·电脑
瑞克-桑切斯20 小时前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库