VSCODE接入DeepSeek R1实现AI完成自动化脚本实战开发
大家好,我是六哥,今天还是我们喜爱的DeepSeek的玩法,今天来个实战案例,和大家分享一下如何将DeepSeek接入VS Code,结合AI Toolkit插件完成自动化脚本的实战开发。
一、准备
微软官方为我们提供了一个针对AI辅助的插件——AI Toolkit for Visual Studio Code。这个插件功能强大,可以利用各种开源或商用的大模型,目前已经集成了DeepSeek R1模型,能让我们在VS Code中方便地借助DeepSeek进行代码开发。
安装AI ToolKit插件并启用DeepSeek
在VS Code的插件中心找到AI Toolkit并完成安装。

安装完成后,在插件页面选择Catalog中的Models模型页面,通过筛选条件“hosted by Github”以及“publisher DeepSeek”来使用DeepSeek - R1模型。

二、使用AI帮助生成脚本
有了DeepSeek模型后,我们就可以新建一个Playground让DeepSeek帮助我们生成自动化脚本。以下是我让DeepSeek生成的针对saucedemo的测试脚本的相关思考过程:

1、项目结构确定
POM模式下,通常会有page对象、测试用例、配置文件、数据文件等。可能需要这样的目录结构:
├── data
│ └── users.yml
├── pages
│ ├── __init__.py
│ ├── login_page.py
│ ├── products_page.py
│ └── checkout_page.py
├── tests
│ └── test_saucedemo.py
├── conftest.py
└── requirements.txt
2、用户数据处理
用户数据存放在user.yml里,里面应该有不同的用户类型,比如标准用户、锁定用户、错误密码用户、没有用户名或密码的用户等。测试用例要读取这些数据,可能用pyYAML库来读取user.yml文件,在测试时用@pytest.mark.parametrize参数化输入不同的用户数据。
valid_user:
username: "standard_user"
password: "secret_sauce"
invalid_users:
- username: "locked_out_user"
password: "secret_sauce"
error: "Epic sadface: Sorry, this user has been locked out."
- username: "invalid_user"
password: "wrong_password"
error: "Epic sadface: Username and password do not match any user in this service"
3、Page Object Model实现
每个页面比如登录页、商品页、结算页都有自己的类,封装元素和操作。例如,LoginPage有用户名、密码输入框,登录按钮,错误提示的方法。
pages/login_page.py
from playwright.sync_api import Page
class LoginPage:
def __init__(self, page: Page):
self.page = page
self.username = page.locator("#user-name")
self.password = page.locator("#password")
self.login_button = page.locator("#login-button")
self.error_message = page.locator(".error-message-container")
def navigate(self):
self.page.goto("https://www.saucedemo.com/")
def login(self, username: str, password: str):
self.username.fill(username)
self.password.fill(password)
self.login_button.click()
pages/products_page.py
from playwright.sync_api import Page
class ProductsPage:
def __init__(self, page: Page):
self.page = page
self.title = page.locator(".title")
self.inventory_items = page.locator(".inventory_item")
self.cart_button = page.locator(".shopping_cart_link")
def add_to_cart(self, index: int = 0):
self.inventory_items.nth(index).locator("button").click()
def go_to_cart(self):
self.cart_button.click()
pages/checkout_page.py
from playwright.sync_api import Page
class CheckoutPage:
def __init__(self, page: Page):
self.page = page
self.first_name = page.locator("#first-name")
self.last_name = page.locator("#last-name")
self.postal_code = page.locator("#postal-code")
self.continue_button = page.locator("#continue")
self.finish_button = page.locator("#finish")
self.complete_header = page.locator(".complete-header")
def fill_info(self, first: str, last: str, zipcode: str):
self.first_name.fill(first)
self.last_name.fill(last)
self.postal_code.fill(zipcode)
self.continue_button.click()
def complete_checkout(self):
self.finish_button.click()
4、测试用例设计
测试用例应该使用pytest的参数化来覆盖不同的用户场景。比如正常登录成功、无效密码、锁定用户等。同时,checkout流程需要正常流程的测试,可能还有填写信息不完整的情况。
import pytest
import yaml
from playwright.sync_api import Page
with open("data/users.yml") as f:
test_data = yaml.safe_load(f)
@pytest.mark.parametrize("user", test_data["invalid_users"])
def test_invalid_login(page: Page, user):
login_page = LoginPage(page)
login_page.navigate()
login_page.login(user["username"], user["password"])
assert login_page.error_message.is_visible()
assert user["error"] in login_page.error_message.inner_text()
def test_valid_login_and_checkout(page: Page):
# Login
login_page = LoginPage(page)
login_page.navigate()
login_page.login(test_data["valid_user"]["username"],
test_data["valid_user"]["password"])
# Add product
products_page = ProductsPage(page)
assert products_page.title.inner_text() == "Products"
products_page.add_to_cart()
products_page.go_to_cart()
# Checkout
page.click("#checkout")
checkout_page = CheckoutPage(page)
checkout_page.fill_info("John", "Doe", "12345")
checkout_page.complete_checkout()
assert checkout_page.complete_header.inner_text() == "THANK YOU FOR YOUR ORDER"
5、fixture设置
在conftest.py里面设置Playwright的fixture,比如browser、page,以及各个page对象的fixture。比如,每次测试前都转到登录页,登录后到库存页,这样可以处理前置条件。
import pytest
from playwright.sync_api import Playwright
@pytest.fixture(scope="function")
def page(playwright: Playwright):
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
yield page
context.close()
browser.close()
6、依赖库
pytest
playwright
PyYAML
关键点说明:
- POM模式分层清晰,每个页面封装对应的操作和元素定位
- 使用YAML文件管理测试数据,便于维护和扩展
- 参数化测试支持多种异常场景验证
- 完整的端到端测试流程覆盖登录-加购-结账全流程
- 使用Playwright的同步API简化测试编写
- 通过conftest管理浏览器实例
三、整合项目步骤
1、需要检查的测试场景
登录
- 正确用户密码登录成功。
- 错误密码提示错误信息。
- 锁定用户无法登录。
- 空用户名或密码提示错误。
Checkout
- 正常填写所有信息,完成订单。
- 必填字段缺失(如first name为空)提示错误。
- 取消订单流程。
2、实施步骤
- 创建项目结构,安装依赖:pytest、playwright、pyyaml。
- 编写user.yml,包含不同类型的用户数据。
- 实现各个页面的Page类,包含元素定位和操作方法。
- 在conftest.py中定义fixture,例如初始化page,创建各page对象的实例。
- 编写测试用例,参数化用户数据,覆盖正常和异常流程。
- 处理测试中的等待和断言,确保元素的存在或文本正确。
3、关键点说明
- POM模式分层清晰,每个页面封装对应的操作和元素定位
- 使用YAML文件管理测试数据,便于维护和扩展
- 参数化测试支持多种异常场景验证
- 完整的端到端测试流程覆盖登录-加购-结账全流程
- 使用Playwright的同步API简化测试编写
- 通过conftest管理浏览器实例
四、效果

五、结论
参照DeepSeek给出的结果,基本不用做太大的微调就可以执行成功,确实极大提升了我们进行自动化实现的效率。最难能可贵的是,DeepSeek给出的思考过程,对于我们代码实现和用例设计的要点也有极大的参考价值!
VSCODE接入DeepSeek R1实现AI完成自动化脚本实战开发的更多相关文章
- 测者的测试技术手册:AI的自动化单元测试
测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试
- Jenkins构建自动化脚本执行无界面解决方法
场景: jenkins构建selenium自动化用例的时候,会有jenkins自带服务后台运行自动化脚本,可无界面运行IE.Chrome.Firefox. 然而运行IE浏览器时候(IE比较特殊),Je ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- 百度AI开放平台- API实战调用
百度AI开放平台- API实战调用 一. 前言 首先说一下项目需求. 两个用户,分别上传了两段不同的文字,要计算两段文字相似度有多少,匹配数据库中的符合条件的数据,初步估计列出来会有60-1 ...
- 自动化脚本中click()或sendKeys()没有反应
前提: 排除xpath引用错误或元素的xpath每次都不同的情形. 问题描述 自动化脚本中click()方法和sendKeys()方法报错, 返回异常InvocationTargetException ...
- appium-desktop录制脚本二次开发,生成我司自动化脚本
目的 通过对appium-desktop脚本录制功能进行二次开发,使录制的java脚本符合我司自动化框架要求. 实现步骤 1.增加元素名称的输入框 由于ATK(我司自动化测试框架)脚本中元素是以“ap ...
- 【Zabbix】Zabbix-agent自动化脚本
zabbix-agent自动化脚本 作用:批量部署zabbix-agent.用于上百台虚拟机都可以被Zabbix监控. 脚本名:inst-agent.sh #!/bin/bash echo " ...
- Grunt搭建自动化web前端开发环境--完整流程
Grunt搭建自动化web前端开发环境-完整流程 jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前 ...
- Python—UI自动化完整实战
实战项目 均来源于互联网 测试报告2017年11月29日优化后的测试报告:https://github.com/defnngj/HTMLTestRunner 1.项目概述: 本实战已126邮箱为例子进 ...
- Selenium Web 自动化 - 项目实战环境准备
Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG 1.1 安装TestNG 1.2 添加TestNG类库2 部署Maven 2.1 mav ...
随机推荐
- 推荐给初级Java程序员的3本进阶书
ImportNew 注: 原作者在这篇文章中介绍3本不错的技术书籍.作者认为这些书籍对新手或者学生而言尤其有帮助.通过一些基础性的教程入门后,我们可以使用Java做基础性的编程.然而,当我们需要从初级 ...
- 渗透测试-Kioptix Level 1靶机getshell及提权教程
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无 ...
- WxPython跨平台开发框架之用户选择和标签组件的设计
在系统的权限管理中,往往都会涉及到用户的选择处理,特别是基于角色的访问控制中,很多情况下需要用到选择用户的处理.本篇随笔,基于WxPython跨平台开发框架,采用原有开发框架成熟的一套权限系统理念,对 ...
- windows server系统中,Pro运行深度学习工具错误
安装深度学习包后,运行相关工具的时候报错,缺失cv2的模块. 在arcpy执行窗口,直接去引入cv2包的时候,确实发了错误. 查看了相关路径,确认cv2的包,在对应路径已经存在,也有对应的元数据信息, ...
- 《前端运维》一、Linux基础--11服务
首先服务的概念,对于linux服务器来说,其中大多数的软件都算是服务,比如nginx.mysql.Jenkins等等.下面我们就来学习一下linux中有关服务的一些内容. 一.服务简介和分类 1.运行 ...
- Consul 学习总结
什么是Consul? Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接.Consul提供服务发现.服务网格(service mesh).流量管理和网 ...
- Qt编写项目作品27-多线程文件传输
一.功能特点 多线程收发文件,支持加密传输. 接收端支持监听端口接收文件和主动连接服务器接收文件两种方式. 按照 文件开始符+文件大小+文件内容+文件结束符 逐个分包接收. 可对接收的加密过的文件包进 ...
- matlab中mat文件的生成和读取
1.mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件. 点 ...
- 大型IM工程重构实践:企业微信Android端的重构之路
本文由腾讯技术yeconglu分享,原题"企业微信大型Android系统重构之路",下文进行了排版和内容优化等. 1.引言 企业微信本地部署版(下文简称为本地版)是从2017年起, ...
- 浅谈Spring Data ElasticSearch
Spring Data Spring Data 帮助我们避免了一些样板式代码,比如我们要定义一个接口,可以直接继承接口ElasticSearchRepository接口,这样Spring Data就帮 ...