当前位置: 首页 > news >正文

电商网站大连Wordpress怎么配合HTML

电商网站大连,Wordpress怎么配合HTML,wordpress 韩国 主题,嵌入式软件开发公司排名1.背景 为UI页面写自动化测试用例时(如:web自动化、app自动化),使用普通的线性代码,测试用例中会存在大量的元素定位及操作细节,当UI界面变化时,测试用例也要跟着变化,在自动化测试…

1.背景

为UI页面写自动化测试用例时(如:web自动化、app自动化),使用普通的线性代码,测试用例中会存在大量的元素定位及操作细节,当UI界面变化时,测试用例也要跟着变化,在自动化测试用例增加时,用例将难以维护。那么有没有一个方法能够降低UI自动化测试用例的维护难度呢?PageObject设计模式(简称PO模式)很好的解决了这个问题

2.PO简介

PO是PageObject设计模式的简称,有时也称为POM,中文含义:页面对象模型,用于专门对一个系统进行自动化测试实现的设计模式。可以最大程度实现测试的覆盖率,是目前业内公认的最佳设计模式。

3.理解PO模式

我们知道做UI自动化时,就是使用自动化的方式对页面元素进行相关的操作,业务流程就是通过对不同UI页面进行操作、跳转,从而构成我们的主体业务流程。PO模式就是以每个页面为对象主体作为自动化测试的执行对象,来实现整体的自动化测试。下面我们以添加商品到用户购物车为例进行普通思路与PO模式的对比帮助大家进一步理解PO模式

添加商品到购物车的测试---普通模式输入url-->点击登录-->输入账号-->输入密码
-->点击登录按钮-->搜索商品-->选择商品-->
选择商品属性-->点击加入购物车---PO模式进入登录页,执行登录操作进入商品详情页,执行添加商品到购物车操作进入购物车页面,执行校验添加是否成功操作

从上面的对比,我们发现PO模式基于系统的模块页面定义不同的页面对象,来实现不同页面的一个或者多个操作行为;再基于多个页面对象的操作行为进行组装,实现一个完整的系统业务流程

4.如何实现

4.1 PO模式的工程结构

PO模式在实现时,基本上可以分为四层:基类、页面对象类、测试数据类、测试用例类;通过分层架构的思想,实现测试用例与测试数据的分离、业务代码与测试代码的分离,具体每层的作用如下:

基类(base_page):封装各类行为操作,便于测试页面对象类进行调用,是整个PO模式体系的底层实现

页面对象类(obj_page):提取系统中的关键页面,封装成页面对象;主要页面的元素封装为页面对象类的属性,将页面的操作行为封装为页面对象类的方法

测试数据类(case_data):管理测试数据

测试用例类(test_cases):组装各页面对象类的行为,形成完成的业务流程进行测试

具体的工程图例如下:

 

4.2 工程代码

下面以ecshop项目为例演绎整体的框架设计思路

a.基类的包下创建一个basepage.py文件,里面封装底层的基础操作及公共方法,详细代码如下:

from selenium import webdriver
from time import sleepclass BasePage:#初始化def __init__(self,brow_type):try:driver = getattr(webdriver, brow_type)()except:driver = getattr(webdriver, 'Chrome')()driver.maximize_window()self.driver = driver#封装get方法def get(self,url):self.driver.get(url)#封装定位页面元素的方法def locator(self,locator):return self.driver.find_element(*locator)#封装input方法def input(self,locator,input_value):self.locator(locator).send_keys(input_value)#封装close方法def close(self):self.driver.close()#封装quit方法def quit(self):self.driver.quit()#封装click方法def click(self,locator):self.locator(locator).click()#封装强制等待方法def sleep(self,sec):sleep(sec)

b.页面对象类的包下为每个页面对象创建一个页面对象的.py文件,这里我们举例创建一个login_page.py文件,详细代码如下:

from base_page.basepage import BasePageclass LoginPage(BasePage):'''页面对象类继承于基类页面元素类对象1.页面url:封装为页面对象类的属性2.页面元素:封装为页面对象类的属性3.页面功能:封装页面对象类的方法'''#1.页面urldefault_url = r'http://192.168.53.213/ecshop'login_url = r'/user.php'url = default_url + login_url#2.页面元素username = ('name','username')password = ('name','password')click_locator = ('name','submit')#3.页面功能def login(self,user,pwd):self.get(self.url)self.input(self.username,user)self.input(self.password,pwd)self.click(self.click_locator)

c.在测试数据类的包下面使用yaml格式数据管理测试用例数据,数据具体内容如下:

d.测试用例类的包下创建test_开头的测试用例.py文件,这里我们举例创建一个test_login.py文件,详细代码如下:

**import unittest
from ddt import ddt,file_data
from obj_page.login_page import LoginPage@ddt
class TestLogin(unittest.TestCase):#前置处理:创建登录页面对象def setUp(self) -> None:self.loginpage = LoginPage('Chrome')#后置处理:退出浏览器def tearDown(self) -> None:self.loginpage.quit()#测试登录,结合ddt+yaml进行数据驱动处理   @file_data('../case_data/login.yaml')def test_login(self,user,pwd,locator,except_value):self.loginpage.login(user,pwd)#登录self.assertEqual(self.loginpage.locator(eval(locator)).text,except_value)#断言if __name__ == '__main__':unittest.main()

4.3 执行测试用例查看结果

4.4 这样设计具体优点

a.当登录页面的页面元素位置变化时,我们只需要在页面对象类中去具体修改具体页面对应的元素即可,不需要去修改测试用例的内容,如下图:

b.当登录的业务流程变化时,比如要加上勾选协议条款等必选操作时,我们只需要在页面对象类中去修改具体对应的操作行为即可,不需求做其它任何修改,如下图:

c.我们要测试登录的多种场景时,只需要去测试用例数据管理类中找到对应的数据管理文档,修改或添加测试用例数据即可,不需求做其它任何操作,大大的提高了代码的复用性,如下图:

d.对于相互依赖的复杂业务场景,当业务流程变化时,我们只需要修改测试用例对于各页面对象类行为方法的组装过程,受流程影响的测试数据同步修改即可,不需求修改其它的地方。如下图:

5.PO模式设计总结

a.公共方法代表页面提供的服务

b.不要暴露页面细节,对外只提供方法名

c.不要把断言和操作细节混用,操作细节中不要使用断言,可以把断言放到单独的模块中,如:testcase中

d.页面对象类的方法可以return到新打开的页面,点击一个页面可能会产生新的页面,可以使用return表示跳转,或者通过页面url直接访问

e.不要把整页内容都放到PO中,只为页面中重要的内容进行封装,对不重要的内容进行舍弃

f.相同的行为会产生不同的结果,可以封装不同的接口;如点击登录可能成功,也可能失败,你可以封装为不同的方法;也可以借用测试用例数据来处理

g.UI自动测试以流程测试为主,不是为了所以的细节全部实现自动化

  如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于想做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……加入我的学习交流群一起学习交流讨论把!!!!

 

http://www.yayakq.cn/news/859087/

相关文章:

  • 新东阳建设集团网站wordpress头像网站
  • 东莞专业做网站网站优化公司认准乐云seo
  • 二次网站开发网站找不到的原因
  • 上海网站建设优化价格服装设计师需要什么学历
  • 郑州正云网站建设网站开发联系方式
  • 呼和浩特企业网站排名优化页面简单的网站模板免费下载
  • 网站建设的标签指的是如何搭建虚拟专用网络
  • 网站主关键词如何优化东莞新闻头条最新消息
  • 大量word发布wordpressseo关键词优化最多可以添加几个词
  • 专业做设计师品牌网站网站制作怎么做语音搜索框
  • 网站同步到新浪微博小内存 wordpress 优化
  • 哪个网站做简历好wordpress yum
  • 建一个网站需要什么手续wordpress文章排列
  • 关于做网站公司周年大促销无锡网站优化公司
  • 邢台做网站优化费用WordPress主题制作教程三
  • 做网站的教程中国万网陈峰欣
  • 网站改版 建设方案支付公司网站建设费账务处理
  • 西安个人做网站seo排名优化是什么
  • 用angular做的网站网站备案域名证书
  • 什么网站好建设建设官方网站怎么登录
  • app网站建设教程视频教程天津平台网站建设费用
  • 做一家网站需要多少钱实名域名购买
  • 安徽省建设工程八大员报名网站十三五专业建设规划
  • 建设网站ppt模板在建设银行网站上买卖贵金属
  • 做婚庆网站的功能定位秦皇岛抚宁区建设局网站
  • 网站建设分工方案排名优化方法
  • 个人网站 免费空间网页设计尺寸要求
  • 帝国建站程序dedecms制作网站地图
  • 广州番禺建设银行网站登录wordpress下载按钮
  • react网站开发实战石家庄心雨网站建设