自助机测试框架搭建二版(04)

appium-python3进行app自动化测试

 一、项目概述
    使用目前较为流行的UI自动化测试工具Appium,语言选择python3.7,利用ddt进行数据驱动,yaml管理项目的定位,Excel管理测试用例,unittest进行组织测试用例,测试设备选择自助机
    测试报告使用HTMLTestRunnerCN进行测试用例完成后测试报告的生成。
    可配置输出excel报告并,钉钉邮件发送。

依赖第三方包见disanfang.txt

2.目录简介:
 2.1   common.config:配置相关,(配置app以及测试设备相关信息)

 2.2   data:用例存放Excel管理,dingwei下面需要写成测试步骤的逻辑。

 2.3   exctfuntion 根据测试文件里面的测试步骤形成相应的测试逻辑

from common.untils.operyaml import open_da
from common.untils.log import  logger,LOG
import  time
from  common.untils.py_app import deriver_fengzhuang as feng
'''解析测试步骤,按照需求进行测试用例
   默认的定位的最后的一组为断言

'''
@logger('解析测试步骤')
class Makeappcase():
   
def __init__(self,deriver,path):
       
self.deriver=deriver
       
self.path=path
   
def open_file(self):
       
return open_da(path=self.path)
   
def exce_case(self,**kwargs):
        data=
self.open_file()['data']
        case_der=feng(
driver=self.deriver)
       
for i in range(len(data)-1):
            f=case_der.find_elemens(
lujing=data[i]['element_info'],fangfa=data[i]['find_type'])
           
if data[i]['operate_type'] =='click':
                f[
int(data[i]['index'])].click()
           
elif data[i]['operate_type'] =='text':
                f[
int(data[i]['index'])].text
           
elif data[i]['operate_type'] =='send_key':
                f[
int(data[i]['index'])].clear()
                f[
int(data[i]['index'])].set_value(kwargs.get(data[i]['key']))
           
elif data[i]['operate_type'] =='top':
               
se=''
               
self.driver.tap(self,[(99,99)])
           
else:
                LOG.info(
'请检查您的测试步骤')
            i+=
1
           
time.sleep(8)
        f=case_der.find_elemens(
lujing=data[-1]['element_info'], fangfa=data[-1]['find_type'])
       
if data[-1]['operate_type'] == 'text':
            duanyan={
'code':0,'data':f[int(data[-1]['index'])].text}
       
else:
            duanyan = {
'code': 1, 'data':"请检查您的测试步骤最后一步为断言用的"}
            LOG.info(
'请检查您的测试步骤最后一步为断言用的')
       
return duanyan
   
print("解析测试步骤,按照需求进行测试用例,默认的定位的最后的一组为断言")


2.4   funtions:根据测试逻辑相关和exctfuntion下的形成测试步骤后组合成测试用例

# encoding: utf-8

'''

测试测试

'''

from common.untils.log import LOG,logger

from excetfuntion.exectfuntion import Makeappcase

import os

path=os.getcwd()

path_yongli = path+'\\data\\dingwei\\reg.yaml'

@logger('测试测试')

class RegFuntion:

    def __init__(self,deriver):

        self.deriver=deriver

        self.path=path_yongli

        self.open=Makeappcase(self.deriver,path=self.path)

    def reg(self,**kwargs):

        f=self.open.exce_case(**kwargs)

        if f['code']==1:

            LOG.info('无法获取断言')

            return

        else:

            guomiao=f['data']

            return guomiao


2.5   report:根据功能模块 形成的测试用例加入相应的测试数据 组成测试用例
2.6   logs:测试过程的日志
2.7   report:测试报告,性能收集结果存储地方
2.8   testsuite:组织测试用例。
2.9   common.until:公共的工具模块。
2.10   run.py ui自动化测试的主脚本



3 目前存在的不足:

3.1  页面定位和参数放至excel中,分模块执行,也是会启动多次app,频繁重启会有性能问题,例1:提示当前网络差,页面加载慢;例2:页面元素无法加载

3.2  输入excel报告,通过失败分组有bug

3.3  查看民法典,页面卡死无响应:appium 使用的无障碍服务, 获取页面节点,导致浏览器内核长时间未响应

3.4  目前的断言,只判断每组定位的最后一个是否正确

3.5  页面定位放置在excel的一个sheet中,可以连贯性执行。具体看需求,是否需要用例连贯性执行,或者分模块多次重启app执行,各有优缺点。

用例连贯性执行:一步不通过,会影响后续步骤的点击;

分模块多次重启app执行:频繁重启app,没有足够的带宽支撑。会出现页面无法加载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值