auto-wing将AI应用于自动化项目

GitHub: https://github.com/SeldomQA/auto-wing

背景:我们之前介绍过 midsence.js AI自动化测试辅助工具,midsence.js的思路我个人是比较认可的。然而,因为它是基于TS语言实现的,更多的软件测试工程师使用Python语言!我来用Python实现一个满足更多测试工程师的需求。

auto-wing的定位

既然借鉴了midsence.js的思路,为什么不叫midsencepy?因为我希望创建的AI自动化辅助工具和midsence.js有一些差异。

  1. 他应该可以方便的应用到现有的自动化项目中。毕竟我们已经编写了大量的自动化项目,可以方便的接入AI是最好的。
  2. 他应该支持更多国内的LLM。国内的LLM并不弱了好吧!这两天不是正在被deepseek-v3刷屏。方便又便宜对吧!?
  3. 他应该支持playwrightselenium;大部分工具都是基于playwright, 然而selenium似乎被抛弃了,我来给selenium上个呼吸机。

很高兴,我趁着大过年在家撸出来了,我这么为测试工程师群体着想,GitHub加个⭐不过分吧!

为什么叫 auto-wing? 那当然是给你的自动化测试插上AI的翅膀 🪽,直接原地起飞,哈哈!

特性

⭐ 支持多种操作:ai_actionai_queryai_assert

⭐ 支持多模型:openaiqwendeepseek

⭐ 支持 playwrightselenium

⭐ 方便的和现有自动化项目(pytestunittest)集成。

安装

shell 复制代码
pip install autowing

设置环境变量

方法一

申请LLM需要的key,在项目的根目录下创建.env文件。推荐deepseek,一是便宜又强大(没错,我就是在蹭蹭DeepSeek)。

ini 复制代码
#.env
AUTOWING_MODEL_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789

方法二

如果不想使用python-dotenv配置环境变量,可以直接配置环境变量。

shell 复制代码
export AUTOWING_MODEL_PROVIDER=deepseek
export DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789

使用示例

注: pytestunittestplaywrightselenium可以两两任意组合。

  • pytest + playwright 示例
python 复制代码
"""
pytest example for Playwright with AI automation.
"""
import pytest
from playwright.sync_api import Page, sync_playwright
from autowing.playwright.fixture import create_fixture

from dotenv import load_dotenv


@pytest.fixture(scope="session")
def page():
    """
    playwright fixture
    """
    # loading .env file
    load_dotenv()
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        context = browser.new_context()
        page = context.new_page()
        yield page
        context.close()
        browser.close()


@pytest.fixture
def ai(page):
    """
    ai fixture
    """
    ai_fixture = create_fixture()
    return ai_fixture(page)


def test_bing_search(page: Page, ai):
    """
    Test Bing search functionality using AI-driven automation.
    This test demonstrates:
    1. Navigating to Bing
    2. Performing a search
    3. Verifying search results
    """
    page.goto("https://cn.bing.com")

    ai.ai_action('搜索输入框输入"playwright"关键字,并回车')
    page.wait_for_timeout(3000)

    items = ai.ai_query('string[], 搜索结果列表中包含"playwright"相关的标题')
    print("query", items)

    assert len(items) > 1

    print("assert")
    assert ai.ai_assert('检查搜索结果列表第一条标题是否包含"playwright"字符串')
  • unittest + selenium 示例
python 复制代码
"""
Unittest example for Selenium with AI automation.
"""
import unittest
import time
from selenium import webdriver
from autowing.selenium.fixture import create_fixture
from dotenv import load_dotenv


class TestBingSearch(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        # load .env file
        load_dotenv()
        # Initialize Edge WebDriver
        cls.driver = webdriver.Edge()
        # Create AI fixture
        ai_fixture = create_fixture()
        cls.ai = ai_fixture(cls.driver)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

    def test_01_bing_search(self):
        """
        Test Bing search functionality using AI-driven automation.

        This test demonstrates:
        1. Navigating to Bing
        2. Performing a search
        3. Verifying search results
        """
        self.driver.get("https://cn.bing.com")

        self.ai.ai_action('搜索输入框输入"playwright"关键字,并回车')
        time.sleep(3)

        items = self.ai.ai_query('string[], 搜索结果列表中包含"playwright"相关的标题')
        print("query", items)

        self.assertGreater(len(items), 1)

        self.assertTrue(
            self.ai.ai_assert('检查搜索结果列表第一条标题是否包含"playwright"字符串')
        )


if __name__ == '__main__':
    unittest.main()

Q/A

  1. App是否支持?有计划支持。
  2. auto-wing刚发布,肯定还有不少坑,加了我微信的已经推动项目更新了,而你只能发个评论默默等回复。
  3. auto-wing稳定之后,seldomlounger项目也会同步集成。
  4. 最后,祝福大家:新年快乐~!。