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

关于对自动化测试框架PO的认识详见之前我写的博客:http://www.cnblogs.com/hanxiaobei/p/6755329.html

本篇主要是说appium自动化测试如何有PO的设计思想来实现。

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))

测试报告截图:

时间: 2024-10-28 16:11:15

Appium基于Python APP自动化测试框架 -- PO的相关文章

Appium基于python unittest自动化测试并生成html测试报告

本文基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: 1 #利用unittest并生成测试报告 2 class Appium_test(unittest.TestCase): 3 """appium测试类""" 4 def setUp(self): 5 desired_caps = { 6 'platformName': 'Android', 7 'deviceName': 'An

Windows下部署Appium教程(Android App自动化测试框架搭建)

摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,appium是跨平台的,可以用在osx,windows以及linux系统上: ----------------------------------------------appium的一些基本概念---------------------------------------------- appium

基于Python接口自动化测试框架(初级篇)附源码

引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局限性: 1.测试数据不可控:    接口虽然是对业务逻辑.程序代码的测试,而实际上是对数据的测试,调用接口输入一批数据,通过断言代码验证接口返回的数据,整个过程围绕数据测试.    如果返回的数据不是固定的,是变化的,那么断言失败,就无法知道是接口程序错误引起的,还是数据变化引起的,所以就需要进行测

基于Selenium的自动化测试框架 - SeLion学习之一(基本介绍)

SeLion是一个基于Selenium的自动化测试框架,是Selenium下的一款非常优秀的框架结构,但是资料非常少,在国内使用的也就相对较少,本人会用一系列的文章,比较详细的介绍该框架结构,希望能给广大的自动化测试爱好者提供一个实现思路,如果对该本人文章感兴趣或者有什么问题,欢迎留言,我会尽量回答,也欢迎转载该系列文章.该文章是本系列第一节,SeLion的基本介绍,先让大家对SeLion有一个基本的认识. 一:SeLion是什么?SeLion是基于Selenium的一款开源测试框架,是对Sel

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

基于QTP的自动化测试框架概述

框架稳定后展示给用户的内容有以下几部分,也就是说测试人员需要去关注去维护的部分就可以了,完全不在care代码内容是什么,只需要按照格式填写就OK 1.测试用例执行模拟控制列表(可用其它管理工具代替,这里用成本最低的方式实现不借助已有的专业管理工具) 2.测试用例控制列表 3.测试数据控制列表 基于QTP的自动化测试框架概述,布布扣,bubuko.com

基于Python的接口测试框架实例

文章来源:http://www.jb51.net/article/96481.htm 下面小编就为大家带来一篇基于Python的接口测试框架实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 背景 最近公司在做消息推送,那么自然就会产生很多接口,测试的过程中需要调用接口,我就突然觉得是不是可以自己写一个测试框架? 说干就干,由于现有的接口测试工具Jmeter.SoupUI等学习周期有点长,干脆自己写一个吧,不求人,所有功能自己都能一清二楚. 当然,写工具造轮子只是

基于appium的app自动化测试框架

基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于web测试框架开发的 一.设备连接 (即构建基础的测试环境,保证可以驱动设备进行操作) 0.准备测试环境 1)安装jdk配置java_home环境变量: 2)安装Android SDK(安卓软件开发包)(adb.appt ) 3)安装nodejs,并通过npm安装appium 1.获取app包名appPackage 在cmd命令行中输入aap

移动APP自动化测试框架

简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的"变", 变化导致自动化用例的大量维护.从分层测试的角度,自动化测试应该逐层进行.最大量实现自动化测试的应该是单元测试,最容易实现也最容易在早期发现问题:其次是接口级测试,以验证逻辑为目的进行自动化,由于接口的相对稳定,自动化测试成本相对也可以接受:自动化成本最大的便是UI级自动化测试,然而UI界面是直接反馈给用户的效果展示,适度的尤其是BVT级的自动化测试也是非常必要的.本文通过分析几种自动化框架的异同,使测试人员