csdn最详细最牛逼的 阿里最新app自动化测试---自动化测试框架搭建_阿里前端自动化

import time
from appium.webdriver.webdriver import WebDriver
from selenium.common.exceptions import NoSuchElementException

class BasePage:
def init(self,driver:WebDriver):
self.driver = driver

获取toast的文本值

@property
def result_text(self):
try:
toast = self.driver.find_element_by_xpath(‘//android.widget.Toast’)
return toast.text
except NoSuchElementException:
return “找不到这个元素,请检查自己的自动化代码”
pom/loginPage.py

“”"
登陆页面
“”"
import time

from appium.webdriver.webdriver import WebDriver

from pom.basePage import BasePage

class LoginPage(BasePage):

初始化类的时候,打开登陆页面

def init(self,driver:WebDriver):
super(LoginPage,self).init(driver)

判断是否是登陆页面

current_activity = self.driver.current_activity
if “.ui.activity.LoginActivity” in current_activity:
pass
else:

不是登陆页面,则调用方法,打开登陆页面

self.__go_login_page()

导航到loginPage(登陆页面),定义一个私有的方法

def __go_login_page(self):

清空app的登陆状态(如果已经登陆,则去掉登陆状态)

self.driver.reset()

打开首页

self.driver.start_activity(app_package=‘org.cnodejs.android.md’,app_activity=‘.ui.activity.MainActivity’)

toggle_but = self.driver.find_element_by_android_uiautomator(‘resourceId(“org.cnodejs.android.md:id/toolbar”).childSelector(new UiSelector().className(“android.widget.ImageButton”))’)
toggle_but.click()
time.sleep(1)

点击头像,去登陆页面

avatar = self.driver.find_element_by_android_uiautomator(‘text(“点击头像登录”).resourceId(“org.cnodejs.android.md:id/tv_login_name”)’)
avatar.click()

使用token的方式进行登录

def with_token_login(self,token):
self.driver.find_element_by_id(‘org.cnodejs.android.md:id/edt_access_token’).send_keys(token)
loginbtn = self.driver.find_element_by_android_uiautomator(‘text(“登录”).resourceId(“org.cnodejs.android.md:id/btn_login”)’)

点击登陆

loginbtn.click()

登陆失败的断言

@property
def with_token_failed_text(self):

1. 截图

ele = self.driver.find_element_by_id(‘org.cnodejs.android.md:id/edt_access_token’)
png = ele.screenshot_as_base64

2. TODO 调用 ocr 图片识别 将图片中文字识别出来

return “”

扫码登陆

def with_code_login(self):
pass

使用github登陆

def with_github_login(self):
pass
testcases/test_user.py

from pom.loginPage import LoginPage

登陆的测试用例

使用conftest.py 中定义的 driver

def test_login(driver):

打开登录页面

loginpage = LoginPage(driver)

使用token进行登录

loginpage.with_token_login(‘d1563473-1f0d-4307-9774-6c2ff49c93ab’)

登陆成功,验证totas文本值

result = loginpage.result_text
assert result == “登录成功”

启动appium , 执行  pytest testcases\test_user.py -s -v ,查看运行结果:

(登陆成功)

(登陆失败)

下面以登录后发帖场景为例,编写自动化:

pom/homePage.py

“”"
首页
“”"
from pom.basePage import BasePage
from pom.createTopicPage import CreateTopicPage

class HomePage(BasePage):

def init(self,driver):
super(HomePage,self).init(driver)

判断一下,是否是首页

if ‘.ui.activity.MainActivity’ in self.driver.current_activity:
pass
else:
self.__go_home_page()

打开首页

def __go_home_page(self):
self.driver.start_activity(app_activity=‘.ui.activity.LaunchActivity’)

去发帖页面

def go_create_topic(self):

判断是否已经到达创建话题页面

while not ‘.ui.activity.CreateTopicActivity’ in self.driver.current_activity:

再重新点击一下

create_btn = self.driver.find_element_by_android_uiautomator(
‘.resourceId(“org.cnodejs.android.md:id/fab_create_topic”)’)
create_btn.click()

return CreateTopicPage(self.driver)
pom/createTopicPage.py

“”"
发帖页面
“”"
from pom.basePage import BasePage

class CreateTopicPage(BasePage):

发布话题

def create_new_topic(self,tab,title,content):

选择类型

spinner = self.driver.find_element_by_android_uiautomator(‘.resourceId(“org.cnodejs.android.md:id/spn_tab”)’)
spinner.click()
tab_selcotor = f’.resourceId(“android:id/text1”).text(“{tab}”)’
self.driver.find_element_by_android_uiautomator(tab_selcotor).click()

输入标题

title_content = self.driver.find_element_by_android_uiautomator(
‘resourceId(“org.cnodejs.android.md:id/edt_title”)’)
title_content.send_keys(title)

输入内容

content_area = self.driver.find_element_by_android_uiautomator(
‘resourceId(“org.cnodejs.android.md:id/edt_content”)’)
content_area.send_keys(content)

点击发送

send_btn = self.driver.find_element_by_android_uiautomator(
‘resourceId(“org.cnodejs.android.md:id/action_send”)’)
send_btn.click()
testcases/test_topics.py

from pom.homePage import HomePage
from pom.loginPage import LoginPage

发帖的测试用例

def test_create_topic(driver):
loginpage = LoginPage(driver)

用户登录成功

loginpage.with_token_login(‘d1563473-1f0d-4307-9774-6c2ff49c93ab’)

首页打开

hp = HomePage(driver)

进入创建话题页面

create_page = hp.go_create_topic()

create_page.create_new_topic(tab=‘分享’,title=‘123’,content=‘哈哈哈哈哈哈’)
result = create_page.result_text

根据发帖结果做断言

assert result == “标题要求10字以上”

启动appium , 执行  pytest testcases\test_topics.py -s -v  ,查看运行结果:

也可以执行 pytest,查看登陆,和发帖2个测试用例的执行结果:

**3.**Excel数据驱动

testdata/data.xlsx

utils/file_handler.py

“”"
登陆测试用例的数据驱动化测试
“”"
import pytest

from pom.loginPage import LoginPage
from utils.file_handler import FileHandler

fl = FileHandler()

从Excel文件中获取数据

data = fl.get_data_by_sheet(‘用户登录’)

class TestDdtLogin:

@pytest.mark.parametrize(‘token,status,expect_val’,data)
def test_login(self,driver,token,status,expect_val):

打开登录页面

loginpage = LoginPage(driver)

使用token进行登录

loginpage.with_token_login(token)
if status == ‘成功’:

登录成功, 验证toast的文本值为登录成功

result = loginpage.result_text
assert result == expect_val
if status == “失败”:
result = loginpage.with_token_failed_text
assert result == expect_val
testcases/test_ddt/test_ddt_login.py

“”"
登陆测试用例的数据驱动化测试
“”"
import pytest

from pom.loginPage import LoginPage
from utils.file_handler import FileHandler

fl = FileHandler()

从Excel文件中获取数据

data = fl.get_data_by_sheet(‘用户登录’)

class TestDdtLogin:

@pytest.mark.parametrize(‘token,status,expect_val’,data)
def test_login(self,driver,token,status,expect_val):

打开登录页面

loginpage = LoginPage(driver)

使用token进行登录

loginpage.with_token_login(token)
if status == ‘成功’:

登录成功, 验证toast的文本值为登录成功

result = loginpage.result_text
assert result == expect_val
if status == “失败”:
result = loginpage.with_token_failed_text
assert result == expect_val

启动appium , 执行  pytest testcases\test_ddt\test_ddt_login.py -s -v  ,查看运行结果:

4.测试报告

pytest-html pytest-html · PyPI

pytest-allure allure-pytest · PyPI

测试报告一:pytest-html

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-QdtiWtyx-1712958606858)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值