PyCharm中Airtest测试脚本批量执行设计思路

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

在之前的文章中,我们探讨了如何利用 .bat 文件(批处理文件)来批量运行 AirTest 脚本。这种方法的主要优势在于:

  • 简化操作流程:通过一个简单的命令即可启动多个测试脚本

  • 提高任务的可重复性:便于定期或按需重复执行相同的测试套件。

  • 方便环境配置与错误处理:能够统一管理测试环境设置并集中处理可能出现的异常情况。

  • 一定程度的自动化与日志记录支持:有助于实现测试过程的自动化,并记录测试结果以便后续分析。

尽管如此,批处理文件也存在一些局限性,例如功能受限、调试难度大、执行效率低等。此外,在不同操作系统之间使用时可能会遇到兼容性和维护成本问题。因此,在决定是否采用 .bat 文件时,需要根据实际应用场景和技术要求权衡利弊。

对于少量简单用例或不太复杂的调度场景,使用 .bat 文件可以提供一种快速便捷的解决方案。然而,在面对大量测试用例或更复杂的场景时,则可能需要采取更高级别的封装策略来优化执行流程。

接下来,本文将介绍批量执行 Airtest 测试脚本的设计思路。

设计思路

1、将测试脚本的实际业务代码都封装到脚本执行方法中

2、然后创建一个主控脚本,该脚本引入所有测试脚本,并按需调用它们的脚本执行方法

测试用例层级结构

为了更好地组织和管理测试用例,我们以打开百度网站为例,设计了三个测试用例脚本,并将它们划分为两个模块:页面加载模块和搜索模块。下面是具体的测试用例及其分层结构:

页面加载模块
  • 测试用例1.1 (case_point_01_01):验证百度首页是否能正常加载并检查样式

    • 步骤

    1. 打开浏览器。

    2. 输入网址 https://www.baidu.com 并访问。

    3. 等待页面完全加载。

    4. 检查页面样式是否符合预期。

    • 预期结果:百度首页成功加载,页面样式正确,可以看到搜索框和其他导航元素。

  • 测试用例1.2 (case_point_01_02):验证登录功能模块是否正常

    • 步骤

    1. 打开浏览器。

    2. 输入网址 https://www.baidu.com 并访问。

    3. 查找并点击登录按钮。

    4. 输入正确的用户名和密码。

    5. 点击登录。

    • 预期结果:用户成功登录,页面显示登录后的状态。

搜索模块
  • 测试用例2.1 (case_point_02_01):验证搜索功能是否有效

    • 步骤

    1. 打开浏览器。

    2. 输入网址 https://www.baidu.com 并访问。

    3. 在搜索框中输入关键词“天气”。

    4. 按下回车键或点击搜索按钮。

    5. 检查搜索结果页面。

    • 预期结果:搜索结果页面显示与“天气”相关的网页链接和信息。

通过这种分层管理的方式,我们可以更有效地组织测试用例,确保每个模块的功能都能得到充分的测试,同时也有利于后期维护和扩展。

目录结构如下

测试用例1:case_point_01_01

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "gmluo"

  3. from airtest.core.api import *

  4. from airtest.cli.parser import cli_setup

  5. from selenium import webdriver

  6. from selenium.webdriver.common.keys import Keys

  7. from airtest_selenium.proxy import WebChrome

  8. from airtest.report.report import simple_report

  9. def run_case_script():

  10. if not cli_setup():

  11. auto_setup(__file__, logdir=True, devices=["Windows:///", ])

  12. driver = WebChrome(executable_path='D:/programs/chromedriver-win64/chromedriver.exe')

  13. driver.implicitly_wait(20)

  14. driver.maximize_window()

  15. driver.get("https://www.baidu.com/")

  16. driver.assert_template(Template(r"tpl1723541903681.png", record_pos=(0.06, -0.271), resolution=(2710, 2080)),

  17. "Please fill in the test point.")

  18. # 退出当前页面

  19. driver.close()

  20. # generate html report

  21. simple_report(__file__, logpath=True)

  22. # run_case_script()

测试用例2:case_point_01_02

 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "gmluo"

  3. from airtest.core.api import *

  4. from airtest.cli.parser import cli_setup

  5. from selenium import webdriver

  6. from selenium.webdriver.common.keys import Keys

  7. from airtest_selenium.proxy import WebChrome

  8. from airtest.report.report import simple_report

  9. def run_case_script():

  10. if not cli_setup():

  11. auto_setup(__file__, logdir=True, devices=["Windows:///", ])

  12. driver = WebChrome(executable_path='D:/programs/chromedriver-win64/chromedriver.exe')

  13. driver.implicitly_wait(20)

  14. driver.maximize_window()

  15. driver.get("https://www.baidu.com/")

  16. driver.assert_template(Template(r"tpl1723543008762.png", record_pos=(0.324, -0.044), resolution=(2710, 2080)),

  17. "Please fill in the test point.")

  18. driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[4]/a").click()

  19. sleep(1.0)

  20. driver.assert_template(Template(r"tpl1723602062748.png", record_pos=(0.056, -0.176), resolution=(2710, 2080)),

  21. "Please fill in the test point.")

  22. # 退出当前页面

  23. driver.close()

  24. # generate html report

  25. simple_report(__file__, logpath=True)

  26. # run_case_script()

测试用例3:case_point_02_01
 
  1. # -*- encoding=utf8 -*-

  2. __author__ = "gmluo"

  3. from airtest.core.api import *

  4. from airtest.cli.parser import cli_setup

  5. from selenium import webdriver

  6. from selenium.webdriver.common.keys import Keys

  7. from airtest_selenium.proxy import WebChrome

  8. from airtest.report.report import simple_report

  9. def run_case_script():

  10. if not cli_setup():

  11. auto_setup(__file__, logdir=True, devices=["Windows:///", ])

  12. driver = WebChrome(executable_path='D:/programs/chromedriver-win64/chromedriver.exe')

  13. driver.implicitly_wait(20)

  14. driver.maximize_window()

  15. driver.get("https://www.baidu.com/")

  16. driver.find_element_by_id("kw").send_keys("UI自动化测试")

  17. sleep(1.0)

  18. driver.assert_template(Template(r"tpl1723543454517.png", record_pos=(-0.046, -0.334), resolution=(2710, 2080)),

  19. "Please fill in the test point.")

  20. # 退出当前页面

  21. driver.close()

  22. # generate html report

  23. simple_report(__file__, logpath=True)

  24. # run_case_script()

测试脚本批量执行

通过在py文件中,引入相应的测试脚本模块,然后通过执行每个脚本下对应的执行函数,就可以在一个py文件中实现多个测试脚本的批量运行

批量脚本执行:基础方法
 
  1. # !/usr/bin/python

  2. # -*- coding: utf-8 -*-

  3. # @Author : gmluo1988

  4. # @Software : PyCharm

  5. # @File : batch_runner_method_01.py

  6. # @Time : 2024/8/14 9:37

  7. from case_script_method_01.module_01.case_point_01_01 import case_point_01_01

  8. from case_script_method_01.module_01.case_point_01_02 import case_point_01_02

  9. from case_script_method_01.module_02.case_point_02_01 import case_point_02_01

  10. case_point_01_01.run_case_script()

  11. case_point_01_02.run_case_script()

  12. case_point_02_01.run_case_script()

也可以将不同脚本执行代码封装到一个方法函数中,在需要执行的时候加入对应的代码行即可

 
  1. from case_script_method_01.module_01.case_point_01_01 import case_point_01_01

  2. from case_script_method_01.module_01.case_point_01_02 import case_point_01_02

  3. from case_script_method_01.module_02.case_point_02_01 import case_point_02_01

  4. # case_point_01_01.run_case_script()

  5. # case_point_01_02.run_case_script()

  6. # case_point_02_01.run_case_script()

  7. def run_cases():

  8. case_point_01_01.run_case_script()

  9. case_point_01_02.run_case_script()

  10. case_point_02_01.run_case_script()

  11. run_cases()

批量执行效果

总结

通过将测试脚本的实际业务代码都封装到脚本执行方法中,在主控脚本,该脚本引入所有测试脚本,并按需调用它们的脚本执行方法,即能够简单实现Pycharm中批量执行AirTest脚本的功能。

 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值