鄙人也是第一次:
查了資料都是手機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,那意味這有問題