配置好Python虚拟环境,安装完依赖,创建项目并开始第一个测试案例
创建项目
在pycharm中新建项目,创建对应的包,结构如下:
第一个测试案例
- 连接应用:在base包下新建ObjectMap类,该类提供测试时需要使用的常用方法,在该类中新建一个get_app的静态方法,用户获取测试应用;在项目bin目录下找到程序.exe 文件,打开测试应用程序,在“任务管理器” >> “详细信息” 中找到测试程序的PID(17428),通过process id连接已打开的应用(ObjectMap.app = Application(backend="uia").connect(process=17428))
代码如下
from pywinauto import Application
class ObjectMap:
app = None
@staticmethod
def get_app():
"""
获取应用
:return:
"""
if not ObjectMap.app:
# ObjectMap.app = Application(backend="uia").start(r"E:\kstopa-code\EAP\src\Kstopa.AcsWpfApp\bin\Debug\net6.0-windows\Kstopa.AcsWpfApp.exe")
ObjectMap.app = Application(backend="uia").connect(process=17428)
return ObjectMap.app
- 页面模型:模拟用户操作,在page包下新建LoginPage类并继承unittest.TestCase,在该类中定义test_login方法,注意所有的测试方法命名都要以“test_”开头,在方法中定义用户操作,模拟用户输入,并断言结果是否符合预期。代码如下:
from base.LoginBase import LoginBase
from base.ObjectMap import ObjectMap
import unittest
class LoginPage(unittest.TestCase):
def test_login(self):
"""
登录
:return:
"""
app = ObjectMap.get_app() # 获取应用
dlg = app["Login"] # 获取Login页面
user_name_input = dlg.child_window(auto_id="TextBoxLogin", control_type="Edit") # 获取用户名输入框
password_input = dlg.child_window(auto_id="TextBoxPassword", control_type="Edit") # 获取密码输入框
login_button = dlg.child_window(title="登录", control_type="Button") # 获取登录按钮
# print(dlg.print_control_identifiers()) # 打印控件
user_name_input.set_text("superadmin44") # 输入用户名
password_input.set_text("123456") # 输入密码
login_button.click() # 点击登录按钮
self.assertIsNone(dlg["OKDialog"]) # 判断是否有提示用户名或密码错误弹框出现 断言测试是否通过
- 运行测试用例:在testcase包下新建 RunTest.py 文件,运行测试用例并生成测试报告(report.html),代码如下:
import unittest
from BeautifulReport import BeautifulReport
from page import LoginPage
# 第一步:创建一个测试套件
suite = unittest.TestSuite()
# 第二步:加载用例到套件
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(LoginPage))
# 第三步:执行套件中的用例,生成测试报告
br = BeautifulReport(suite)
br.report("ACS测试", "report.html")