单元测试框架(unittest)的安装: <1> 使用pip命令: pip install unittest <2> 在pycharm里安装 单元测试框架(unittest)的主要方法: setUp(): 在每条用例开始前做准备工作 tearDown(): 在每条用例结束后做清除工作 setUpClass(): 在全部用例开始前做准备工作(仅做一次) tearDownClass(): 在全部用例结束后做清除工作(仅做一次) TestCase(): 测试用例,一般是写入一个类,让其继承 TestSuite(): 测试容器、测试套件,将用例放入 TestLoader(): 加载器,将测试套件放入后,会去寻找所有以test开头命名的测试用例 注意事项: 在单元测试框架中,所有的自动化用例都要以test_命名开头,且它是通过ACSII码值来进行转换,根据从小到大的顺序来执行用例 补充说明,装饰器: @classmethod: 在方法上引用,表示这是一个动态类方法 @staticmethod; 在方法上引用,表示这是一个静态类方法 测试的apk: 一家民宿 自动化用例场景三种: <1>进入一家民宿内—-点击想去的目的地/景点/——-输入内容为北京—-点击下拉内容的第一个—-查看主页中的目的地是否与我输入的一致(也是北京) <2> 进入一家民宿内—点击入住-退房日期—-选择入住日期为明天(5-22日)—-选择退房日期(5-23日)–点击确定—- <3> 进入一家民宿内—-点击入住人数—选择人数为2位房客—–获取主页内入住人数是否是我选择的(2人) 一、准备工作,使用adb命令连接模拟器,打开appium,写入要测试的apk各个参数 二、启动会话,获取定位元素信息 三、代码实现: 四、运行结果 需要注意的是,运行方式要整篇运行,首先要将当前的.py文件路径复制并放入以python的运行方式,示例:
获取主页内的入住日期是否与我输入的一致
noReset: 跳过引导页import unittest from appium import webdriver import time from appium.webdriver.common.touch_action import TouchAction 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_" class YJMS(unittest.TestCase): def setUp(self) -> None: self.driver = webdriver.Remote("https://localhost:4723/wd/hub",caps) self.driver.implicitly_wait(20) # 隐式等待,会等元素加载完去寻找 time.sleep(5) TouchAction(self.driver).tap(x=207, y=1425).perform() # 点击立即开启 self.width = self.driver.get_window_size()['width'] # 做适配工作,获取当前手机的宽 self.height = self.driver.get_window_size()['height'] # 做适配工作 获取当前手机的高 def tearDown(self) -> None: # 在每条用例结束后做清除工作,关闭app,提供良好的测试环境,互不干扰 self.driver.quit() def test_001(self): # 点击想去的目的地: self.driver.find_element_by_id('me.onehome.app:id/tv_Destination').click() # 输入内容: input = self.driver.find_element_by_id('me.onehome.app:id/editText') input.send_keys('北京') # 点击下拉内容的第一个 time.sleep(3) # 因为是tap点击,所以先让下拉内容加载出来再去模拟手势去点击它 TouchAction(self.driver).tap(x=200, y=210).perform() # 获取主页内容的文本信息,来与我输入的内容做断言,符合既通过,不符合既用例失败 result = self.driver.find_element_by_id('me.onehome.app:id/tv_Destination').get_attribute('text') # 判断 是否包含 unittest.TestCase().assertIn(result, "北京市", msg='用例失败') def test_002(self): #点击入住-退房日期 self.driver.find_element_by_id('me.onehome.app:id/tv_check_data').click() #选择入住日期为明天(5-22日) x = 697/900 #做适配工作,可以让代码在不同的分辨率下正常运行,697为要点击的x位置,900为分辨率的宽,获取的是要点击内容的x值占比 y = 882/1600 # 做适配工作,可以让代码在不同的分辨率下正常运行,882为要点击的x位置,1600为分辨率的宽,获取的是要点击内容的y值占比 time.sleep(5) TouchAction(self.driver).tap(x = x*self.width,y = y*self.height).perform() # 选择退房日期(5-23日) x = 840/900 y = 886/1600 time.sleep(5) TouchAction(self.driver).tap(x = x*self.width,y = y*self.height).perform() # 点击确定: self.driver.find_element_by_id('me.onehome.app:id/confirmTv').click() # 获取一家民宿主页内的入住信息,以文本信息返回 result = self.driver.find_element_by_id('me.onehome.app:id/tv_check_data').get_attribute('text') # 断言预期结果与实际结果是否相等: self.assertEqual("05月22日-05月23日 共1晚",result) def test_003(self): #点击入住人数 - -- renshu = self.driver.find_element_by_id('me.onehome.app:id/tv_check_person_Sum') renshu.click() # 选择人数为2位房客 x = 137/900 y = 340/1600 time.sleep(3) #任何tap点击前都要等待下,因为tap点击是瞬时操作,与element(定位元素)不同 TouchAction(self.driver).tap(x = x*self.width,y = y*self.height).perform() # 获取主页内入住人数是否是我选择的(2) time.sleep(2) result = self.driver.find_element_by_id('me.onehome.app:id/tv_check_person_Sum').get_attribute('text') self.assertEqual("2位房客",result) if __name__ == '__main__': unittest.main(verbosity=3) # verbosity 后面 = 是用例的条数,可以清晰的看到哪条用例通过,哪条未过
最后run 运行
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算