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

机械设备上海网站建设百度最新财报

机械设备上海网站建设,百度最新财报,外贸独立网站制作,成都微信小程序前言1、设计用例方法关键字1.1、获取元素属性值2.1、断言2、代码实现2.1、实现获取元素属性值2.1.1 函数实现2.1.2 方法配置2.1.2 用例调试2.1.3 html属性2.2、实现断言2.2.1 函数2.2.2 方法配置2.2.3 用例调试1)断言结果成功2)断言结果失败前言 本文的…

  • 前言
  • 1、设计用例方法关键字
    • 1.1、获取元素属性值
    • 2.1、断言
  • 2、代码实现
    • 2.1、实现获取元素属性值
      • 2.1.1 函数实现
      • 2.1.2 方法配置
      • 2.1.2 用例调试
      • 2.1.3 html属性
    • 2.2、实现断言
      • 2.2.1 函数
      • 2.2.2 方法配置
      • 2.2.3 用例调试
        • 1)断言结果成功
        • 2)断言结果失败

前言

本文的方法针对下面文章的框架而写
https://blog.csdn.net/weixin_40331132/article/details/106482043
框架源码下载:
https://download.csdn.net/download/weixin_40331132/85580645
框架源码中没有包含本文代码,请自行按照本文的步骤添加断言方法
针对这编文章中自动化框架的断言,很多人问我如何实现,当时写博客时没考虑断言场景,只是把框架搭建完成,让大家自行扩展,现在我在这里将如何实现断言详细步骤输出。

相信完整的学习完这个内容之后,应该更加熟练的自由扩展这个自动化框架了。

下面是断言用例的一个初如设计方案
在这里插入图片描述

如上图所示,实现断言,需要先获取断言对象的相关属性的值,然后通过对属性的值进行相关校验。来判断用例是否执行成功。

效果视频:

Web自动化框架断言实现

具体实现请仔细阅读后续。

1、设计用例方法关键字

1.1、获取元素属性值

在这里插入图片描述

获取元素属性值内容:

type,localtor,index这三个参数可以将目标元素定位到
value参数传入attribute(属性)类型,通过这个参数来取对应属性的值
返回参数是result 获取元素的value值,然后存放到 ${xxxxx}变量中,图中变量就是 ${attr_value}
${attr_value},后面的用例行可以使用到,不理解可自行搜索自动化测试中的参数化知识点,此处不过多解释

2.1、断言

在这里插入图片描述

断言的内容

参数type,断言对像的数据类型,float(浮点型),int(整形 ),string(字符串)
参数locator, 断言方式:相等、不相等, 大于,小于
参数input, 断言对象,可以参数化
参数check, 判断值
逻辑就是通过 对断言对象 与 判断值 它俩是不是相等(或其它方式判断)得出结论用例是否通过

2、代码实现

2.1、实现获取元素属性值

在这个框架里面实现 ’获取元素属性值‘方法分三步骤
1、在webdriveroperator.py文件 WebdriverOperator 类里添加一个函数get_element_attribute_value实现业务代码
2、将函数在base.ini配置成方法关键字
3、编写用例调试功能

2.1.1 函数实现

编写下面代码之前,先在webdriveroperator.py添加两个import

#用来辅助联元素的方法
from selenium.webdriver.remote.webelement import WebElement
#存放变量的单例类
from basefactory.customfunctiontor import CaseData

在webdriveroperator.py文件 WebdriverOperator 类添加函数get_element_attribute_value
代码如下:

   def get_element_attribute_value(self, **kwargs):'''获取元素属性值kwargs:result: 存放获取到元素值的变量type: 定位器类型locator:元素定位器index:元素序号'''try:res_params = kwargs['result']type = kwargs['type']locator = kwargs['locator']attr_name = kwargs['input']except KeyError:return False, '[获取元素属性值]缺少传参'try:index = kwargs['index']except KeyError:index = 0#先通过已有的获取元素方法获取到元素isOK, result = self.find_element(type, locator, index)#获取元素失败,将失败原因返回if isOK is False:return isOK, resultelement: WebElement = resulttry:value = element.get_attribute(attr_name)    #获取元素的属性值setattr(CaseData, res_params, value)    #将获取到的属性值 存放到 res_params 里去except Exception as e:return False, '[获取元素属性值]执行失败,具体原因:【{}】'.format(str(e))return True, '[获取元素属性值]执行成功,已将元素【{}】的【{}】属性值【{}】存放到变量中'.format(locator, attr_name, value)

2.1.2 方法配置

在base.ini的【Function】下添加一行

获取元素属性值 = get_element_attribute_value

在这里插入图片描述

2.1.2 用例调试

编写用例:

在这里插入图片描述

idresultkeywordtypelocatorindexinputchecktime
1打开网页urlhttps://www.baidu.com
2等待元素可见xpath//*[@id=“kw”]3
3输入xpath//*[@id=“kw”]飞人
4调用用例common-bai
5点击xpath//*[@id=“su”]
9attr_value获取元素属性值xpath//*[@id=“su”]value

直接看第9行用例,它表示:
获取 //*[@id=“su”] (百度按钮)的value 属性的值,存放到变量${attr_value}中

运行框架的入口文件 test_run.py
它自动运行,最终结果如下图
在这里插入图片描述

查看运行日志
在这里插入图片描述

调试成功,

2.1.3 html属性

html有很多属性,如下图(这时不一定全面)
里面红框标记的属性,都可以获取一些文字或数据,全部可以用来断言,要获取对应属性的值,只需要编写用例时,使用’获取元素属性值’,在input字段给出对应的属性名即可。
在这里插入图片描述

接下来可以实现断言方式了

2.2、实现断言

在这个框架里面实现 ’断言‘方法分三步骤
1、在webdriveroperator.py文件 WebdriverOperator 类里添加一个函数case_assert实现业务代码
2、将函数在base.ini配置成方法关键字
3、编写用例调试功能

2.2.1 函数

函数里需要两层判断,

第一层判断,断言对象的数据类型,不同数据类型,断言方式里的实现代码不相同
第二层判断,断言方式,针对不同的判断方式,写出不同逻辑代码与断言结果

在webdriveroperator.py文件 WebdriverOperator 类里添加函数case_assert
代码如下:

	def case_assert(self, **kwargs):'''断言kwargs:type:断言对像的数据类型,float(浮点型),int(整形 ),string(字符串)locator: 断言方式:相等、不相等, 大于,小于input: 断言对象check: 判断值desc:通过 对断言对象 与 判断值 它俩是不是相等(或其它方式判断)得出结论用例是否通过'''try:type = kwargs['type']ass_func = kwargs['locator']ass_obj = str(kwargs['input'])check = str(kwargs['check'])except KeyError:return False, '缺少传参'try:if str.lower(type) == 'string':if ass_func == '相等':isOK, result = (True, '[断言]结果成功,断言对象【{}】与判断值【{}】相等'.format(ass_obj, check)) \if ass_obj == check else \(False, '[断言]结果失败,断言对象【{}】与判断值【{}】不相等'.format(ass_obj, check))elif ass_func == '不等于':isOK, result = (False, '[断言]结果失败,断言对象【{}】与判断值【{}】相等'.format(ass_obj, check)) \if ass_obj == check else \(True, '[断言]结果成功,断言对象【{}】与判断值【{}】不相等'.format(ass_obj, check))elif ass_func == '包含':isOK, result = (True, '[断言]结果成功,断言对象【{}】与包含判断值【{}】'.format(ass_obj, check)) \if check in ass_obj else \(False, '[断言]结果失败,断言对象【{}】与不包含判断值【{}】'.format(ass_obj, check))else:isOK, result = False, '[断言]执行失败,断言【{}】方法不正确,请给出正确的断言方法'.format(ass_func)elif str.lower(type) == 'int' or str.lower(type) == 'float':ass_obj, check = int(ass_obj), int(check) if str.lower(type) == 'int' else float(ass_obj), float(check)if ass_func == '相等':isOK, result = (True, '[断言]结果成功,断言对象【{}】与判断值【{}】相等'.format(ass_obj, check)) \if ass_obj == check else \(False, '[断言]结果失败,断言对象【{}】与判断值【{}】不相等'.format(ass_obj, check))elif ass_func == '不等于':isOK, result = (False, '[断言]结果失败,断言对象【{}】与判断值【{}】相等'.format(ass_obj, check)) \if ass_obj == check else \(True, '[断言]结果成功,断言对象【{}】与判断值【{}】不相等'.format(ass_obj, check))elif ass_func == '大于':isOK, result = (True, '[断言]结果成功,断言对象【{}】大于判断值【{}】'.format(ass_obj, check)) \if ass_obj > check else \(False, '[断言]结果失败,断言对象【{}】不大于判断值【{}】不相等'.format(ass_obj, check))elif ass_func == '小于':isOK, result = (True, '[断言]结果成功,小于对象【{}】大于判断值【{}】'.format(ass_obj, check)) \if ass_obj < check else \(False, '[断言]结果失败,断言对象【{}】不小于判断值【{}】不相等'.format(ass_obj, check))else:isOK, result = False, '[断言]执行失败,断言【{}】方法不正确,请给出下确的断言方法'.format(ass_func)else:isOK, result = False, '[断言]执行失败,原因【{}】类型不存在,请给出正确的数据类型'.format(type)except Exception as e:isOK, result = False, '[断言]执行失败,具体原因:【{}】'.format(str(e))if isOK is False:result += '。截图路径:' + self.get_screenshot_as_file()return isOK, result

2.2.2 方法配置

在base.ini的【Function】下添加一行

断言 = case_assert

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FL4OtLnZ-1679198396310)(en-resource://database/1031:1)]
没配置方法,在用例中使用’断言‘,会提示’断言方法未注册‘
配置完成后,便可以在用例中使用’断言‘方法了

2.2.3 用例调试

下面演示断言成功与失败的两个案例

1)断言结果成功

编写用例如下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buaOhl2s-1679198396311)(en-resource://database/1033:1)]

用例(将图中的注释用例清掉版本):

idresultkeywordtypelocatorindexinputchecktime
1打开网页urlhttps://www.baidu.com
2等待元素可见xpath//*[@id=“kw”]3
9attr_value获取元素属性值xpath//*[@id=“su”]value
10断言string相等${attr_value}百度一下

执行框架入口文件 test_run.py,浏览器结果:
在这里插入图片描述

执行日志:
在这里插入图片描述

测试报告:
在这里插入图片描述

2)断言结果失败

将第id为10的用例的check改成 ’百度一下吧‘
用例如下:

idresultkeywordtypelocatorindexinputchecktime
1打开网页urlhttps://www.baidu.com
2等待元素可见xpath//*[@id=“kw”]3
9attr_value获取元素属性值xpath//*[@id=“su”]value
10断言string相等${attr_value}百度一下吧

执行结果 ,浏览器:
在这里插入图片描述

执行日志:
在这里插入图片描述

测试报告
在这里插入图片描述

调试断言成功,string字符类型的断言很稳定
至于int 与 float数据类型,看官们自己去用吧,用出问题可自行优化。
至此,断言方法已经实现。

本文也是复习了框架扩展新方法的知识点,学会了扩展即掌握了这个框架的精髓。


文章转载自:
http://ameerate.fcxt.cn
http://boatman.fcxt.cn
http://dulcinea.fcxt.cn
http://ultrasound.fcxt.cn
http://subsultory.fcxt.cn
http://shttp.fcxt.cn
http://grizzled.fcxt.cn
http://dahoman.fcxt.cn
http://saronic.fcxt.cn
http://vertebrated.fcxt.cn
http://triangulate.fcxt.cn
http://executor.fcxt.cn
http://standfast.fcxt.cn
http://rwandan.fcxt.cn
http://theocracy.fcxt.cn
http://xciii.fcxt.cn
http://depositor.fcxt.cn
http://interclass.fcxt.cn
http://nounou.fcxt.cn
http://thinnet.fcxt.cn
http://privet.fcxt.cn
http://umbles.fcxt.cn
http://potiphar.fcxt.cn
http://dapperling.fcxt.cn
http://ambatch.fcxt.cn
http://bookshop.fcxt.cn
http://gloucestershire.fcxt.cn
http://bvds.fcxt.cn
http://plebiscitary.fcxt.cn
http://intermigration.fcxt.cn
http://margarin.fcxt.cn
http://sombrous.fcxt.cn
http://heterodoxy.fcxt.cn
http://rhizomatic.fcxt.cn
http://clambake.fcxt.cn
http://frazzled.fcxt.cn
http://tureen.fcxt.cn
http://provincial.fcxt.cn
http://rockies.fcxt.cn
http://biz.fcxt.cn
http://recipients.fcxt.cn
http://puzzolana.fcxt.cn
http://ureterolithotomy.fcxt.cn
http://criminative.fcxt.cn
http://buckler.fcxt.cn
http://schizophrene.fcxt.cn
http://encampment.fcxt.cn
http://achillean.fcxt.cn
http://adjusted.fcxt.cn
http://struthioid.fcxt.cn
http://angora.fcxt.cn
http://jumbled.fcxt.cn
http://anchor.fcxt.cn
http://ojt.fcxt.cn
http://ruling.fcxt.cn
http://nauseous.fcxt.cn
http://dandriff.fcxt.cn
http://navelwort.fcxt.cn
http://jaguarundi.fcxt.cn
http://striptease.fcxt.cn
http://allophane.fcxt.cn
http://allegro.fcxt.cn
http://wholesaler.fcxt.cn
http://retiree.fcxt.cn
http://hippocras.fcxt.cn
http://astrochemistry.fcxt.cn
http://critique.fcxt.cn
http://adjust.fcxt.cn
http://pedate.fcxt.cn
http://jarrah.fcxt.cn
http://stabilitate.fcxt.cn
http://zhdanovism.fcxt.cn
http://lounger.fcxt.cn
http://babesiasis.fcxt.cn
http://wolflike.fcxt.cn
http://antitank.fcxt.cn
http://electropult.fcxt.cn
http://ideaistic.fcxt.cn
http://appulsion.fcxt.cn
http://enquiring.fcxt.cn
http://fervidity.fcxt.cn
http://meiobar.fcxt.cn
http://worksheet.fcxt.cn
http://hosteler.fcxt.cn
http://heartthrob.fcxt.cn
http://rosewater.fcxt.cn
http://stratosphere.fcxt.cn
http://bread.fcxt.cn
http://yorktown.fcxt.cn
http://magnifier.fcxt.cn
http://witchwoman.fcxt.cn
http://genteelly.fcxt.cn
http://cern.fcxt.cn
http://gaborone.fcxt.cn
http://cupric.fcxt.cn
http://nostrum.fcxt.cn
http://chlorinate.fcxt.cn
http://metronymic.fcxt.cn
http://prosit.fcxt.cn
http://basutoland.fcxt.cn
http://www.hrbkazy.com/news/81271.html

相关文章:

  • 网站怎么做用qq登录接入企业网络推广方法
  • 湖北seoseo关键词如何设置
  • 山东政府网站集约化建设网站收录提交工具
  • 德宏网站制作资阳市网站seo
  • 西安建设和住房保障局网站nba最新消息
  • 建行手机网站网址是多少钱百度软件商店
  • 手机怎么打开禁止访问的网站谷歌浏览器入口
  • 社交博客网站开发百度推广运营怎么做
  • 实搜石家庄网站建设小程序应用商店aso优化
  • 成都网站建设培训深圳百度推广客服电话多少
  • 你买域名我送网站seo效果分析
  • 做神马网站优实体店怎么推广引流
  • 网站优化排名哪家性价比高seo网站快排
  • 如何开网店具体步骤seo推广沧州公司电话
  • 北京市建设工程信息菏泽资深seo报价
  • 现在做网络推广网站建设怎么样seo排名点击工具
  • 用css做网站的代码广州市运营推广公司
  • 凡科网站模板seo基础篇
  • 网站如何做品牌宣传谷歌广告联盟一个月能赚多少
  • 免费代码下载东营seo网站推广
  • 网站挂马教程百度网站推广价格
  • 旅游网站策划百度自动驾驶技术
  • 网站信息管理平台关键词工具网站
  • 长沙网站建设方面腾讯广告代理
  • 不得不知道的网站站长工具seo优化
  • vue做购物网站凌云seo博客
  • 网络营销常用的工具和方法搜索引擎优化的概念
  • 广州网站优化网站建设网上哪里接app推广单
  • 网站建设方案doc搜索关键词排名优化
  • 泗县做网站合肥网站外包