老先生111 2024-07-22 11:38 采纳率: 0%
浏览 0
已结题

测试 测试 airtest

用airtest写一个测试(运用airtest中的api):购买使用积分购卖后,点击【支出】查看积分流水,积分流水新增扣除购买商品所需积分的流水,并确认截图的积分流水为本次支付的积分流水,流水为动态的

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-07-22 11:38
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    要使用 Airtest 框架编写一个自动化测试脚本,你可以遵循以下步骤:

    1. 学习 Airtest 框架及其 API

    首先,你需要熟悉 Airtest 框架的基本用法和 API。Airtest 是一个跨平台的 UI 自动化测试框架,支持 Android、iOS、Windows 应用以及游戏的自动化测试。

    2. 编写测试脚本

    你需要编写一个 Python 脚本,模拟用户登录并使用积分购买商品的流程。以下是一个基本的脚本框架:

    from airtest.core.api import *
    
    def test_buy_product_with_points():
        # 启动应用
        start_app("com.example.app")
        
        # 登录
        login()
    
        # 选择商品
        choose_product()
    
        # 使用积分购买
        buy_with_points()
    
        # 点击【支出】查看积分流水
        click(Template(r"img_path", record_pos=(0.1, 0.2)))
    
        # 截图并保存积分流水
        screenshot("points_flow.png")
    
        # 验证积分流水
        verify_points_flow()
    
    def login():
        # 模拟登录操作
        pass
    
    def choose_product():
        # 模拟选择商品操作
        pass
    
    def buy_with_points():
        # 模拟使用积分购买操作
        pass
    
    def verify_points_flow():
        # 解析截图中的积分流水数据
        # 检查是否有扣除相应积分的记录
        pass
    
    if __name__ == "__main__":
        test_buy_product_with_points()
    

    3. 模拟用户操作

    你需要在脚本中添加模拟用户操作的函数,比如登录、选择商品、使用积分购买等。

    4. 点击【支出】按钮查看积分流水

    在脚本中添加点击【支出】按钮的命令,可以使用 Airtest 的 click 函数。你需要根据实际应用的 UI 元素来定位这个按钮。

    5. 截图并保存积分流水

    使用 Airtest 的 screenshot 函数来截图积分流水页面,并保存到本地。

    6. 验证积分流水

    你需要编写代码来解析截图中的积分流水数据,并检查是否有扣除相应积分的记录。这可能需要一些图像处理或文本识别技术。

    7. 处理积分流水的动态变化

    由于积分流水是动态的,你需要编写代码来处理这种动态变化。这可能涉及到定时截图和比较,或者使用更高级的图像识别技术来识别变化。

    示例代码

    以下是一个更具体的示例代码,展示如何使用 Airtest 进行自动化测试:

    from airtest.core.api import *
    from airtest.core.error import AirtestError
    import cv2
    import numpy as np
    
    def login():
        click(Template(r"img_path", record_pos=(0.1, 0.2)))
        wait(5)
    
    def choose_product():
        click(Template(r"product_img_path", record_pos=(0.3, 0.4)))
        wait(5)
    
    def buy_with_points():
        click(Template(r"buy_button_path", record_pos=(0.5, 0.6)))
        wait(5)
    
    def click_spending():
        click(Template(r"spending_button_path", record_pos=(0.7, 0.8)))
        wait(5)
    
    def screenshot_and_verify():
        screenshot("points_flow.png")
        img = cv2.imread("points_flow.png")
        _, gray = cv2.threshold(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), 0, 255, cv2.THRESH_BINARY)
        text = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
        text = max(text, key=len)[0]
        
        # 假设积分流水的文本包含"积分"二字
        if "积分" in text:
            print("积分流水验证成功")
        else:
            raise AirtestError("积分流水验证失败")
    
    def test_buy_product_with_points():
        start_app("com.example.app")
        login()
        choose_product()
        buy_with_points()
        click_spending()
        screenshot_and_verify()
    
    if __name__ == "__main__":
        test_buy_product_with_points()
    

    注意事项

    • 确保你有足够的权限来访问和操作目标应用。
    • 根据实际应用的 UI 元素调整模板路径和坐标。
    • 考虑使用更高级的图像处理或文本识别技术来提高测试的准确性和鲁棒性。
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月22日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?