首页 > 其他分享 >趁热打铁!一起来看下Airtest1.2.7新增的那些断言API

趁热打铁!一起来看下Airtest1.2.7新增的那些断言API

时间:2022-10-25 11:24:36浏览次数:71  
标签:None 断言 exists 趁热打铁 assert API Airtest msg Airtest1.2

1. 前言

先前我们放出了1.2.7版本的Airtest,其中,一个很重要的功能是,我们 新增了非常丰富的断言API ,今天我们就来详细看一下新版Airtest都有给我们提供哪些断言语句。

2. 旧版Airtest提供的断言语句

先回顾下,旧版Airtest一直以来,都只给我们提供了2种断言语句,一种是断言目标存在/不存在当前页面:

  • assert_exists
  • assert_not_exists

另一种是断言2个值相等/不相等:

  • assert_equal
  • assert_not_equal
1)断言目标存在/不存在当前画面
assert_exists(Template(r"tpl1665570124249.png", record_pos=(0.118, -0.026), resolution=(720, 1440)), "请填写测试点")

assert_not_exists(Template(r"tpl1665570165989.png", record_pos=(0.118, -0.032), resolution=(720, 1440)), "请填写测试点")

2)断言2个值相等/不相等
assert_equal(poco("score").get_text(), "100", "分数为100分")

assert_not_equal(poco("score").get_text(), "0", "分数不为0")

3. 新版Airtest新增的断言语句

而Airtest1.2.7版本,又给我们新增了14个断言的API,包含断言表达式为True或者False(bool)、断言表达式为空/不为空、断言2个值的大小情况等:

1)断言表达式为True/False(bool)
from airtest.core.assertions import *

# 断言表达式为True
assert_true(1==1, msg="assert 1==1")

# 断言表达式为False
assert_false(1==2, msg="assert 1!=2")
2)断言2个对象相同/不相同
from airtest.core.assertions import *

# 断言2个对象相同
assert_is(1, 1, msg="assert 1 is 1")

# 断言2个对象不相同
assert_is_not(1, 2, msg="assert 1 is not 2")
3)断言表达式为None/不为None
from airtest.core.assertions import *

# 断言表达式为None
assert_is_none(None, msg="assert None is None")

# 断言表达式不为None
assert_is_not_none(1, msg="assert 1 is not None")
4)断言第一个参数是否在第二个参数中(包含关系)
from airtest.core.assertions import *

# 断言第一个参数在第二个参数中
assert_in(1, [1, 2], msg="assert 1 in [1, 2]")

# 断言第一个参数不在第二个参数中
assert_not_in(3, [1, 2], msg="assert 3 not in [1, 2]")
5)断言对象是不是某种类型的实例
from airtest.core.assertions import *

# 断言对象是某种类型的实例
assert_is_instance(1, int, msg="assert 1 is int")

# 断言对象不是某种类型的实例
assert_not_is_instance(1, str, msg="assert 1 is not str")

这个断言语句中,第一个参数为obj,是一个具体的对象实例,第二个参数为cls,是一种类型,我们可以用这个断言来判断某个实例是不是属于某种类型的。

不过这个断言,在AirtestIDE中执行会报一个错误,我们会在下个版本修复这个问题:

TypeError: can't pickle mappingproxy objects
6)断言第一个值大于/大于等于第二个值
from airtest.core.assertions import *

# 断言第一个值大于第二个值
assert_greater(2, 1, msg="assert 2 > 1")

# 断言第一个值大于等于第二个值
assert_greater_equal(1, 1, msg="assert 1 >= 1")
7)断言第一个值小于/小于等于第二个值
from airtest.core.assertions import *

# 断言第一个值小于第二个值
assert_less(1, 2, msg="assert 1 < 2")

# 断言第一个值小于等于第二个值
assert_less_equal(1, 1, msg="assert 1 <= 1")

4. 拓展:Airtest断言的msg参数说明

可以看到,所有Airtest的断言语句中,都包含msg参数,这个参数是为了方便我们给当前的断言语句增加一个说明,并且该说明会显示在Airtest报告,断言步骤的描述上:

5. 拓展:Airtest断言的snapshot参数说明

从Airtest1.2.7版本起,断言还新增了一个snapshot的参数,为了支持同学们在设置断言时,还能附带截取当前画面的图片,然后显示在Airtest报告中。

当然如果我们不需要断言截图的话,也可以设置关闭断言的截图:

# 默认情况下,断言截图会开启
assert_is_not_none("1", msg="assert '1' is not None")

# 如不需要断言时截取当前画面,则可以设置关闭断言的截图
assert_is_not_none("1", msg="assert '1' is not None",snapshot=False)

1)assert_exists关闭截图的特殊说明

比较特别的是,assert_exists 默认也是带截图的,但是要设置这个步骤不截图,不能使用 snapshot=False 来设置,而是要通过Airtest的全局设置来控制:

ST.SAVE_IMAGE = False

assert_exists(Template(r"tpl1665719197992.png", "请填写测试点"))

assert_not_exists 也是同理。如果给assert_exists强行传入snapshot=False,则会报错:

TypeError: assert_exists() got an unexpected keyword argument 'snapshot'

6. 小结

今天我们主要介绍了旧版Airtest的断言,以及1.2.7版本Airtest新增的断言类型,还拓展了Airtest断言的相关参数说明。更多关于Airtest新版的内容,欢迎同学们持续关注我们后续的推文。


Airtest官网https://airtest.netease.com/
Airtest教程官网https://airtest.doc.io.netease.com/
搭建企业私有云服务https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~

标签:None,断言,exists,趁热打铁,assert,API,Airtest,msg,Airtest1.2
From: https://www.cnblogs.com/AirtestProject/p/16824253.html

相关文章

  • net6 读取api文件参数的内容
    在net6的api接口中,有的参数是文件类型,读取文件的内容。 1///<summary>2///导入3///</summary>4///<returns></return......
  • Dapr 访问API
     Dapr 调用API默认情况下,Dapr挎斗(SideCar)依赖于网关来限制对其公共API的访问。因此,请清除“为HTTPS配置”复选框: 打开NuGet包管理器,添加以下包Dapr.A......
  • 实验7:基于REST API的SDN北向应用实践
    (一)基本要求1.编写Python程序,调用OpenDaylight的北向接口实现以下功能。    (1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight    (2)下发指令删除s1上......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践(一)基本要求1、编写Python程序,调用OpenDaylight的北向接口实现以下功能(1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;......
  • 实验7:基于REST API的SDN北向应用实践
    基础要求1.编写Python程序,调用OpenDaylight的北向接口实现以下功能利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;下发指令删除s1上的流表数据#delet......
  • JDK8-日期和时间API
    日期和时间是非常复杂的一个东西,因为语言文化和时区等等原因,时间又是一个非常简单的东西,因为他是人类生活的共工基础,所以长时间来形成了非常成熟的API,直接调用感觉不到复杂......
  • 实验7:基于REST API的SDN北向应用实践
    (一)基本要求1.编写Python程序,调用OpenDaylight的北向接口实现以下功能调用OpenDaylight的北向接口获取拓扑信息importrequestsasrqfromrequests.authimportHTTP......
  • Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同?
    通常使用Vue2开发的项目,普遍会存在以下问题:代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺点TypeScript支持有限以上通过使用CompositionApi都能迎刃......
  • 2.4 RedisAPI之list
    1.简介字符串键值结构(keyvalue)特点有序可重复左右两边都可插入和删除2.命令从列表右端插入值rpushkeyvalue1value2......valueN时间复杂度为O(1~n)从列表左端插入值l......
  • 2.6 RedisAPI之zset
    1.简介字符串键值结构(keyscorevalue)特点有序不重复支持集合间操作2.命令向集合内添加元素,element不可以重复但score是可以重复的zaddkeyscoreelement时间复杂度为O(l......