Appium 自动化测试之框架

本文基于模块化封装思想,对上一篇构建的自动化测试框架雏形进行优化。通过建立不同文件夹分类管理代码和配置文件,如baseView、businessView等,搭建出更清晰的框架。同时介绍了代码修改和新增内容,还以kyb APP注册功能为例说明测试用例判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇已经根据模块化封装的思想,构建了一个自动化测试的框架雏形,当然,还很简陋和杂乱,日后维护管理,查询报告和截图都很不方便。接下来,需要对不同的部分,建立不同的文件夹来分类管理。具体可以分成以下几个文件夹。
自动化测试框架示范
各个文件夹的作用,其实通过其名称便可理解。简要说明几个,baseView主要存放基类(相关定义见上一篇),businessView主要存放业务功能代码,也就是能实现要被测试的功能的代码,如登录功能,注册账户功能。common主要存放一些公共使用的代码,如公共使用的功能代码(弹窗检测和关闭,上下滑动屏幕,截图,生成时间戳等),读取appium服务器和app启动配置,以及日志采集配置的的代码,测试环境的准备和还原的代码。data文件夹主要放置用于测试的一些数据,如测登录功能的账户密码数据(以数据来驱动测试流程),test_case用于存放不同功能的测试脚本,即上一篇最后提到的利用unittest模块编写的测试用例。test_run文件夹存放最终运行的脚本,引入了BSTestRunner模块,可以生成测试报告,统计测试通过率等。而z_bat script则放入创建的bat脚本,可以通过cmd命令窗口来运行test_run里面的测试执行文件。
按照这样的结构分好类,将各自对应的代码,配置文件放入。一个更为清晰明朗的自动化测试框架就搭好了。当然,相比于上一阶段,代码里需要针对这样的架构进行一些修改,主要集中在文件读取方式,路径,日志、截图存储路径的变动方面。当然也新增了一些代码,如生成测试报告等。具体如下

  1. test_case测试用例脚本里,使用了unittest模块里的断言方法,assertTrue(),如果其参数为True,则该方法执行后的值为True,反之,则为False。这个方法一般用来判断测试用例的执行结果是pass还是fail。为了达到能判断的效果,在编写测试用例时,需要在适当的地方(或情形) return True或False,作为用例执行后的返回值。
    以kyb APP的注册功能为例,当在业务功能脚本里写好注册功能后,增加了以下代码来判断注册是否成功(通过检测对应的界面元素)以及给与合适的返回值
# 判断是否进入到完善信息界面
        try:
            self.driver.find_element(*self.perfectinfomation_school)
        except NoSuchElementException:
            logger.error('register Fail!')
            self.getScreenshot('register Fail')
            return False
        else:
            self.add_register_info()
            # 注册结果判断
            if self.check_register_status():
                return True
            else:
                return False

其中,check_register_status()方法实现如下:

    def check_register_status(self):
        self.check_Ad()
        logger.info('====check_registerStatus====')

        try:
            self.driver.find_element(*self.button_myself).click()
            self.driver.find_element(*self.username)
        except NoSuchElementException:
            logger.error('register Fail!')
            self.getScreenshot('register_Fail')
            return False
        else:
            logger.info('register success!')
            self.getScreenshot('register_success')
            return True
  1. test_run里用于执行测试用例并生成测试报告
import sys     #此3行代码,是为了用bat脚本运行此代码时避免出现找不到import的模块的错误。因为cmd是在工程目录来运行,import模块时会首先在python PATH的环境变量中查找
path = 'C:\DISK_D\Python learning\Coding Work\Appium auto test\level_4'
sys.path.append(path)

from BSTestRunner import BSTestRunner
import unittest
import time
from common.desired_caps import logger



#指定测试用例和测试报告的路径
test_dir = '../test_case'
report_dir = '../reports'

#加载测试用例
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_register.py')


#定义报告的文件格式和名称
now = time.strftime("%Y-%m-%d %H_%M_%S")
report_name = report_dir + '/' + now + ' test_report.html'

#运行用例并生成测试报告
with open(report_name, 'wb') as f:
    runner = BSTestRunner(stream=f, title="Kyb Test Report", description="kyb Andriod app Test Report")
    logger.info("start run testcase...")
    runner.run(discover)

  1. 执行测试的bat脚本

@echo off
c:
cd C:\DISK_D\Python learning\Coding Work\Appium auto test\level_4\test_run
C:\Users\Evan\AppData\Local\Programs\Python\Python38\python.exe run_test.py
pause


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值