UI自动化测试实战--- app订单、web发货(9)

本文介绍了使用Python+Selenium+Appium实现UI自动化测试的实战项目,涵盖App下单和Web发货业务。通过创建项目结构、配置文件、编写测试脚本,实现了自动化测试流程,并涉及持续集成通过Jenkins执行测试。
摘要由CSDN通过智能技术生成

目标

1.掌握使用Selenium实现批量企业级执行测试用例
2.熟悉自动化测试的流程
3.能够对Web项目和APP项目实现自动化测试
4、掌握如何在Jenkins中配置并运行测试脚本 - 持续集成 CI (Continuous integration)  / CD

项目实施

要实现的业务:1、app下单流程   2、web发货业务

实现技术:python+appium+selenium + unittest

结构实现:po模式 +日志+数据驱动+报告

执行方式:持续集成 

自动化测试流程 - 熟悉

1、需求分析

2、挑选适合做自动化测试的功能

3、设计测试用例

4、搭建测试环境 【可选】

5、设计自动化测试项目的架构 【可选】

6、编写代码

7、执行测试用例

8、生成测试报告并分析结果

编写自动化测试用例的原则:

  1. 自动化测试用例一般只实现核心业务流程或者重复执行率较高的功能
  2. 自动化测试用例的选择一般以“正向”逻辑的验证为主
  3. 不是所有手工用例都可以使用自动化测试用例来执行
  4. 尽量减少多个脚本之间的依赖
  5. 自动化测试用例执行完毕之后,一般需要回归原点

项目实施UI自动化测试的时机: 一般情况下在手工测试完成之后     版本或项目功能趋于稳定

项目需要实施UI自动化测试需要满足以下前置条件:

  1. 项目需要回归测试 (甲⽅⾃营项⽬、⾦融、电商)
  2. 项目需要实现自动化的功能模块需求变更不频繁 :稳定的模块
  3. 项目周期要长:(甲⽅⾃营项⽬、6个⽉以上的外包)

项目依赖包

1、安装Selenium 包

2、安装 Appium-Python-Client 包

3、移动端自动化环境搭建

UI自动化测试--- 移动端自动化环境搭建 - (6)

4、安装 parameterized  参数化

5、安装  HTMLTestReport  生成测试报告

结构搭建

1、新建项目   

项目名称:uiAutoTestTpshop

2、创建目录结构

                     

base:所有page页面公共方法

data:测试数据存储文件

img:存放截图图片文件

log:日志

page:页面对象

report:测试报告

script:测试脚本

config.py:配置文件

run_suite.py:运行套件

utils.py:工具类

3、实现config.py 配置文件

import os
# web后台url
HOST = 'http://hmshop-test.itheima.net/index.php/Admin/Admin/login'
# 项目路径
DIR_PATH = os.path.dirname(__file__)
print(DIR_PATH)

4、实现base.py文件

import os
import time
from selenium.webdriver.support.wait import WebDriverWait

from config import DIR_PATH


class Base:
    # 初始化方法
    def __init__(self, driver):
        self.driver = driver

    # 查找元素方法
    def base_find(self, loc, timeout=10, poll_frequency=0.5):
        return WebDriverWait(self.driver, timeout, poll_frequency).until(lambda x: x.find_element(*loc))

    # 点击方法
    def base_click(self, loc):
        self.base_find(loc).click()

    # 输入方法
    def base_input(self, loc, value):
        # 获取元素
        el = self.base_find(loc)
        # 清空
        el.clear()
        # 输入
        el.send_keys(value)

    # 获取文本方法
    def base_get_text(self, loc):
        return self.base_find(loc).text

    # 截图方法
    def base_screenshot_img(self):
        img_path = DIR_PATH + os.sep + 'img' + os.sep + '{}.png'.format(time.strftime('%Y%m%d %H%M%S'))
        return self.driver.get_screen_as_file(img_path)

5、登录业务结构搭建

app 登录page结构搭建

"""
   将操作步骤封装 + 组合业务方法
"""


class PageAppLogin:

    # 1、点击 我的
    def page_app_click_me(self):
        pass

    # 2、点击 登录头像
    def page_app_click_login_link(self):
        pass

    # 3、输入用户名
    def page_app_input_username(self):
        pass

    # 4、输入密码
    def page_app_input_password(self):
        pass

    # 5、点击勾选协议
    def page_app_click_protocol(self):
        pass

    # 6、点击登录按钮
    def page_app_click_login_btn(self):
        pass

    # 7、获取登录昵称
    def page_app_get_login_nickname(self):
        pass

    # 组合业务
    def page_app_login(self):
        pass

2、登录配置信息整理    page--->    __init__文件

from selenium.webdriver.common.by import By

"""
   一、以下为app登录模块配置信息
"""
# 我的
app_login_me = By.XPATH, "//*[@text='我的']"
# 登录头像
app_login_icon = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/head_img']"
# 用户名
app_username = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/mobile_et']"
# 密码
app_pwd = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/pwd_et']"
# 协议
app_pro = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/agree_btn']"
# 登录按钮
app_login_btn = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/login_tv']"
# 登录昵称
app_nickname = By.XPATH, "//*[@resource-id='com.tpshop.malls:id/nick_name_tv']"

3、登录page页面实现

page_app_login.py 文件实现

"""
   将操作步骤封装 + 组合业务方法
"""
from time import sleep
import page
from base.base import Base


class PageAppLogin(Base):

    # 1、点击 我的
    def page_app_click_me(self):
        self.base_click(page.app_login_me)

    # 2、点击 登录头像
    def page_app_click_login_link(self):
        self.base_click(page.app_login_icon)

    # 3、输入用户名
    def page_app_input_username(self, username):
        self.base_input(page.app_username, username)

    # 4、输入密码
    def page_app_input_password(self, pwd):
        self.base_input(page.app_pwd, pwd)

    # 5、点击勾选协议
    def page_app_click_protocol(self):
        self.base_click(page.app_pro)

    # 6、点击登录按钮
    def page_app_click_login_btn(self):
        self.base_click(page.app_login_btn)

    # 7、获取登录昵称
    def page_app_get_login_nickname(self):
        sleep(2)
        return self.base_get_text(page.app_nickname)

    # 组合业务
    def page_app_login(self, username=15826331234, pwd=123456):
        self.page_app_click_me()
        self.page_app_click_login_link()
        self.page_app_input_username(username)
        self.page_app_input_password(pwd)
        self.page_app_click_protocol()
        self.page_app_click_login_btn()

# 提示:获取昵称需要加个强制等待时间   sleep(2)

原因:查找到元素之后,页面内容还没刷新,没有显示出来,可能会出现  昵称为 “优惠券”的bug

4、登录测试脚本实现     

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值