最全整理,web自动化测试框架总结-实战案例,从0精通封装...

news2024/11/22 5:20:27

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

web自动化测试框架

1、设计思路
使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,提高用例的可维护性;

使用yaml管理页面空间元素和测试用例数据。例如一个页面元素发生变化时,不需要去修改代码,只需要在对应的页面元素yaml文件中修改即可。

以每个页面作为模块管理,随时组装,互不影响。

2、测试框架分层

E1

框架层:基础组件封装,支撑整个框架的流程执行及功能扩展;
用例层:根据用例场景构造test测试方法;
业务层:封装页面对象类,一个页面建立一个类,业务层基础基础层page类;
基础层:二次开发selenium的元素定位已经操作;

3、编写用例方法
例子:百度搜索测试场景

①需要新增百度搜索测试场景用例:
在testyaml目录下新增一个页面对象yaml文件,利用封装的yamlload方法将yaml文件中的dom元素读取出来,提供给封装页面对象类调用并定元素操作。

testinfo:
      - id: test_login001
        title: 登录百度网页测试
        info: 打开百度首页
testcase:
      - element_info: s-usersetting-top
        find_type: ID
        operate_type: click
        info: 打开登录对话框
      - element_info: userName
        find_type: ID
        operate_type: send_keys
        info: 输入用户名称
      - element_info: TANGRAM__PSP_11__password
        find_type: ID
        operate_type: send_keys
        info: 输入密码
      - element_info: TANGRAM__PSP_11__submit
        find_type: ID
        operate_type: click
        info: 单击登录按钮
 
check:
      - element_info: //*[@id="user"]/span[2]
        find_type: XPATH
        info: 检查用户是否登录

②在testdata目录下新增一个yaml文件提供给用例测试数据

-
  id: test_login001.1
  detail : 验证登录成功
  screenshot : phone_pawd_empty
  data:
    username: 13501198450
    password: Han520520
  check :
     - hhil833

③在page_obj目录编写百度搜索场景的页面对象类封装

testData = getyaml(setting.TEST_Element_YAML + '/' + 'baidu_login.yaml')
class baidu_login(Page):
 
    def  open_login(self,username,pwd):
        """
 
              :return:
              """
        dig_login_button_loc = (By.ID, testData.get_elementinfo(0))
        self.find_element(*dig_login_button_loc).click()
        sleep(1)
    def go_login(self,username,pwd):
        self.find_element(By.ID, testData.get_elementinfo(1)).send_keys(username)
        sleep(1)
        self.find_element(By.ID, testData.get_elementinfo(2)).send_keys(pwd)
        sleep(1)
        self.find_element(By.ID, testData.get_elementinfo(3)).click()
 
    def user_login(self, username, pwd):
        self.go_login(username,pwd)
        sleep(1)
        check = (By.ID, By.ID,testData.get_CheckElementinfo(0))
        return  self.find_element(*check).text

④在testcase目录编写测试用例文件,采用ddt数据驱动读取yaml测试数据源文件

@ddt.data(*testData)
def user_login_verify(self, username, password):
    """
           用户登录
           :param phone: 手机号
           :param password: 密码
           :return:
 
           """
 
    baidu_login(self.driver).user_login(username,password)
def test_login(self,datayaml):
    """
            登录测试
            :param datayaml: 加载login_data登录测试数据
            :return:
            """
    self.log.info("当前执行测试用例ID-> {0} ; 测试点-> {1}".format(datayaml['id'],datayaml['detail']))
    # c = self.user_login_verify(datayaml["username"],datayaml["password"])
    # log.info("检查点-> {0}".format(c))
    # self.assertEqual(c, datayaml['check'][0],
    #                  "成功登录,返回实际结果是->: {0}".format(c))

⑤通过多线程将驱动传给执行方法,并行开启多个浏览器执行测试

def run_case(self,function,name):
    thread_list=[]
    for i in range(1):
        appium_server = threading.Thread(target=function,args=(name,))
        thread_list.append(appium_server)
        for j in thread_list:
            j.start()
 
def run_casea(self):
    name = ["chrome", "chrome"]
    for i in name:
        self.run_case(self.test_baidu,i)

⑥操作元素封装

def get_element(self, find_type, element=""):
    # getdata = getyaml(file)
 
    # type = getdata.get_find_type(find_type_index)
    if find_type == "id" or find_type == "ID":
        print(1111111111111111111111)
        return self.driver.find_element_by_id(element)
    elif find_type == "xpath" or find_type == "XPATH":
        return self.driver.find_element_by_xpath(element)
    elif find_type == "name" or find_type == "NAME":
        return self.driver.find_element_by_name(element)
    else:
        raise Exception("错误!")
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有经历过曲折和磨难,我们才能华丽地绽放;只有奋斗不止,我们才能创造人生的奇迹。坚持梦想,勇往直前,成功将成为你辛勤努力的最好见证!

只有在拼搏中才能发现更强大的自己,奋斗是铸就辉煌的阶梯。毅力和努力是成功的密码,不断超越自我,绽放属于你的光芒!相信自己,迈出坚定的步伐,无所不能!

只有在付出汗水的努力中,才能找到成功的奥秘;只有跨越困难的坎坷,才能到达胜利的彼岸;相信自己的能力,勇往直前,追逐梦想的道路上绝不放弃!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第2讲 KMD ISP子系统缩略词及目录结构

QCOM Camera子系统缩略词介绍 CPAS(Camera Peripherals and Support)CDM(Camera Data Mover)TFE(Thin Front End)IFE(Image Front End)OPE(Offline Processing Engine)BPS(Bayer Processing Segment)SFE(Sensor Front End)LRME(Low Resolution Motion Estimation)CSID(Camera …

【《快捷学习Spring》——带你步入Spring世界的快速、有趣、实用之旅!】

本书是一本学习Spring 框架的入门书籍,引导读者逐步上手,书中提供了所有必要的理论 知识,通过实例讨论实际应用程序的主题。本书分为两部分。第I部分是基础(1~6章),学习 使用支持Spring框架的基本组件。分别讨论了真实世界里的Spr…

Js语法学习实战 -数据类型

Js语法学习实战 -数据类型 1. undefined2. null3. Boolean4. Number5. String5.1 常用方法5.2 字符串迭代遍历方法 6. Symbol类型7. Object7.1 基本使用7.2 对象遍历7.3 复制对象方法 8. 数组 - Array8.1 数组的常用方法8.2 数组遍历 9. Function JS语法学习实战系列合集 javas…

6-Spring cloud之Hystrix容错处理(上)

6-Spring cloud之Hystrix容错处理(上) 1. 前言1.1 关于雪崩1.1.1 什么是灾难性雪崩1.1.2 服务雪崩形成的原因1.1.3 如何防止灾难性雪崩效应 1.2 前文介绍 2. Hystrix容错处理2.1 项目搭建(Ribbon整合Hystrix)2.1.1 项目结构2.1.2 …

IOI车机系统刷机和改包笔记

前言 我自己21年买的雪佛兰探界者SUV,没想到到了23年,车机系统上的高德导航还是3.2版本,而官方的已经7.1. 中间出去玩,在高速上被车机上的高德坑了好多次,简直无力吐槽。单纯使用手机Carplay虽然也能完成导航任务&am…

2023年上半年鲁大师电动车综合分数榜解读:九号M95C荣登榜首

2023年上半年电动车综合分数榜单显示了电动车市场的最新发展趋势和品牌表现。 九号M95C获得了第一名,得分798分。九号M95C以其卓越的性能和创新设计脱颖而出。它的高得分主要来自于其强大的续航能力、高速性能和可靠性。九号M95C在电动单车市场中取得了非常好的口碑…

23款奔驰C260L加装原厂香氛负离子系统,清香宜人,久闻不腻

奔驰原厂香氛合理性可通过车内空气调节组件营造芳香四溢的怡人氛围。通过更换手套箱内香氛喷雾发生器所用的香水瓶,可轻松选择其他香氛。香氛的浓度和持续时间可调。淡雅的香氛缓缓喷出,并且在关闭后能够立刻散去。车内气味不会永久改变,香氛…

IPv6 地址简介

IP 地址是指互联网协议地址,它是允许设备连接到互联网的标识符。互联网协议版本 6 (IPv6) 地址是一个 128 位字母数字标签,用于标识和定位计算机网络中的网络接口卡 (NIC) 或网络节点。 IPv6由互联网工程任…

C# 圆盘(hsv)颜色选择器

【首先贴上github链接:适用于 Windows 窗体的 Cyotek 拾色器控件】 一、简单使用教程 此处是我使用Cyotek.Windows.Forms.ColorPickers库部分功能的一些经验和思路总结,没有太多深入地去学习,如果有哪位大佬有深入学习使用的话,可…

阿里云限时福利:WoSign品牌SSL证书首购4折优惠

阿里云限时福利:WoSign品牌SSL证书首购4折优惠 阿里云SSL证书限时首购福利:2023年07月04日至08月31日,阿里云平台WoSign品牌系列SSL证书首购4折优惠,惊喜折扣、限时促销、限量抢购,机会不容错过! 阿里云平…

PCB防静电设计的必要性

平时通过走路穿衣等日常活动带来的摩擦,会产生不同幅值的静电电压,但其能量很小不会对人体产生伤害,不过对于电子元器件来说,这种静电能量却是不能忽视的。 在干燥的环境下,人体静电(ESD)的电压很容易超过6~35Kv&#…

Ubuntu 22安装使用Codon高性能Python编译器记录

Ubuntu 22安装使用Codon高性能Python编译器记录 Codon 在官方 Ubuntu 存储库中没有直接的教程,但可以尝试如下方法进行安装。 一、更新系统 终端输入: sudo apt update以及 sudo apt upgrade二、安装curl 输入指令: sudo apt install …

DHCP静态分配IP地址、IP-MAC绑定、静态ARP有哪些区别?

DHCP静态分配IP地址、IP-MAC绑定、静态ARP这三个功能都涉及到IP地址和MAC地址的对应关系,但其应用场景及实现的功能有所不同,如表所示: 原文地址https://support.huawei.com/enterprise/zh/knowledge/EKB1000052241

Linux下如何部署Nuxt项目(通过ip直接访问)

一、基础环境准备 1.确定服务器的Linux的系统版本 cat /etc/issue 不要问为什么,问就是吃过大亏 2.确定 node mysql是否安装,版本尽量与本地开发环境一致 如果没有安装建议自己百度一下,要根据Linux系统及版本来进行安装; 二、…

企业信息化-亿发软件,中小企业数字化转型解决方案供应商

因自身规模和企业性质,中小型企业需要有效管理企业资源,因此企业信息化管理至关重要。在此背景下,为中小企业量身定制的信息化管理系统可以为中小型企业带来显著的效益。能够实现数据的迅速整合,便于跨部门的协调和管理&#xff0…

计算机网络|思维导图|自顶向下方法|MindMaps资料分享

前言 那么这里博主先安利一下一些干货满满的专栏啦! 手撕数据结构https://blog.csdn.net/yu_cblog/category_11490888.html?spm1001.2014.3001.5482这里包含了博主很多的数据结构学习上的总结,每一篇都是超级用心编写的,有兴趣的伙伴们都支…

【JMeter】同步定时器Synchronizing Timer集合点功能

LoadRunner 中有一个可以设置集合点的功能,顾名思义是设置多个虚拟用户等待到一个时间点,都到齐集合后一起发请求达到并发的目的 集合点是什么意思呢? 阻塞线程,直到指定的线程数量到达后,再一起释放,可以…

【Leetcode】206. 反转链表

题意:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 一开始需要 cur head pre None 第二步反转指针 cur.next pre 接着再继续移动指针 tmp cur.next // 放在反转之前 pre cur cur tmp 完整…

Java使用JNA调用C文件

1.构建项目 准备最简单的maven项目&#xff0c;结构如下&#xff1a; 引入依赖&#xff1a; <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.3.1</version></dependency>2.构建c…

2023-7-12-第十七式状态模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…