linux的桌面应用、PC应用、软件自动化测试-pyautogui
鄙人也是第一次:
查了资料都是手机APP、Windows应用程序的自动化,为什么没有Linux应用程序的自动化测试?探索期间有个Airtest网易出的自动化测试功能强大,但是还不支持Linux,娃娃哈哈哈~
然后了解到了python中的pyautogui跨平台自动化框架。自动输入、自动点击都自动了,但是如何断言啊,我还想使用unittest框架生成测试报告
苦思:就是把pyautogui官方文档好好看看,绝对有你需要的方法~有了方法在哪里使用就看你自己了。
断言:预先把结果截图,比如密码不能为空,点击提交时会有提示:密码不能为空。那我们就先把密码不能为空这个提示截图,然后再使用pyautogui中的Locate Functions 去断言
附上我的源码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020/6/2 下午2:58
# @Author : AiShuiShui-艾谁谁
# @Site :
# @File : test_login.py
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) # 解决在服务器导包错误
import unittest
from assertpy import assert_that # 很好的断言工具
from log import logging1 # 自己写的log对象
import subprocess # 用来异步执行linux命令很好用
import airtest # 一款基于图像识别和poco控件识别的一款UI自动化测试工具
import time
import pyautogui
import os
import importlib # 重新加载包
importlib.reload(logging1)
import configparser # 加载配置文件
cf = configparser.ConfigParser()
cf.read('./config.ini')
client_app_name = cf.get("server", "app_name")
deb_path = cf.get("client", "client_deb_file") # 你的包需要放的位置,按需修改
pyautogui.FAILSAFE = True # 鼠标移动到左上角停止程序
pyautogui.PAUSE = 1 # 执行每个函数后停止1s
logger = logging1.get_logger()
import HTMLTestRunner
import warnings # 解决警告问题
importlib.reload(logging1) # 更新log文件后重新加载
pyautogui.FAILSAFE = True # 鼠标移动到左上角停止程序
pyautogui.PAUSE = 1 # 执行每个函数后停止1
logger = logging1.get_logger()
start_cmd = 'client'
end_cmd = 'pkill client'
password = "××××"
class TestLogIn(unittest.TestCase):
def setUp(self) -> None:
warnings.simplefilter('ignore', ResourceWarning) # 解决警告
"""
先打开应用程序
:return:
"""
cmd = start_cmd
subprocess.Popen(cmd)
time.sleep(2)
def tearDown(self) -> None:
warnings.simplefilter('ignore', ResourceWarning)
"""
每次测试完毕,都需要关闭应用程序
:return:
"""
cmd = end_cmd
os.system(cmd)
def test_1(self):
"""
判断页面元素完整性
:return:
"""
login_ui = pyautogui.locateOnScreen('../screenshot/2020-06-08_16-27.png', confidence=0.9) # 如果没有找到则返回none,如果是none,那意味这有问题