Skip to content
📔 阅读量:

创建一条完整的用例

创建一条在百度首页搜索 YouQu 的用例;

用例步骤

  • 在浏览器访问百度首页;
  • 搜索框输入YouQu;

封装用例步骤的方法

方法基类 base_page.py:: BasePage

python
from src.webui import WebUI

class BasePage(WebUI):

    def __init__(self, page):
        super().__init__(page)

方法主文件里面:baidu.py::BaiDu

python
from apps.autotest_my_app.page.base_page import BasePage

class BaiDu(BasePage):

    def goto_baidu(self):
        """访问百度首页"""
        self.goto("http://www.baidu.com")

    def click_search_box(self):
        """点击搜索框"""
        self.page.locator("#kw").click()

    def input_keywords(self, keywords):
        """搜索框中输入关键词"""
        self.page.locator("#kw").fill(keywords)

编写用例

所有的用例都在 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.page.baidu import BaiDu

class TestMyCase(BaseCase):

    def test_mycase_001(self, page):
        """百度首页搜索 YouQu """

        browser = BaiDu(page)
        # 在浏览器访问百度首页
        browser.goto_baidu()
        # 点击搜索框
        browser.click_search_box()
        # 输入YouQu
        browser.input_keywords("YouQu")
        self.assert_locator()
  • YouQu 提供一个全局默认的对象:page,默认使用系统自带的浏览器进行测试;如果需要指定其他第三方的浏览器,提供配置项可以指定浏览器对应的路径。

  • 还需要提供一个对象:native_page,它使用 Playwright 最新的 Chromium 浏览器进行测试。

  • 配置说明:

    ini
    # setting/globalconfig.ini
    
    ;=============================== Web UI CONFIG ===================================
    ;为Web UI自动化测试提供一个fixture对象:page,它默认使用系统自带的浏览器进行测试。
    ;框架还提供一个fixture对象:native_page,它使用最新的chromium浏览器进行测试。
    ;以下配置项默认值为系统自带的浏览器的配置,如果是其他第三方的浏览器可以指定浏览器对应的路径。
    ; def test_xxx_001(page):
    ;     page.goto("www.baidu.com")
    ;
    ; def test_xxx_001(native_page):
    ;     native_page.goto("www.baidu.com")
    
    ;指定浏览器启动的用户数据缓存目录
    USER_DATE_DIR = {{HOME}}/.config/browser
    
    ;指定浏览器可执行文件路径
    EXECUTABLE_PATH = /usr/bin/browser

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

python
# base_case.py

from apps.autotest_my_app.my_app_assert import MyAppAssert
from src.webui import WebAssert


class BaseCase(MyAppAssert, WebAssert):
    """用例基类"""

self.assert_locator() 是 Web UI 的专用断言语句,返回的 Playwrightexpect 对象,因此它可以使用 expect 的所有方法;

比如:

python
self.assert_locator(page.locator("//nz-table//tbody/tr[1]")).to_have_text("xxx")

这样我们就完成了一条简单的 Web UI 自动化用例。