Unitest框架搭建自动化桌面应用程序启动

Unitest+slenium+appium+winappdriver:自动化桌面应用程序启动

三层框架:

  1. 逻辑层
  2. 测试层
  3. 数据层

整体:

  1. 编写桌面程序UI自动化脚本
  2. 结合业务加入断言判断结果
  3. 依据结果生成测试报告和文档

框架搭建文件结构

  1. Page:基本功能的封装
  2. temp:暂存文件
  3. testCase:测试项目用例,断言用例
  4. testSuit:项目运用场景实现
  5. report:存放html文件,输出测试报告
  6. runall:调用方法运行所有用例
  7. main:主函数,直接启动项目
  8. config:配置驱动文件
    下图整体框架:
    在这里插入图片描述

python使用库:

  1. WinAppDriver:桌面应用程序驱动,用来控制桌面应用程序启动
  2. Selenium:定位元素,进行点击输入等操作
  3. Appium:监听winappdriver启动的端口
    PS:要注意版本的兼容性!

定位元素文件Inspect.exe

查看应用后台元素
inspect.exe定位元素
在这里插入图片描述

selenium查找元素方法

在这里插入图片描述
1、id、name、class_name:为元素属性定位
2、tag_name:为元素标签名称
3、Xpath:为元素路径定位

代码层:
config.py文件

from appium import webdriver

appium_server_url = "http://127.0.0.1:4723/wd/hub"  #一定要改成这样,如果直接端口号appium响应不了

# 配置启动应用程序的Desired Capabilities
desired_caps = {
    "platformName": "Windows",
    "deviceName": "WindowsPC",
    "app": r"你的程序位置",  # 请替换成目标应用程序的信息
}

# 创建Appium驱动
driver = webdriver.Remote(appium_server_url, desired_caps)

TestPage.py文件

from appium import webdriver
from selenium.webdriver.common.by import By
from config import appium_server_url, desired_caps


class TestPage:
    def __init__(self):
        self.driver = webdriver.Remote(appium_server_url, desired_caps)

    def click_element_by_name(self, element_name):
        element = self.driver.find_element(By.NAME, element_name)
        element.click()

    def enter_text_by_name(self, element_name, text):
        input_element = self.driver.find_element(By.NAME, element_name)
        input_element.send_keys(text)

    def close(self):
        self.driver.quit()

TestCase.py文件

import time
import random
import unittest
from TestPage import TestPage


class TestMyApp(unittest.TestCase):
    def setUp(self):
        self.test_page = TestPage()

    def tearDown(self):
        self.test_page.close()
# driver.quit()

TestSuit.py文件

# test_suite.py
import unittest
from TestCase.testcase import TestMyApp

# 创建测试套件
test_suite = unittest.TestSuite()

# 添加测试用例类到测试套件
test_suite.addTest(unittest.TestLoader.loadTestsFromTestCase(TestMyApp))

if __name__ == '__main__':
    # 运行测试套件
    unittest.TextTestRunner().run(test_suite)

runall.py文件

import unittest
from TestCase.testcase import TestMyApp
from report.HTMLTestRunner import HTMLTestReportEN

if __name__ == '__main__':
    # 添加测试用例到测试套件
    test_loader = unittest.TestLoader()
    test_suite = test_loader.loadTestsFromTestCase(TestMyApp)

    # 指定报告文件的路径和名称
    report_file = r''

    # 打开报告文件
    with open('./HwTestReportIMG.html', 'wb') as report:
        runner = HTMLTestReportEN(stream=report,
                                  verbosity=2,
                                  images=True,
                                  title='',#加自己的内容
                                  description='',#加自己的内容
                                  tester='')#加自己的内容
        # 运行测试套件
        runner.run(test_suite)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值