第一个客户端测试Demo

146 阅读2分钟

配置好Python虚拟环境,安装完依赖,创建项目并开始第一个测试案例

创建项目

在pycharm中新建项目,创建对应的包,结构如下:

1671001774667(1).png

第一个测试案例

  1. 连接应用:在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


1671006231551.png 1671008028342.png 1671006524275.png
  1. 页面模型:模拟用户操作,在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"])  # 判断是否有提示用户名或密码错误弹框出现 断言测试是否通过
  1. 运行测试用例:在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")

1671008453049.png

1671008501177.png