1029Appium app自动化测试经验分享-使用unittest框架的断言心得(二)

之前分享过一期unittest单元测试框架下面的断言心得,今天再做些补充;

一)assertIn()

assertIn(member, container, msg=None)
判断是字符串是否包含:member in container

例:

assertIn(“2” in “23”) 成功
assertIn(“1” in “23”) 失败

app有个情景是:在某搜索输入框,输入内容后,直接会显示出来搜索结果,我的思路是在结果里面去寻找是否有搜索内容

在这里插入图片描述

		
	self.xin_find_element(By.ID, self.sousuo_id).send_keys('0')
        # 断言 显示的用户的text属性值 是含有0的
        self.assertIn('0', self.xin_find_element(By.ID, 'id/name').get_attribute('text'))
        print('断言1 通过')

二)assertIsNotNone()

assertIsNotNone(obj, msg=None)
判断是否 不为None:obj is not None

assertIsNone:不存在,则pass
assertIsNone(obj,msg) 是为了 检查某个元素是否存在

app有个情景,在某个界面做了修改,点击完成,返回前面的页面,某些选项的text就有了属性值;我的思路是在设置后返回的页面,对于那个属性值做判断是否为空(最初若是没有值,可以增加1个断言);

		
	# 断言 未设置开始时间 这个属性的text为空
        self.assertIsNone(self.xin_find_element(By.ID, 'id/action_begin_time').get_attribute('text'), '不是空')

		# 断言 修改了开始时间 这个属性的text不为空
        self.assertIsNotNone(self.xin_find_element(By.ID, 'id/action_begin_time').get_attribute('text'))
        print('断言1 通过')

三)分享到微信、朋友圈-切换app的断言分享

都知道微信的包名是’com./去掉/tencent.mm’,获取当前app的包名这个操作driver.current_package

在这里插入图片描述

		
	# 点击分享
        self.xin_find_element(By.ID, self.shezhi_fenxiang_id).click()
        ABCd = self.driver.current_activity
        ABCD = self.driver.current_package
        print('当前activity是: ', ABCd, ',当前package是: ', ABCD)
        # 点击朋友圈(分享到微信)
        self.xin_find_element(By.ID, self.shezhi_fenxiang_peng_id).click()
        time.sleep(5)       # 保证当前已经是微信app
        abcd = self.driver.current_activity
        abcD = self.driver.current_package
        print('强制等待5秒后, 当前activity是: ', abcd, ',当前package是: ', abcD)
        self.assertNotEqual(ABCD, abcD)
        print('断言1 通过')
        self.assertNotEqual(ABCd, abcd)
        print('断言2 通过')
        self.assertEqual(abcD, 'com.tencent.mm')
        print('断言3 通过')

其实我这样写有些啰嗦,见谅;我也是摸索着才知道 原来有获取当前app的包名 driver.current_package;

这儿还有些小问题:分享到微博(没实践过),若是手机没有装微博app,会打开网页版的微博,那该如何做断言呢?若是装了app,又该如何作断言呢?

四)朋友圈评论-断言分享

len() 方法返回对象(字符、列表、元组等)长度或项目个数。

在这里插入图片描述


	self.xin_find_element(By.ID, self.pengyouquan_pinglun_id).click()
        # 打印 当前评论的条数
        print('未评论时:', len(self.driver.find_elements(By.ID, 'id/tv')))
        abcd = len(self.driver.find_elements(By.ID, 'id/tv'))
        # 输入新的评论、发送
        self.xin_find_element(By.ID, self.pengyouquan_pinglun_shuru_id).send_keys('1230123')
        self.xin_find_element(By.ID, self.pengyouquan_pinglun_fasong_id).click()
        # 打印当前评论的条数
        print('评论过', len(self.driver.find_elements(By.ID, 'id/tv')))
        abcd2 = len(self.driver.find_elements(By.ID, 'id/tv'))
        print(type(abcd2), type(abcd))
        print('len() 方法返回的是整数int类型 ')
        self.assertTrue(int(abcd) + 1 == int(abcd2), '不可能错的')
        print('断言1 通过')
        self.assertTrue(abcd + 1 == abcd2)
        print('断言2 通过')

这个例子分享出来,是因为之前犯过错:字符串和数字直接拼接,在Python之中是会报错的。所以特地做了int()转换,但是没想到 len()方法本身返回得就是int类型;

我理解中:断言,那就是要做个预期结果和实际结果的对比,方能知道你的操作是否成功;但又有个新问题,地图类的用例该如何做断言呢?好像 放大和缩小 可以断言比例尺(若没有比例尺呢?),待我想想再做分享。

交流技术 欢迎+QQ 153132336 zy

猜你喜欢

转载自blog.csdn.net/zyooooxie/article/details/83504858