创建一条完整的用例
创建一条通过任务栏打开文件管理器的测试用例;
用例步骤
- 点击任务栏上的文件管理器图标;
- 判断(断言)文件管理器已经启动;
封装用例步骤的方法
所有的方法都在 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_
调用,由于内建了非常多的断言语句,几乎满足了所有的断言场景:
这样就完成了一个简单的用例编写。