基于python+appium+yaml安卓UI自动化测试分享

发表于:2018-2-07 11:20

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

 作者:迈阿密小白    来源:51Testing软件测试网采编

  结构介绍
  之前分享过一篇安卓UI测试,但是没有实现数据与代码分离,后期维护成本较高,所以最近抽空优化了一下。
  不想看文章得可以直接去Github,欢迎拍砖
  大致结构如下:
  结构.png
  testyaml管理用例,实现数据与代码分离,一个模块一个文件夹
  public 存放公共文件,如读取配置文件、启动appium服务、读取Yaml文件、定义日志格式等
  page 存放最小测试用例集,一个模块一个文件夹
  results 存放测试报告及失败截图
  report.png
  logs 存放日志
  logs.png
  logdetail.png
  testcase 存放测试用例
  runtest.py 运行所有测试用例
  yaml格式介绍
  首先看下yaml文件的格式,之前也写过一点关于yaml语法学习的文章
  testcase部分是重点,其中:
  element_info:定位元素信息
  find_type:属性,id、xpath、text、ids
  operate_type: click、sendkeys、back、swipe_up 为back就是返回,暂时就四种
  上面三个必填,operate_type必填!!!!!!
  send_content:send_keys 时用到
  index:ids时用到
  times: 返回次数或者上滑次数
  testinfo:
      - id: cm001
        title: 新增终端门店
        execute: 1
  testcase:
      -
        element_info: 客户
        find_type: text
        operate_type: click
      -
        element_info: com.fiberhome.waiqin365.client:id/cm_topbar_tv_right
        find_type: id
        operate_type: click
      -
        element_info: com.fiberhome.waiqin365.client:id/custview_id_singletv_inputtext
        find_type: ids
        operate_type: send_keys
        send_content: auto0205
        index: 0
      -
        element_info:
        find_type:
        operate_type: swipe_up
        times: 1
      -
        element_info: 提交
        find_type: text
        operate_type: click
      -
        element_info:
        find_type:
        operate_type: back
        times: 1
  代码部分
  公共部分
  个人觉得核心的就是公共部分,相当于建房子,公共部分搞好了,后面仅仅是调用即可,建房子把架子搭好,后面就添砖加瓦吧。
  读取配置文件readconfig.py
  设置日志格式logs.py
  获取设备GetDevices.py
  这几个通用的就不做介绍了
  读取yaml文件 GetYaml.py
  主要用来读取yaml文件
  #coding=utf-8
  #author='Shichao-Dong'
  import sys
  reload(sys)
  sys.setdefaultencoding('utf8')
  import yaml
  import codecs
  class getyaml:
      def __init__(self,path):
          self.path = path
      def getYaml(self):
          '''
          读取yaml文件
          :param path: 文件路径
          :return:
          '''
          try:
              f = open(self.path)
              data =yaml.load(f)
              f.close()
              return data
          except Exception:
              print(u"未找到yaml文件")
      def alldata(self):
          data =self.getYaml()
          return data
      def caselen(self):
          data = self.alldata()
          length = len(data['testcase'])
          return length
      def get_elementinfo(self,i):
          data = self.alldata()
          # print data['testcase'][i]['element_info']
          return data['testcase'][i]['element_info']
      def get_findtype(self,i):
          data = self.alldata()
          # print data['testcase'][i]['find_type']
          return data['testcase'][i]['find_type']
      def get_operate_type(self,i):
          data = self.alldata()
          # print data['testcase'][i]['operate_type']
          return data['testcase'][i]['operate_type']
      def get_index(self,i):
          data = self.alldata()
          if self.get_findtype(i)=='ids':
                      return data['testcase'][i]['index']
          else:
              pass
      def get_send_content(self,i):
          data = self.alldata()
          # print data['testcase'][i]['send_content']
          if self.get_operate_type(i) == 'send_keys':
              return data['testcase'][i]['send_content']
          else:
              pass
      def get_backtimes(self,i):
          data = self.alldata()
          if self.get_operate_type(i)=='back' or self.get_operate_type(i)=='swipe_up':
                      return data['testcase'][i]['times']
          else:
              pass
      def get_title(self):
          data = self.alldata()
          # print data['testinfo'][0]['title']
          return  data['testinfo'][0]['title']

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号