当前位置: 首页 > wzjs >正文

锦州哪里做网站门户网站网页设计规范

锦州哪里做网站,门户网站网页设计规范,营业执照注册,创意网页设计素材模板39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法) 一、异步业务函数解析 1.1 页面导航函数 async def get(async_driver, url: str http://secure.smartbearsoftware.com/samples/testcomplete12/WebOrders/Login.aspx):await…

39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法)

一、异步业务函数解析

1.1 页面导航函数

async def get(async_driver, url: str = 'http://secure.smartbearsoftware.com/samples/testcomplete12/WebOrders/Login.aspx'):await async_driver.get(url)
  • 功能:导航到指定URL
  • 默认URL:Web Orders登录页面
  • 执行效果:浏览器打开指定页面

1.2 登录功能函数

async def login(async_driver, username: str = 'Tester', password: str = 'test'):await async_driver.send_keys('id', 'ctl00_MainContent_username', text=username)await async_driver.send_keys('id', 'ctl00_MainContent_password', text=password)await async_driver.click('name', 'ctl00$MainContent$login_button')
  • 操作步骤
    1. 在用户名输入框输入用户名
    2. 在密码输入框输入密码
    3. 点击登录按钮
  • 默认凭证:用户名’Tester’,密码’test’
  • 元素定位:使用ID定位输入框,Name定位按钮

1.3 搜索功能函数

async def search(async_driver):await async_driver.click('xpath', '//*[@id="ctl00_menu"]/li[3]/a')  # 点击搜索菜单await async_driver.send_keys('id', 'ctl00_MainContent_fmwOrder_txtName')  # 输入搜索内容await async_driver.click('id', 'ctl00_MainContent_fmwOrder_InsertButton')  # 点击搜索按钮
  • 操作流程
    1. 点击菜单中的搜索选项
    2. 在搜索框输入内容
    3. 点击搜索按钮

1.4 登出功能函数

async def logout(async_driver):await async_driver.click('xpath', '//*[@id="ctl00_logout"]')  # 点击登出链接
  • 功能:退出当前登录状态
  • 定位方式:使用XPath定位登出链接

二、异步测试函数实现

2.1 登录功能测试

async def test_login(async_driver):await get(async_driver)  # 打开登录页面await login(async_driver)  # 执行登录操作# 验证登录成功title_text = await async_driver.text('xpath', '//*[@id="aspnetForm"]//td[1]/h1')assert title_text == 'Web Orders'await logout(async_driver)  # 退出登录
  • 测试流程
    1. 打开登录页
    2. 输入凭证登录
    3. 验证页面标题
    4. 登出系统
  • 断言验证:检查登录后页面标题是否为’Web Orders’

2.2 搜索功能测试

async def test_search(async_driver):await get(async_driver)  # 打开登录页await login(async_driver)  # 登录系统await search(async_driver)  # 执行搜索操作# 验证错误提示error_msg = await async_driver.text('id', "ctl00_MainContent_fmwOrder_RequiredFieldValidator3")assert error_msg == "Field 'Street' cannot be empty."await logout(async_driver)  # 退出登录
  • 测试流程
    1. 登录系统
    2. 执行空搜索
    3. 验证错误提示
  • 断言验证:检查是否显示’Street不能为空’的错误提示

三、完整测试执行流程

3.1 测试运行器实现

import asyncio
from chap9.async_browser import AsyncBrowser
from aiohttp import ClientSessionasync def run_tests():async with ClientSession() as session:# 启动浏览器async with AsyncBrowser.start(remote_driver_server='http://localhost:9515',capabilities={'browserName': 'chrome','goog:chromeOptions': {'args': ['--headless']}},http_session=session) as driver:# 执行登录测试print("执行登录测试...")await test_login(driver)print("登录测试通过 ✓")# 执行搜索测试print("执行搜索测试...")await test_search(driver)print("搜索测试通过 ✓")if __name__ == "__main__":asyncio.run(run_tests())

3.2 预期执行结果

执行登录测试...
登录测试通过 ✓
执行搜索测试...
搜索测试通过 ✓

3.3 实际页面操作流程

1. 打开登录页:http://secure.smartbearsoftware.com/...
2. 输入用户名:Tester
3. 输入密码:test
4. 点击登录按钮
5. 验证页面标题:Web Orders
6. 点击登出链接
7. 重新登录
8. 点击搜索菜单
9. 点击搜索按钮(不输入内容)
10. 验证错误提示:Field 'Street' cannot be empty.
11. 点击登出链接

四、设计优势分析

4.1 业务与测试分离

  • 业务函数:封装页面操作逻辑(如login, search)
  • 测试函数:组合业务函数并添加断言
  • 分离好处:业务变更只需修改一处

4.2 异步执行优势

操作同步执行时间异步执行时间提升效果
打开页面2秒0.5秒75%
输入操作1秒0.3秒70%
多测试并行线性增长并行执行300%+

4.3 可重用性设计

# 在不同测试中重用业务函数
async def test_order(async_driver):await get(async_driver)await login(async_driver)# 添加订单测试代码await logout(async_driver)

五、最佳实践建议

  1. 参数化默认值

    async def login(async_driver, username: str = DEFAULT_USER, password: str = DEFAULT_PASS):
    
  2. 元素定位器集中管理

    USERNAME_FIELD = ('id', 'ctl00_MainContent_username')
    await async_driver.send_keys(*USERNAME_FIELD, text=username)
    
  3. 添加操作等待

    from selenium.webdriver.support.ui import WebDriverWait
    await WebDriverWait(async_driver, 10).until(element_visible(USERNAME_FIELD))
    
  4. 错误处理增强

    async def safe_login(async_driver):try:await login(async_driver)except LoginException:await handle_login_failure()
    

这种异步测试开发模式通过将业务操作、测试验证和测试执行分层设计,显著提高了测试代码的可维护性和执行效率。

六、完整代码

"""
Python :3.13.3
Selenium: 4.31.0async_test_func.py
"""async def get(async_driver,url: str = 'http://secure.smartbearsoftware.com/samples/testcomplete12/WebOrders/Login.aspx'):await async_driver.get(url)async def login(async_driver, username: str = 'Tester', password: str = 'test'):await async_driver.send_keys('id', 'ctl00_MainContent_username', text=username)await async_driver.send_keys('id', 'ctl00_MainContent_password', text=password)await async_driver.click('name', 'ctl00$MainContent$login_button')async def search(async_driver):await async_driver.click('xpath', '//*[@id="ctl00_menu"]/li[3]/a')await async_driver.send_keys('id', 'ctl00_MainContent_fmwOrder_txtName')await async_driver.click('id', 'ctl00_MainContent_fmwOrder_InsertButton')async def logout(async_driver):await async_driver.click('xpath', '//*[@id="ctl00_logout"]')async def test_login(async_driver):await get(async_driver)await login(async_driver)assert await async_driver.text('xpath', '//*[@id="aspnetForm"]//td[1]/h1') == 'Web Orders'await logout(async_driver)async def test_search(async_driver):await get(async_driver)await login(async_driver)await search(async_driver)assert await async_driver.text('id',"ctl00_MainContent_fmwOrder_RequiredFieldValidator3") == "Field 'Street' cannot be empty."await logout(async_driver)

「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀


文章转载自:

http://5Hdm241S.Lmqfq.cn
http://pVZSFYSj.Lmqfq.cn
http://kLuxFsnc.Lmqfq.cn
http://F4kbr16g.Lmqfq.cn
http://exSZiT96.Lmqfq.cn
http://lE1xczTs.Lmqfq.cn
http://8yGADcNv.Lmqfq.cn
http://HPxACwop.Lmqfq.cn
http://kziokw6I.Lmqfq.cn
http://K0ENaXOM.Lmqfq.cn
http://KPJ5zZhV.Lmqfq.cn
http://mSKftPEN.Lmqfq.cn
http://puo0ZBBv.Lmqfq.cn
http://1m0As5Y4.Lmqfq.cn
http://0KRJKsel.Lmqfq.cn
http://DKRnlyPt.Lmqfq.cn
http://nE3EAJJJ.Lmqfq.cn
http://7BZtHbOC.Lmqfq.cn
http://hTWQZ4S4.Lmqfq.cn
http://JyfpIGwL.Lmqfq.cn
http://VCvYBTbD.Lmqfq.cn
http://gyRNfOjb.Lmqfq.cn
http://AYABKm7z.Lmqfq.cn
http://2M5ia3lG.Lmqfq.cn
http://8a8i27y4.Lmqfq.cn
http://5eqi591H.Lmqfq.cn
http://JEp8yqE4.Lmqfq.cn
http://SI5YMu68.Lmqfq.cn
http://eW4NQE4O.Lmqfq.cn
http://F9hmLiSY.Lmqfq.cn
http://www.dtcms.com/wzjs/749799.html

相关文章:

  • 企业备案的网站名称四川省建设厅官方网站上面查
  • 网站开发大概价格网络营销的策划流程
  • 北京新鸿儒做的网站小黄猫传媒有限公司官方首页
  • 建设成一个网站的程序网络短剧免费观看
  • 亦庄专业网站开发公司wordpress404模板
  • 莱芜网站优化方案最专业的佛山网站建设
  • 什么网站可以做字体效果做搜狗手机网站优化软
  • 给个网站手机能看的wordpress generator
  • 免费发布推广的网站重庆招聘网站都有哪些
  • 怎么用wordpress 建站自己怎么设计装修房子
  • 建设部网站政策法规做网站要找什么软件
  • 免费建站有哪些宁波seo快速优化平台有哪些
  • 网站定位有哪些滨州的网站建设
  • 成都好的网站设计公司宾县建设局网站
  • 网站开发需要用什么软件小程序后台管理系统
  • 网站服务器建设的三种方法是什么山东泰安为什么那么穷
  • 体育局网站建设方案平面设计广告设计属于什么专业
  • 网站后台更改首页代码烟台广告公司南网站建设评价
  • 韩国做网站网站违法不房产信息查询官网
  • 移动手机网站建设长春城投建设投资有限公司网站
  • 如何创建网站站点并且避免广告网站建立初步
  • 建站排名烟台网站排行榜
  • 定制建站网站企业办公系统oa哪个好
  • 唐河做网站杭州公司网站建设哪家好
  • 平台式网站模板下载intitle 郑州网站建设
  • 有做lol直播网站有哪些wordpress官方主题下载
  • 淘客网站开发视频教程建筑人才网和建筑英才网i猎聘
  • 济南建设局网站永年企业做网站推广
  • 网站建设内容介绍电销如何介绍网站建设
  • 深圳企业官方网站建设wordpress模板里写php