run执行入口,收集用例->执行test_login,测试类TestAdd继承StartEnd->执行StartEnd的setup,进行driver设置->执行test_login 下的test_get_zhangsan->
执行StartEnd中的teardown
->执行StartEnd的setup>执行test_login下的test_login_001->执行StartEnd中的teardown->生成测试报告
baseView
封装元素基本操作
class BaseView(object):
def __init__(self,driver):
self.driver=driver
def find_element(self,*loc):
return self.driver.find_element(*loc)
def find_elemets(self,*loc):
return self.find_elemets(*loc)
def get_window_size(self):
return self.driver.get_windows_size()
def swipe(self,start_x,start_y,end_x,end_y,duration):
return self.driver.swipe(self,start_x,start_y,end_x,end_y,duration)
common_fun
定义一些页面元素/相关操作
desired_caps
APP设备相关信息及连接
from appium import webdriver
import yaml
import logging
import logging.config
import os
CON_LOG='../config/log/conf'
def appium_desired():
"""
yaml是一种简洁的非标记语言,以数据为中心,使用空白,分行组织数据
:return:
"""
with open('../config/config.yaml','r',encoding='utf-8')as file:
data=yaml.load(file, Loader=yaml.FullLoader)
#创建设备信息
desired_caps={}
desired_caps['platformName']=data['platformName']
desired_caps['platformVersion']=data['platformVersion'] # #在 手机设置,关于平板电脑可以找到版本
desired_caps['deviceName']=data['deviceName'] #模拟器上设备的名称 在cmd下用adb devices显示的地址
desired_caps['appPackage']=data['appPackage']#通讯录包名
desired_caps['appActivity']=data['appActivity']#app活动名
#连接
driver=webdriver.Remote(data['url'],desired_caps)#连接的是appium
driver.implicitly_wait(5)
return driver
myunit
初始化和结束测试固件
import unittest
from common.desired_caps import appium_desired
import logging
from time import sleep
class StartEnd(unittest.TestCase):
def setUp(self):
logging.info("---------------setup-------------")
self.driver=appium_desired()
def tearDown(self):
logging.info("---------------tearDown---------")
sleep(5)
self.driver.close_app()
需要注意的点是,如上代码的setup和teardown会导致在测试类的每一个test方法前都初始化一次driver,所以每次test前后APP都会关闭启动,消耗时间。
如何使在在一个测试类中只启动一次APP呢?
可以使用 setupClass
import unittest
from common.desired_caps import appium_desired
import logging
from time import sleep
class StartEnd(unittest.TestCase):
@classmethod
def setUpClass(cls):
logging.info("---------------setup-------------")
cls.driver=appium_desired()
@classmethod
def tearDownClass(cls):
logging.info("---------------tearDown---------")
sleep(5)
# self.driver.close_app()
yaml文件
配置信息文件:
platformName:
Android
platformVersion: 7.1.2
deviceName: 127.0.0.1:62001
appPackage: com.android.contacts
appActivity: .activities.PeopleActivity
url: http://127.0.0.1:4723/wd/hub本文链接:https://www.bdoc.cn/post/57.html
版权声明:本文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编QQ或者微信:799549349,我们将立即处理