国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 后端開(kāi)發(fā) Python教程 Part 使用 Cursor 和 Claude 與 Playwright 創(chuàng)建自動(dòng)化測(cè)試

Part 使用 Cursor 和 Claude 與 Playwright 創(chuàng)建自動(dòng)化測(cè)試

Nov 06, 2024 am 01:54 AM

第 1 部分鏈接

第 4 部分

這是該項(xiàng)目的 Github 源代碼存儲(chǔ)庫(kù):https://github.com/joegiglio/cursor2-kb

已經(jīng)有一段時(shí)間了......

上次我們交談時(shí),光標(biāo)似乎崩潰了,文件結(jié)構(gòu)的索引已損壞。 經(jīng)過(guò) 23 天的修復(fù)后,我很高興地報(bào)告,問(wèn)題似乎終于得到了解決! 用戶界面仍然很奇怪,并且在一段時(shí)間后似乎會(huì)因某種類型的內(nèi)存泄漏而變慢,這可以通過(guò)重新啟動(dòng)來(lái)修復(fù)。 但至少現(xiàn)在它正在對(duì)正確的文件進(jìn)行更改,并且我沒(méi)有面臨神秘?fù)p壞的文件索引。

在等待修復(fù)時(shí),我注意到許多 Cursor 用戶抱怨 Cursor 和/或 Claude 的不穩(wěn)定。 是的,它有時(shí)會(huì)起作用,而且當(dāng)它起作用時(shí)令人印象深刻,但它是一個(gè)由移動(dòng)部件組成的黑匣子,在幕后不斷更新并且結(jié)果不一致。

我決定把幫助臺(tái)項(xiàng)目放在一邊,想看看是否可以構(gòu)建一個(gè)知識(shí)庫(kù)應(yīng)用程序。 這可能會(huì)更簡(jiǎn)單一些 - 不需要實(shí)時(shí)更新或復(fù)雜的集成點(diǎn)。

我使用了我最熟悉的相同技術(shù)堆棧 - Python、Flask 和 Bootstrap 以及 SQLite 數(shù)據(jù)庫(kù)。 一切都進(jìn)展順利,直到我遇到了“數(shù)據(jù)庫(kù)遷移”的障礙。 與前一章類似,它生成了 SQLite 不喜歡的約束代碼,并引發(fā)了錯(cuò)誤:

Exception during DB migration:
 raise ValueError("Constraint must have a name")
ValueError: Constraint must have a name

這對(duì)克勞德來(lái)說(shuō)應(yīng)該很容易修復(fù),但它開(kāi)始螺旋式上升,我最終從頭開(kāi)始重建我的數(shù)據(jù)庫(kù)。 我將這歸咎于我在調(diào)試flask-migrate方面缺乏經(jīng)驗(yàn),但克勞德無(wú)法在不擦除數(shù)據(jù)庫(kù)并重新開(kāi)始的情況下清理混亂。

Part  Using Cursor and Claude to Create Automated Tests with Playwright

一切安頓下來(lái)后,我最終得到了一個(gè)功能齊全的知識(shí)庫(kù)系統(tǒng),以及管理面板、暗/亮模式、搜索(僅使用 SQL 查詢)和測(cè)試數(shù)據(jù)生成器。 它是用 Quill 構(gòu)建的,Quill 是一個(gè)開(kāi)源文本編輯器,支持格式和圖像。

Part  Using Cursor and Claude to Create Automated Tests with Playwright

Part  Using Cursor and Claude to Create Automated Tests with Playwright

我說(shuō)“主要是功能性的”是因?yàn)槲夜室獠蛔屔矸蒡?yàn)證或多租戶變得復(fù)雜。 我通過(guò)基本的 Flask 路由和 CRUD 操作使架構(gòu)保持簡(jiǎn)單。 還沒(méi)有 API…也許我會(huì)在第 2 階段重新審視這些功能。

當(dāng)我添加功能時(shí),我一直注意到 Claude 會(huì)修復(fù)一件事,但會(huì)破壞另一件事 - 就像真正的開(kāi)發(fā)人員一樣。 此外,CSS 和 JavaScript 散布在代碼中。 有時(shí),添加新文章可行,但編輯不起作用,反之亦然。 有時(shí)文章格式化代碼會(huì)到處出現(xiàn),我不得不請(qǐng)克勞德清理它。 它正在變得打地鼠。

該項(xiàng)目變得足夠復(fù)雜,需要測(cè)試自動(dòng)化,這在上一章中進(jìn)行了簡(jiǎn)要討論。 在大多數(shù)公司中,量化寬松的預(yù)算很少,而且大多數(shù)開(kāi)發(fā)人員討厭編寫(xiě)測(cè)試,所以也許人工智能可以提供幫助?

我在 Selenium 和 Cucumber 方面擁有豐富的經(jīng)驗(yàn),但已經(jīng)有一段時(shí)間了。 Playwright 一直受到關(guān)注,據(jù)說(shuō)對(duì)定位器和重試有更好的處理能力,所以我要求 Claude 創(chuàng)建一些 Playwright 測(cè)試。 VS-Code Playwright 擴(kuò)展似乎都假設(shè)您使用的是 Javascript,并且它們沒(méi)有對(duì) Python 的直接支持,因此我需要像動(dòng)物一樣從終端運(yùn)行測(cè)試。

Part  Using Cursor and Claude to Create Automated Tests with Playwright

[提示]

我想使用 Playwright 和 Python 向該項(xiàng)目添加端到端瀏覽器測(cè)試。 我希望測(cè)試使用固定裝置來(lái)播種必要的數(shù)據(jù),然后在每次測(cè)試運(yùn)行結(jié)束時(shí)刪除數(shù)據(jù)。 測(cè)試需要自行清理,并且不要留下測(cè)試數(shù)據(jù)。 如果您可以將其配置為在運(yùn)行測(cè)試時(shí)設(shè)置測(cè)試數(shù)據(jù)庫(kù),那就更好了。 請(qǐng)讓我知道要安裝哪些庫(kù),通過(guò)查看產(chǎn)品的主要功能為前 10 個(gè)場(chǎng)景創(chuàng)建測(cè)試,并讓我知道如何從 Cursor 中運(yùn)行這些測(cè)試。

[/提示]

第一次嘗試非常好,提供了有關(guān)如何安裝必要庫(kù)的說(shuō)明。 測(cè)試的文件結(jié)構(gòu)似乎也很準(zhǔn)確,甚至通過(guò)更改視口大小添加了響應(yīng)能力測(cè)試。 不錯(cuò)……但我不喜歡它生成的最初一組測(cè)試,所以我要求它進(jìn)一步完善:

[提示]

該產(chǎn)品尚未實(shí)現(xiàn)身份驗(yàn)證。 請(qǐng)不要為這些功能創(chuàng)建測(cè)試。 相反,專注于管理功能,例如創(chuàng)建、編輯和刪除主題;添加、編輯和刪除文章。 此外,還要關(guān)注最終用戶功能,例如搜索和查看文章。 查看代碼找出產(chǎn)品的前 10 個(gè)功能并為它們創(chuàng)建測(cè)試。

[/提示]

下一批測(cè)試看起來(lái)好一點(diǎn),但仍然沒(méi)有管理功能。

[提示]

大多數(shù)測(cè)試看起來(lái)都不錯(cuò),但我在 @admin.html 文件中沒(méi)有看到任何管理功能。 我們需要有添加、編輯、刪除主題和添加、編輯、刪除文章的測(cè)試。

[/提示]

現(xiàn)在看起來(lái)它是正確的并創(chuàng)建了代碼來(lái)測(cè)試以下應(yīng)用場(chǎng)景:

Part  Using Cursor and Claude to Create Automated Tests with Playwright

Part  Using Cursor and Claude to Create Automated Tests with Playwright

這些看起來(lái)都是很好的起點(diǎn)。 現(xiàn)在我們來(lái)看看克勞德的執(zhí)行指令是否正確。 嗯,不幸的是沒(méi)有……

[提示]

我按照您的說(shuō)明運(yùn)行測(cè)試,但遇到了一些問(wèn)題。
我打開(kāi)一個(gè)新終端并運(yùn)行命令“FLASK_ENV=testingflask run”,然后運(yùn)行“pytesttests/e2e/”。 我發(fā)現(xiàn)以下問(wèn)題:

  1. 當(dāng)我導(dǎo)航到主頁(yè)時(shí),我看到的數(shù)據(jù)與之前看到的數(shù)據(jù)相同。 好像沒(méi)有切換到測(cè)試數(shù)據(jù)庫(kù)。
  2. 異常:加載conftest '/Users/joe/cursor2-kb/tests/e2e/conftest.py'時(shí)出現(xiàn)導(dǎo)入錯(cuò)誤。 test/e2e/conftest.py:12:在 from models import 主題、文章 ModuleNotFoundError:沒(méi)有名為“models”的模塊

[/提示]

Claude 創(chuàng)建了一個(gè) models.py 文件,復(fù)制了 app.py 文件中的代碼,我質(zhì)疑為什么......

此應(yīng)用程序的初始代碼全部在 app.py 文件中完成,包括模型。 這工作正常,但可能會(huì)給您留下一個(gè)笨拙的單文件應(yīng)用程序。 最佳實(shí)踐是將模型和路由與配置分開(kāi),這就是克勞德帶我去的地方,盡管它花了很長(zhǎng)的時(shí)間:

[提示]

您提出的 models.py 文件看起來(lái)像是復(fù)制 app.py 中的代碼。 使用 app.py 中的模型是否更有意義?

[/提示]

[回復(fù)]

實(shí)際上,情況正好相反 - 我們應(yīng)該將模型從 app.py 移到 models.py 中,以遵循關(guān)注點(diǎn)分離原則。這是 Flask 應(yīng)用程序中的常見(jiàn)模式,其中:
app.py 處理應(yīng)用程序配置和初始化
models.py 包含所有數(shù)據(jù)庫(kù)模型
路線通常位于單獨(dú)的藍(lán)圖文件中

[/回復(fù)]

很公平。 就這樣吧!

嗯,沒(méi)那么快。 仔細(xì)檢查后...

[提示]

我喜歡你分離 models.py 文件的地方,但你也從 app.py 文件中刪除了所有路由。 我在任何其他文件中都沒(méi)有看到它們。 他們就這樣走了……

[/提示]

現(xiàn)在 Claude 將所有路線從 app.py 文件中取出,并將它們移動(dòng)到一個(gè)單獨(dú)的藍(lán)圖文件中。 它正在進(jìn)行太多的架構(gòu)更改,我希望它能夠恢復(fù)……當(dāng)心那些想要重寫(xiě)一切的出色的新開(kāi)發(fā)人員! 盡管建議的更改被認(rèn)為是專業(yè) Flask 代碼庫(kù)的最佳實(shí)踐,但在測(cè)試到位之前我不會(huì)相信這些更改,以便我們可以驗(yàn)證它們是否正常工作。

[提示]

我知道使用藍(lán)圖是專業(yè)級(jí) Flask 代碼的首選方法。 然而,我現(xiàn)在不太愿意進(jìn)行這樣的重構(gòu)。我首先嘗試進(jìn)行端到端測(cè)試。 然后我們可以看一下項(xiàng)目結(jié)構(gòu)。 請(qǐng)不要將路由移出 app.py 文件。

[/提示]

Part  Using Cursor and Claude to Create Automated Tests with Playwright

光標(biāo)嘗試恢復(fù),但合并 UI 是一片綠色和紅色的海洋,我對(duì)這一更改感到不舒服。 新策略:讓我們進(jìn)行一些簡(jiǎn)單的劇作家測(cè)試,然后逐步改進(jìn)它們。 也許這樣會(huì)更好……

我隱藏了建議的測(cè)試列表,因?yàn)槲蚁矚g它的發(fā)展方向,然后關(guān)閉 Cursor Composer 窗口并啟動(dòng)一個(gè)新的 Composer,我相信它會(huì)刪除以前的 Composer 的所有內(nèi)容。

讓我們從一個(gè)更簡(jiǎn)單的起點(diǎn)再試一次。 無(wú)論如何,迭代開(kāi)發(fā)通常是最好的。

[提示]

我想使用 Playwright 和 Python 向該項(xiàng)目添加端到端瀏覽器測(cè)試。 請(qǐng)讓我知道要安裝哪些庫(kù),通過(guò)查看產(chǎn)品的主要功能為前 10 個(gè)場(chǎng)景創(chuàng)建測(cè)試,并讓我知道如何從 Cursor 中運(yùn)行這些測(cè)試。

[/提示]

這次我們遇到了類似的問(wèn)題,克勞德想要測(cè)試尚不存在的功能。 是時(shí)候罵克勞德了!

[提示]

我看到您正在為身份驗(yàn)證功能創(chuàng)建測(cè)試。 雖然我們有一個(gè)登錄頁(yè)面,但它只是一個(gè)占位符,并沒(méi)有實(shí)際的功能。 它甚至沒(méi)有允許任何人登錄的字段。 請(qǐng)?jiān)俅螜z查項(xiàng)目代碼并提出 Playwright 的前 10 個(gè)測(cè)試場(chǎng)景。

[/提示]

這導(dǎo)致 Claude 道歉并圍繞主頁(yè)上的搜索功能創(chuàng)建了一堆測(cè)試場(chǎng)景。 我希望不要手動(dòng)提供我想要的測(cè)試,而是希望它通過(guò)查看代碼來(lái)找到功能。 但運(yùn)氣不好,所以我回去了:

[提示]

這看起來(lái)更好,但過(guò)于關(guān)注搜索。 我們需要對(duì)以下功能進(jìn)行測(cè)試:搜索、創(chuàng)建主題、編輯主題、刪除主題、創(chuàng)建文章、編輯文章、刪除文章、查看文章以及一些響應(yīng)式測(cè)試,以確保一切在不同的屏幕分辨率下看起來(lái)都正常。

[/提示]

我們已經(jīng)開(kāi)始螺旋式上升......它為更多測(cè)試創(chuàng)建了基本框架,但它對(duì)將存在的數(shù)據(jù)做出了太多假設(shè)。 不要做任何假設(shè)。 這就是為什么最好有一個(gè)預(yù)先播種的測(cè)試數(shù)據(jù)庫(kù),但我們最終會(huì)努力實(shí)現(xiàn)這一目標(biāo)。 現(xiàn)在…

[提示]

其中一些測(cè)試假設(shè)某些鏈接有效且某些內(nèi)容存在。 如果刪除文章或主題,情況可能并非如此。 請(qǐng)通過(guò)創(chuàng)建所需的數(shù)據(jù)來(lái)使每個(gè)測(cè)試自包含,然后在測(cè)試完成時(shí)將其刪除。

[/提示]

所以現(xiàn)在克勞德又回來(lái)創(chuàng)造賽程了! 我想如果你想做正確的事,就沒(méi)有辦法解決這個(gè)問(wèn)題......

另一個(gè)問(wèn)題是使用“測(cè)試主題”和“測(cè)試文章”等測(cè)試字符串,如果我們運(yùn)行并行測(cè)試(這是加速執(zhí)行的常見(jiàn)方法),它們可能會(huì)發(fā)生沖突。 我希望測(cè)試使用隨機(jī)數(shù)據(jù),因此我提示:

[提示]

主題名稱、文章名稱和文章內(nèi)容請(qǐng)使用隨機(jī)數(shù)據(jù)。 添加外語(yǔ)字符測(cè)試也是一個(gè)好主意,以確保它們?cè)跒g覽和搜索過(guò)程中顯示正常。

[/提示]

Part  Using Cursor and Claude to Create Automated Tests with Playwright

我有一種感覺(jué),我們將需要更多的調(diào)整,但這看起來(lái)是一個(gè)非常合理的開(kāi)始。 克勞德返回以下內(nèi)容:

進(jìn)行了以下更改:
使用Faker生成多種語(yǔ)言的隨機(jī)數(shù)據(jù)
添加針對(duì)多語(yǔ)言內(nèi)容的特定測(cè)試
驗(yàn)證各種字符集的正確顯示
使用非拉丁字符測(cè)試搜索功能
驗(yàn)證顯示中沒(méi)有字符編碼問(wèn)題
測(cè)試多種語(yǔ)言的內(nèi)容創(chuàng)建
現(xiàn)在測(cè)試驗(yàn)證您的應(yīng)用程序是否正確處理:
日語(yǔ) (日本語(yǔ))
中文 (中文)
韓語(yǔ) (???)
俄語(yǔ) (Русский)
以及常規(guī)英文內(nèi)容
每個(gè)測(cè)試都會(huì)創(chuàng)建自己的隨機(jī)數(shù)據(jù)并自行清理,使測(cè)試更加可靠和獨(dú)立。

這些是創(chuàng)建的測(cè)試:

Part  Using Cursor and Claude to Create Automated Tests with Playwright

Part  Using Cursor and Claude to Create Automated Tests with Playwright

現(xiàn)在運(yùn)行它們。 首先,我需要安裝 Claude 指示我做的 faker 庫(kù)......

我獲得了一堆不同的標(biāo)志和選項(xiàng)來(lái)運(yùn)行測(cè)試。 根據(jù)以前的經(jīng)驗(yàn),所有這些說(shuō)明看起來(lái)都是正確的,但我將使用 Claude 創(chuàng)建的 pytest.ini 文件,并傳遞一些用于詳細(xì)輸出、屏幕截圖和減慢測(cè)試執(zhí)行的標(biāo)志,以便我可以遵循沿著視覺(jué)…

Part  Using Cursor and Claude to Create Automated Tests with Playwright

現(xiàn)在運(yùn)行pytest測(cè)試/e2e/來(lái)實(shí)際運(yùn)行測(cè)試!

所有測(cè)試均因相同錯(cuò)誤而失?。?br>

Exception during DB migration:
 raise ValueError("Constraint must have a name")
ValueError: Constraint must have a name

pytest.ini 中,base_url 設(shè)置為 http://localhost:5000,這對(duì)我來(lái)說(shuō)看起來(lái)很正確。

我不明白為什么失敗,所以我問(wèn)克勞德。他做了一些小調(diào)整,然后建議我將 pytest.ini 文件移至項(xiàng)目的 ROOT 目錄,并移出他最初放置該文件的 test/e2e 目錄。 我反駁了這一點(diǎn),他說(shuō)那里很好。 好吧……

他還建議我在測(cè)試中使用絕對(duì) URL,而不是 INI 文件和文本裝置中設(shè)置的 URL。 錯(cuò)誤的。 我也反駁了這一點(diǎn),他同意并修復(fù)了它。 在這里失去信心......

完成這些更改后,我再次運(yùn)行測(cè)試,現(xiàn)在我看到瀏覽器打開(kāi)并轉(zhuǎn)到基本 URL,即知識(shí)庫(kù)的主頁(yè),但所有測(cè)試仍然失敗。 我和 Claude 又進(jìn)行了幾輪,看起來(lái)根頁(yè)面問(wèn)題可能已經(jīng)解決,但現(xiàn)在我們失敗了:

playwright._impl._errors.Error: Protocol error (Page.navigate): Cannot navigate to invalid URL

這看起來(lái)更像是定位器問(wèn)題。

[提示]

現(xiàn)在 test_admin.py 中的所有管理測(cè)試都因以下錯(cuò)誤而失?。篴dmin_page.fill("#topic-title", data["title"])。 這不是正確的定位器。 請(qǐng)修復(fù)。

[/提示]

Claude 修復(fù)了一項(xiàng)測(cè)試,但其他測(cè)試仍然因定位器錯(cuò)誤而失敗。 我說(shuō)得更明確了:

[提示]

除了 test_create_topic 之外,@test_admin.py 中的其余測(cè)試都因定位器錯(cuò)誤而失敗。請(qǐng)檢查測(cè)試中的所有定位器并更正它們。

[/提示]

Claude 做了一些更改,現(xiàn)在我們又遇到了另一個(gè)定位器問(wèn)題……

[提示]

現(xiàn)在所有測(cè)試都失敗了:
測(cè)試/e2e/test_admin.py::test_create_topic[chromium] - AssertionError:定位器預(yù)計(jì)可見(jiàn)

[/提示]

很明顯,我們會(huì)在這里待一段時(shí)間,在克勞德進(jìn)行必要的修復(fù)時(shí),我們會(huì)不停地轉(zhuǎn)來(lái)轉(zhuǎn)去。 同樣明顯和不幸的是,克勞德沒(méi)有應(yīng)用程序和頁(yè)面元素的正確上下文,而我不必非常明確。 僅僅要求克勞德“查看代碼并創(chuàng)建測(cè)試”是不夠的。 您需要非常熟悉功能和頁(yè)面結(jié)構(gòu),以便您可以繼續(xù)使用。

Claude 在使用 pytest.iniconftest.py 設(shè)置測(cè)試架構(gòu)方面很有幫助,但即便如此,它仍然需要進(jìn)行一些調(diào)整才能運(yùn)行基本測(cè)試,而無(wú)需立即運(yùn)行失敗。

該項(xiàng)目在前端使用 Bootstrap 以及 Javascript 確認(rèn)和模式對(duì)話框。 如果源代碼中有多個(gè)模式,而只有一個(gè)模式可見(jiàn),這是一種常見(jiàn)的設(shè)計(jì)模式,那么克勞德似乎很難處理這些。 經(jīng)過(guò)多次迭代并用偽代碼引導(dǎo),我們最終達(dá)成了理解并通過(guò)了測(cè)試。

通過(guò)這些測(cè)試,Claude 對(duì)定位器的名稱做出了許多假設(shè),其中大部分在源代碼中不存在。 只有在明確告訴它查看某些文件之后它才能夠清理,但為什么要做出假設(shè)呢? 也許我一開(kāi)始就沒(méi)有給它提供正確的文件? 我仍然不確定這一切應(yīng)該如何運(yùn)作。

有時(shí)它似乎可以訪問(wèn)整個(gè)項(xiàng)目,而其他時(shí)候我需要更明確。 如果它需要訪問(wèn)文件,它應(yīng)該詢問(wèn),而不僅僅是創(chuàng)建廢話代碼。 請(qǐng)記住,每次來(lái)回都會(huì)花費(fèi)您的 API 積分。

除了大量測(cè)試失敗之外,即使我在 pytest.ini 文件中傳遞標(biāo)志,我還遇到屏幕截圖未保存的問(wèn)題。克勞德給了我一些排列,但沒(méi)有一個(gè)能解決問(wèn)題。 我查看了劇作家文檔,仍然沒(méi)有解決方案。 這似乎是“應(yīng)該很容易解決”的另一個(gè)問(wèn)題,但你可以輕松地銷毀一打克勞德的請(qǐng)求,但很快就會(huì)一事無(wú)成。 我現(xiàn)在將繼續(xù)使用 Claude 建議的解決方法。

在花了太多時(shí)間與 Claude 進(jìn)行調(diào)整之后,我現(xiàn)在只有兩個(gè)測(cè)試通過(guò),第三個(gè)測(cè)試一開(kāi)始是通過(guò)的,但由于測(cè)試代碼和固定代碼之間的一些沖突,最終以失敗告終。 調(diào)試變得很累,我感覺(jué)我正在進(jìn)行循環(huán)對(duì)話。 我已經(jīng)到了這樣的地步:我只是盲目地合并建議的代碼更改并希望出現(xiàn)奇跡。

在本章前面,我的目的是構(gòu)建一個(gè)測(cè)試工具,用于播種和刪除測(cè)試數(shù)據(jù)以及可重用的固定裝置和函數(shù),以保持?jǐn)?shù)據(jù)和測(cè)試代碼的干凈。 這些意圖早已成為泡影,現(xiàn)在我只想通過(guò)測(cè)試,稍后我會(huì)嘗試清理它們。 如果其中任何一個(gè)聽(tīng)起來(lái)很熟悉,請(qǐng)告訴我......

即使是看起來(lái)像啟動(dòng)時(shí)最大化瀏覽器窗口這樣簡(jiǎn)單的事情也被證明是太困難了。 Claude 嘗試過(guò)使用 Python 和 Javascript,但行不通。 他不知道為什么,Stack Overflow 上的天才已經(jīng)回答過(guò)這個(gè)問(wèn)題好幾次了,他們的建議也不起作用。 我的猜測(cè)是文件之間存在一些代碼沖突,但我對(duì)代碼的了解還不足以立即弄清楚。 當(dāng)你需要人工智能時(shí)它在哪里???

我發(fā)現(xiàn)一些生成的測(cè)試代碼有多個(gè)expect/assert。 我相信每個(gè)測(cè)試只有一個(gè)斷言是最佳實(shí)踐,但知道這并不總是現(xiàn)實(shí)的情況,特別是當(dāng)測(cè)試是新的并且您還不信任它們時(shí)。

我發(fā)現(xiàn)自己是一名“及時(shí)工程師”,試圖找出如何將事情推向正確的方向。 由于我自己沒(méi)有編寫(xiě)任何產(chǎn)品代碼,因此我不熟悉其內(nèi)部工作原理,并希望 Claude 能夠拿起它并運(yùn)行它。 畢竟是他寫(xiě)的,不過(guò)他好像記性不太好。 他給你的錢足夠讓你開(kāi)始,但肯定不足以讓你問(wèn)一次并收錢。

讓生活變得更輕松的是使用 API 來(lái)調(diào)用創(chuàng)建和刪除數(shù)據(jù)的 CRUD 函數(shù),讓端到端測(cè)試僅測(cè)試其預(yù)期功能。 如果您曾經(jīng)為軟件應(yīng)用程序編寫(xiě)過(guò)自動(dòng)化測(cè)試,那么這個(gè)測(cè)試項(xiàng)目的缺點(diǎn)和缺失的功能可能聽(tīng)起來(lái)太熟悉了。 在真正開(kāi)始測(cè)試產(chǎn)品功能之前,您通常最終不得不解決產(chǎn)品缺點(diǎn)。 您可能還記得在第一章中,我打算構(gòu)建 API-First 產(chǎn)品,但很快就失控了。 如果沒(méi)有 API,也許直接 SQL 調(diào)用對(duì)于設(shè)置和拆卸更有意義。

如果您在另一個(gè)項(xiàng)目中進(jìn)行自動(dòng)化測(cè)試,并且熟悉新項(xiàng)目的代碼和頁(yè)面結(jié)構(gòu),則復(fù)制/粘貼/調(diào)整可能會(huì)比此處概述的 Claude Playwright 方法更快地幫助您。 至少這樣你會(huì)對(duì)代碼有一定的熟悉,并且可以有信心地進(jìn)行調(diào)整。 截至目前(2024 年 11 月),我發(fā)現(xiàn)要求 Claude 與 Playwright 一起生成端到端測(cè)試是一項(xiàng)痛苦的練習(xí)。

Part  Using Cursor and Claude to Create Automated Tests with Playwright


關(guān)于作者

Joe Giglio 是一位擁有 25 年軟件行業(yè)經(jīng)驗(yàn)的資深人士。在他的職業(yè)生涯中,他曾在一家本地?fù)芴?hào) ISP、各種規(guī)模的初創(chuàng)公司以及一家成熟、發(fā)展緩慢的企業(yè)工作過(guò)。每一站都學(xué)到了重要的經(jīng)驗(yàn)教訓(xùn)。

他最近的項(xiàng)目包括:

遠(yuǎn)程工作培訓(xùn)和咨詢:chiefremoteofficer.com

Kindle 書(shū)籍《讓遠(yuǎn)程工作,為你工作》

遠(yuǎn)程公司排名。想想“遠(yuǎn)程公司的玻璃門(mén)”:remotescorecard.com

Joe 的指導(dǎo)原則是:遠(yuǎn)程優(yōu)先、質(zhì)量驅(qū)動(dòng)、客戶支持和終身學(xué)習(xí)。他是一個(gè)內(nèi)向的人,早在它流行之前就練習(xí)了社交距離!

他目前居住在北卡羅來(lái)納州,始終對(duì)新的機(jī)會(huì)、結(jié)識(shí)優(yōu)秀人才和了解令人興奮的項(xiàng)目感興趣。

聯(lián)系 Joe Giglio:joe -AT- joegiglio.org |推特 |領(lǐng)英

以上是Part 使用 Cursor 和 Claude 與 Playwright 創(chuàng)建自動(dòng)化測(cè)試的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

Laravel 教程
1600
29
PHP教程
1502
276
如何處理Python中的API身份驗(yàn)證 如何處理Python中的API身份驗(yàn)證 Jul 13, 2025 am 02:22 AM

處理API認(rèn)證的關(guān)鍵在于理解并正確使用認(rèn)證方式。1.APIKey是最簡(jiǎn)單的認(rèn)證方式,通常放在請(qǐng)求頭或URL參數(shù)中;2.BasicAuth使用用戶名和密碼進(jìn)行Base64編碼傳輸,適合內(nèi)部系統(tǒng);3.OAuth2需先通過(guò)client_id和client_secret獲取Token,再在請(qǐng)求頭中帶上BearerToken;4.為應(yīng)對(duì)Token過(guò)期,可封裝Token管理類自動(dòng)刷新Token;總之,根據(jù)文檔選擇合適方式,并安全存儲(chǔ)密鑰信息是關(guān)鍵。

解釋Python斷言。 解釋Python斷言。 Jul 07, 2025 am 12:14 AM

Assert是Python用于調(diào)試的斷言工具,當(dāng)條件不滿足時(shí)拋出AssertionError。其語(yǔ)法為assert條件加可選錯(cuò)誤信息,適用于內(nèi)部邏輯驗(yàn)證如參數(shù)檢查、狀態(tài)確認(rèn)等,但不能用于安全或用戶輸入檢查,且應(yīng)配合清晰提示信息使用,僅限開(kāi)發(fā)階段輔助調(diào)試而非替代異常處理。

什么是Python型提示? 什么是Python型提示? Jul 07, 2025 am 02:55 AM

typeHintsInpyThonsolverbromblemboyofambiguityandPotentialBugSindyNamalytyCodeByallowingDevelopsosteSpecefectifyExpectedTypes.theyenhancereadability,enablellybugdetection,andimprovetool.typehintsupport.typehintsareadsareadsareadsareadsareadsareadsareadsareadsareaddedusidocolon(

如何一次迭代兩個(gè)列表 如何一次迭代兩個(gè)列表 Jul 09, 2025 am 01:13 AM

在Python中同時(shí)遍歷兩個(gè)列表的常用方法是使用zip()函數(shù),它會(huì)按順序配對(duì)多個(gè)列表并以最短為準(zhǔn);若列表長(zhǎng)度不一致,可使用itertools.zip_longest()以最長(zhǎng)為準(zhǔn)并填充缺失值;結(jié)合enumerate()可同時(shí)獲取索引。1.zip()簡(jiǎn)潔實(shí)用,適合成對(duì)數(shù)據(jù)迭代;2.zip_longest()處理不一致長(zhǎng)度時(shí)可填充默認(rèn)值;3.enumerate(zip())可在遍歷時(shí)獲取索引,滿足多種復(fù)雜場(chǎng)景需求。

什么是Python迭代器? 什么是Python迭代器? Jul 08, 2025 am 02:56 AM

Inpython,IteratorSareObjectSthallowloopingThroughCollectionsByImplementing_iter __()和__next __()。1)iteratorsWiaTheIteratorProtocol,使用__ITER __()toreTurnterateratoratoranteratoratoranteratoratorAnterAnteratoratorant antheittheext__()

Python Fastapi教程 Python Fastapi教程 Jul 12, 2025 am 02:42 AM

要使用Python創(chuàng)建現(xiàn)代高效的API,推薦使用FastAPI;其基于標(biāo)準(zhǔn)Python類型提示,可自動(dòng)生成文檔,性能優(yōu)越。安裝FastAPI和ASGI服務(wù)器uvicorn后,即可編寫(xiě)接口代碼。通過(guò)定義路由、編寫(xiě)處理函數(shù)并返回?cái)?shù)據(jù),可以快速構(gòu)建API。FastAPI支持多種HTTP方法,并提供自動(dòng)生成的SwaggerUI和ReDoc文檔系統(tǒng)。URL參數(shù)可通過(guò)路徑定義捕獲,查詢參數(shù)則通過(guò)函數(shù)參數(shù)設(shè)置默認(rèn)值實(shí)現(xiàn)。合理使用Pydantic模型有助于提升開(kāi)發(fā)效率和準(zhǔn)確性。

如何用Python測(cè)試API 如何用Python測(cè)試API Jul 12, 2025 am 02:47 AM

要測(cè)試API需使用Python的Requests庫(kù),步驟為安裝庫(kù)、發(fā)送請(qǐng)求、驗(yàn)證響應(yīng)、設(shè)置超時(shí)與重試。首先通過(guò)pipinstallrequests安裝庫(kù);接著用requests.get()或requests.post()等方法發(fā)送GET或POST請(qǐng)求;然后檢查response.status_code和response.json()確保返回結(jié)果符合預(yù)期;最后可添加timeout參數(shù)設(shè)置超時(shí)時(shí)間,并結(jié)合retrying庫(kù)實(shí)現(xiàn)自動(dòng)重試以增強(qiáng)穩(wěn)定性。

Python函數(shù)可變范圍 Python函數(shù)可變范圍 Jul 12, 2025 am 02:49 AM

在Python中,函數(shù)內(nèi)部定義的變量是局部變量,僅在函數(shù)內(nèi)有效;外部定義的是全局變量,可在任何地方讀取。1.局部變量隨函數(shù)執(zhí)行結(jié)束被銷毀;2.函數(shù)可訪問(wèn)全局變量但不能直接修改,需用global關(guān)鍵字;3.嵌套函數(shù)中若要修改外層函數(shù)變量,需使用nonlocal關(guān)鍵字;4.同名變量在不同作用域互不影響;5.修改全局變量時(shí)必須聲明global,否則會(huì)引發(fā)UnboundLocalError錯(cuò)誤。理解這些規(guī)則有助于避免bug并寫(xiě)出更可靠的函數(shù)。

See all articles