Appium基于Python APP自动化测试框架 -- PO

发表于:2018-6-29 13:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:韩小北    来源:博客园

  PO模型的目录结构:
    
  其中,main.py为框架的主入口,test_creat.py调用creat_page.py,creat_page.py调用base_page.py。
  PO代码示例:
  main.py
  1 import unittest
  2 import HTMLTestRunner
  3
  4 #相对路径
  5 testcase_path = ".\\testcase"
  6 report_path = ".\\report\\appium_report.html"
  7 def creat_suite():
  8     uit = unittest.TestSuite()
  9     discover = unittest.defaultTestLoader.discover(testcase_path,pattern="test_*.py")
  10     for test_suite in discover:
  11         # print(test_suite)
  12         for test_case in test_suite:
  13             uit.addTest(test_case)
  14     return uit
  15
  16 suite = creat_suite()
  17 fp = open(report_path,"wb")
  18 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title="测试结果",description="appium新建笔记测试结果")
  19 runner.run(suite)
  20 fp.close()
  test_creat.py
  1 from appium import webdriver
  2 import unittest
  3 from appiumframework.PO.creat_page import CreatPage
  4 import time
  5
  6 class Test(unittest.TestCase):
  7     """自动化"""
  8     def setUp(self):
  9         desired_caps = {
  10             'platformName': 'Android',
  11             'deviceName': 'Android Emulator',#可有可无
  12             'platformVersion': '5.0',
  13             # apk包名
  14             'appPackage': 'com.smartisan.notes',
  15             # apk的launcherActivity
  16             'appActivity': 'com.smartisan.notes.NewNotesActivity',
  17             #如果存在activity之间的切换可以用这个
  18             # 'appWaitActivity':'.MainActivity',
  19             'unicodeKeyboard': True,
  20             #隐藏手机中的软键盘
  21             'resetKeyboard': True
  22             }
  23         self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
  24         time.sleep(5)
  25         self.verificationErrors = "今天天气不错在家学习!"
  26
  27     def tearDown(self):
  28         time.sleep(10)
  29         self.driver.quit()
  30
  31     def test_saveedittext(self):
  32         """保存编辑的文本"""
  33         sp = CreatPage(self.driver)
  34         sp.add_button_link()
  35         sp.run_case("今天天气不错在家学习!")
  36         #断言:实际结果,预期结果,错误信息
  37         self.assertEqual(sp.get_finish_button_text(),self.verificationErrors,msg="验证失败!")

  creat_page.py
  1 from appiumframework.PO import base_page
  2 import time
  3
  4 class CreatPage(base_page.Action):
  5     add_button_loc = ("com.smartisan.notes:id/add_button")
  6     edittext_loc = ("com.smartisan.notes:id/list_rtf_view")
  7     finish_button_loc = ("com.smartisan.notes:id/send_finish_button")
  8
  9     def add_button_link(self):
  10         self.find_element(self.add_button_loc).click()
  11         time.sleep(3)           #等待3秒,等待登录弹窗加载完成
  12
  13     def run_case(self,value):
  14         self.find_element(self.edittext_loc).send_keys(value)
  15         time.sleep(5)
  16         self.find_element(self.finish_button_loc).click()
  17         time.sleep(2)
  18
  19     def get_finish_button_text(self):
  20         return self.find_element(self.edittext_loc).text

  base_page.py
  1 class Action(object):
  2     #初始化
  3     def __init__(self,se_driver):
  4         self.driver = se_driver
  5
  6     #重写元素定位的方法
  7     def find_element(self,loc):
  8         try:
  9             return self.driver.find_element_by_id(loc)
  10         except Exception as e:
  11             print("未找到%s"%(self,loc))

  测试报告截图:
   
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号