Skip to content
📔 阅读量:

创建一条完整的用例

创建一条通过任务栏打开文件管理器的测试用例;

用例步骤

  • 点击任务栏上的文件管理器图标;
  • 判断(断言)文件管理器已经启动;

封装用例步骤的方法

所有的方法都在 widget 目录下;

首先这里的主要操作对象是任务栏(dde-dock),因此在方法基类 base_widget.py::BaseWidget 里面需要定义 dde-dock的信息:

python
# base_widget.py

from src import Src

class BaseWidget(Src):
    """应用的方法基类"""
    APP_NAME = "dde-dock"
    DESC = "/usr/bin/dde-dock"

在出口类 my_app_widget.py::MyAppWidget 中编写方法:

python
# my_app_widget.py

from apps.autotest_my_app.widget.base_widget import BaseWidget
from src import log


@log
class MyAppWidget(BaseWidget):
    """应用方法主类"""

    def click_dde_file_manager_on_dde_dock_by_attr(self):
        """点击任务栏上的文件管理器图标(通过属性定位)"""
        self.dog.element_click("Btn_文件管理器")

@log 用于自动输出方法的日志,因此方法里面不用写日志的代码。

python
class MyAppWidget(BaseWidget):
    """应用方法主类"""

    def click_dde_file_manager_on_dde_dock_by_attr(self):
        """点击任务栏上的文件管理器图标(通过属性定位)"""
        # from src import logger
        # logger.info("点击任务栏上的文件管理器图标(通过属性定位)")
        self.dog.element_click("Btn_文件管理器")

Btn_文件管理器 为属性名称,可以通过 sniff 工具查看,在终端输入:sniff

shell
mikigo@mikigo-PC:~/my_project$ sniff

编写用例

所有的用例都在 case 目录下,用例文件以 test_ 开头,用例 ID 结尾:test_mycase_001.py

python
# test_mycase_001.py

from apps.autotest_my_app.case import BaseCase
from apps.autotest_my_app.widget import MyAppWidget
from src import sleep

class TestMyCase(BaseCase):

    def test_mycase_001(self):
        """通过任务栏打开文件管理器"""
        
        # 点击任务栏上的文件管理器图标;
        MyAppWidget().click_dde_file_manager_on_dde_dock_by_attr()
        # 等待文件管理器启动
        sleep(2)
        # 判断(断言)文件管理器已经启动;
        self.assert_process_status(True, "dde-file-manager")

注意用例继承了用例基类 base_case.py::BaseCase

python
# base_case.py

from apps.autotest_my_app.my_app_assert import MyAppAssert


class BaseCase(MyAppAssert):
    """用例基类"""
    APP_NAME = "my-app"

用例基类用于继承断言模块,这样所有的断言语句都是通过 self.assert_ 调用,由于内建了非常多的断言语句,几乎满足了所有的断言场景:

这样就完成了一个简单的用例编写。