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有一些差异。
[*]他应该可以方便的应用到现有的自动化项目中。毕竟我们已经编写了大量的自动化项目,可以方便的接入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)。
[*]DeepSeek: https://platform.deepseek.com/
#.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项目也会同步集成。
[*]最后,祝福大家:新年快乐~!。
页:
[1]