App自动化之断言文本内容-----中级篇(9)

测试的apk: 一家民宿

断言使用的模块;unittest单元测试框架

unittest特点在于:

1、框架对测试人员来说比较友好,自带初始化方法,保证了用例运行环境,互不干扰:

setup() ,在每一条用例开始前做准备工作
teardown(): 在每条用例结束后做清除工作
setupClass(): 在全部用例开始前做一次准备工作
tearDownClass(): 在全部用例结束后做一次清除工作

2、可以对测试结果生成测试报告

3、支持参数化(数据驱动:ddt),批量执行自动化用例

正文

1、点击进入想要去的景点,这里获取的是id

在这里插入图片描述

2、进入后,获取文本框定位,这里获取的依然是id。因为appium推荐的(Find By)都是唯一的元素值,不需要去验证,当然,如果没有这种唯一的,那你就要考虑哪种更适合了

在这里插入图片描述
3、输入文本内容为北京,并点击下拉框中的第一个内容

扫描二维码关注公众号,回复: 11251921 查看本文章

可以看到,在输入完北京以后,这些下拉内容全部都无法选择,那只能使用tap来点击咯
在这里插入图片描述
在这里插入图片描述
x = 200

y = 210

4、以我刚才输入内容为条件,来用断言看看是否与北京一致

虽然我们用眼看到的是北京,但既然是自动化,那么也让机器来判断它吧

在这里插入图片描述

代码实现:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time
import unittest



caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "127.0.0.1:62001"
caps["appPackage"] = "me.onehome.app"
caps["appActivity"] = ".activity.ActivitySplash_"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
driver.implicitly_wait(15)
time.sleep(5)
TouchAction(driver).tap(x=207, y=1425).perform()  # 点击立即开启

# 点击想去的目的地:
driver.find_element_by_id('me.onehome.app:id/tv_Destination').click()

#输入内容:

input = driver.find_element_by_id('me.onehome.app:id/editText')
input.send_keys('北京')

# 点击下拉内容的第一个
time.sleep(3)  # 因为是tap点击,所以先让下拉内容加载出来再去模拟手势去点击它
TouchAction(driver).tap(x = 200,y = 210).perform()

# 获取主页内容的文本信息,来与我输入的内容做断言,符合既通过,不符合既用例失败

result = driver.find_element_by_id('me.onehome.app:id/tv_Destination').get_attribute('text')
# 判断 是否相等
unittest.TestCase().assertEqual(result,"北京",msg='用例失败')

断言分很多种

assertIn(a,b) : 判断a是否在b里
assertEqual(a,b): 判断a与b是否相等
assertTrue(a) : 判断a的布尔值是否为True,为True既通过,否则失败
assertIs(a,b); 判断a与b两个值的存储地址是否指向了一处

其中,msg参数为断言失败的提示语,当断言失败时,就会提示你输入的这段话

在这里插入图片描述

我这里失败了,因为我用的是相等的断言,返回的内容为北京市,我断言的是北京

所以,在这种情况下,一定要符合场景来使用断言。

像上面这种情况,用包含就好了: assertIn()

猜你喜欢

转载自blog.csdn.net/weixin_46457203/article/details/106265746