English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french
查看: 50|回复: 0

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

[复制链接]
查看: 50|回复: 0

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

[复制链接]
查看: 50|回复: 0

365

主题

0

回帖

1105

积分

金牌会员

积分
1105
zhidao

365

主题

0

回帖

1105

积分

金牌会员

积分
1105
2025-2-5 12:41:22 | 显示全部楼层 |阅读模式
GitHub: https://github.com/SeldomQA/auto-wing
背景:我们之前介绍过 midsence.js AI自动化测试辅助工具,midsence.js的思路我个人是比较认可的。然而,因为它是基于TS语言实现的,更多的软件测试工程师使用Python语言!我来用Python实现一个满足更多测试工程师的需求。
auto-wing的定位

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

  • 他应该可以方便的应用到现有的自动化项目中。毕竟我们已经编写了大量的自动化项目,可以方便的接入AI是最好的。
  • 他应该支持更多国内的LLM。国内的LLM并不弱了好吧!这两天不是正在被deepseek-v3刷屏。方便又便宜对吧!?
  • 他应该支持playwright和selenium;大部分工具都是基于playwright, 然而selenium似乎被抛弃了,我来给selenium上个呼吸机。
很高兴,我趁着大过年在家撸出来了,我这么为测试工程师群体着想,GitHub加个⭐不过分吧!
为什么叫 auto-wing? 那当然是给你的自动化测试插上AI的翅膀 🪽,直接原地起飞,哈哈!
特性

⭐ 支持多种操作:ai_action、ai_query、ai_assert。
⭐ 支持多模型:openai、qwen 和 deepseek。
⭐ 支持 playwright、selenium。
⭐ 方便的和现有自动化项目(pytest、unittest)集成。
安装

pip install autowing设置环境变量

方法一
申请LLM需要的key,在项目的根目录下创建.env文件。推荐deepseek,一是便宜又强大(没错,我就是在蹭蹭DeepSeek)。
#.envAUTOWING_MODEL_PROVIDER=deepseekDEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789方法二
如果不想使用python-dotenv配置环境变量,可以直接配置环境变量。
export AUTOWING_MODEL_PROVIDER=deepseekexport DEEPSEEK_API_KEY=sk-abdefghijklmnopqrstwvwxyz0123456789使用示例

注: pytest 、unittest 和 playwright、selenium可以两两任意组合。

  • pytest + playwright 示例
"""pytest example for Playwright with AI automation."""import pytestfrom playwright.sync_api import Page, sync_playwrightfrom autowing.playwright.fixture import create_fixturefrom 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.fixturedef 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 示例
"""Unittest example for Selenium with AI automation."""import unittestimport timefrom selenium import webdriverfrom autowing.selenium.fixture import create_fixturefrom dotenv import load_dotenvclass 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


  • App是否支持?有计划支持。
  • auto-wing刚发布,肯定还有不少坑,加了我微信的已经推动项目更新了,而你只能发个评论默默等回复。
  • auto-wing稳定之后,seldom和lounger项目也会同步集成。
  • 最后,祝福大家:新年快乐~!。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

365

主题

0

回帖

1105

积分

金牌会员

积分
1105

QQ|智能设备 | 粤ICP备2024353841号-1

GMT+8, 2025-5-2 00:51 , Processed in 3.832864 second(s), 22 queries .

Powered by 智能设备

©2025