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

南川网站建设公司网店推广运营策略

南川网站建设公司,网店推广运营策略,wordpress导航菜单美化,绿化公司和苗圃做网站前言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://www.r43.cn/news/46.html

相关文章:

  • 湖南做网站 多少钱磐石网络南昌百度搜索排名优化
  • 盛成广告传媒做网站的疫情放开最新消息今天
  • 整形网站优化bt种子搜索神器
  • 关于水果的网站建设电子商务推广方式
  • 江西网站建设公司电话排名优化关键词公司
  • 做网站的收入来源恶意点击软件哪个好
  • 网站用axure做的rp格式百度网盘app下载安装电脑版
  • 做国际网站的流程百度产品推广
  • html5怎么做网站青岛网站seo服务
  • 网站建设少用控件seo外推软件
  • 河南省网站建设seo推广任务小结
  • 网站建设的主流架构有哪些宣传推广文案
  • 做网站要用什么计算机语言网站搜索排名查询
  • 做网站能用自己电脑吗进入百度app查看
  • 学做网站哪里学安康地seo
  • 做网站学公众号seo排名优化
  • 怎样自己做代刷网站蚌埠网络推广
  • 网站维护的主要工作徐州seo排名公司
  • 网络公司网站建设报价热搜关键词查询
  • 如何做好购物网站全网推广费用
  • 网站建设费免费引流人脉推广软件
  • 如何做导航网站银川网页设计公司
  • wordpress弹出提示框百度seo优化排名客服电话
  • 有路由器做网站热搜关键词
  • 北京在线建站模板知了seo
  • wordpress仿站开发最好的网站优化公司
  • 网站解析需要什么关键词seo优化排名
  • 莘县制作网站北京seo地址
  • 邯郸做网站公司哪家好产品推广平台排行榜
  • 网站建设 设备关键词优化公司如何选择