久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

從unittest到Pytest:自動(dòng)化測(cè)試框架遷移實(shí)戰(zhàn)與最佳實(shí)踐

從unittest到Pytest:自動(dòng)化測(cè)試框架遷移實(shí)戰(zhàn)與最佳實(shí)踐 寫測(cè)試代碼這件事我折騰了快十年從最早手寫腳本到unittest再到Pytest最大的感受就一句話測(cè)試代碼寫得好不好不取決于你寫了多少用例而取決于整套測(cè)試跑起來(lái)是否“舒坦”。Pytest就是那種能讓你從“應(yīng)付差事”變成“愿意維護(hù)”的框架。這篇東西不是官方文檔的復(fù)述是我自己從unittest痛苦遷移過(guò)來(lái)的實(shí)操記錄覆蓋安裝、工程結(jié)構(gòu)、fixture、參數(shù)化、報(bào)告和排坑適合剛接觸自動(dòng)化測(cè)試的新手也適合已經(jīng)在用unittest但想換一套更順手工具的人。很多朋友第一次接觸Pytest都是從“pytest比unittest好用”這句話開(kāi)始的但到底好在哪里、怎么用才算用得優(yōu)雅很少有文章講透。這篇我盡量用實(shí)際場(chǎng)景說(shuō)話把踩過(guò)的坑和驗(yàn)證過(guò)的寫法都攤開(kāi)來(lái)聊。1. 為什么是Pytest先從unittest的痛點(diǎn)說(shuō)起1.1 unittest讓人最難受的幾個(gè)地方如果你是從unittest起步的下面這些場(chǎng)景你應(yīng)該不陌生。首先是那套固定的類繼承測(cè)試用例必須寫在unittest.TestCase的子類里方法名必須以test開(kāi)頭想打破這個(gè)套路就得翻官方文檔去折騰。類本身沒(méi)問(wèn)題問(wèn)題在于它把所有東西都綁死在一套嚴(yán)格的OOP范式里寫簡(jiǎn)單用例時(shí)感覺(jué)冗余寫復(fù)雜用例時(shí)又覺(jué)得不夠靈活。更難受的是前置條件和清理邏輯。假設(shè)我有一批需要登錄態(tài)的接口測(cè)試用unittest寫我得在setUp里做登錄、初始化數(shù)據(jù)、拼接請(qǐng)求頭然后在每個(gè)用例里重復(fù)調(diào)用到了tearDown還得記得清理測(cè)試數(shù)據(jù)。用例少的時(shí)候還好一旦用例超過(guò)幾十條setUp和tearDown就開(kāi)始各種套娃一個(gè)類里塞滿了和業(yè)務(wù)驗(yàn)證無(wú)關(guān)的準(zhǔn)備工作。最經(jīng)典的痛點(diǎn)是一個(gè)用例可能需要多個(gè)不同的前置環(huán)境但unittest的setUp只能寫一套想根據(jù)不同場(chǎng)景切換就得把類拆得稀碎。還有斷言。unittest自帶一整套assertEqual、assertIn、assertTrue這種API問(wèn)題不在功能而在失敗時(shí)的可讀性。我見(jiàn)過(guò)太多同事盯著AssertionError: False is not true發(fā)呆根本不知道到底是哪一步出了問(wèn)題只能靠print大法一條條去追。這個(gè)體驗(yàn)怎么說(shuō)呢就好比你跟朋友約好了見(jiàn)面地點(diǎn)對(duì)方只回復(fù)你一句“不對(duì)”你根本不知道是地址錯(cuò)了還是時(shí)間錯(cuò)了。1.2 Pytest的核心設(shè)計(jì)思路Pytest解決這些問(wèn)題的思路很直接別搞那么多條條框框讓Python自己的語(yǔ)法來(lái)干活。測(cè)試函數(shù)就是普通函數(shù)只要文件名以test_開(kāi)頭或_test結(jié)尾、函數(shù)名以test開(kāi)頭運(yùn)行pytest命令時(shí)就會(huì)被自動(dòng)發(fā)現(xiàn)。不再需要繼承任何基類不用記住幾十個(gè)斷言API的名字。斷言這塊更是把“少即是多”做到了極致。Pytest直接復(fù)用Python原生的assert語(yǔ)句比如assert user[name] 張三斷言失敗時(shí)它會(huì)自動(dòng)打印出表達(dá)式兩邊實(shí)際的值。我不用再猜一眼就能看到左邊是李四右邊是張三差異在哪清清楚楚。就這個(gè)能力遷移之后我整個(gè)排查測(cè)試失敗的時(shí)間少了一半不止。fixture機(jī)制算是Pytest最核心的設(shè)計(jì)了。簡(jiǎn)單理解fixture就是一個(gè)帶裝飾器的函數(shù)負(fù)責(zé)準(zhǔn)備數(shù)據(jù)和環(huán)境測(cè)試函數(shù)用參數(shù)名直接聲明需要哪些fixturePytest自動(dòng)把返回值注入進(jìn)去。它把unittest的setUp/tearDown拆成了更靈活、更細(xì)粒度的模塊可以單獨(dú)定義登錄態(tài)、單獨(dú)定義數(shù)據(jù)庫(kù)數(shù)據(jù)、單獨(dú)定義臨時(shí)文件然后隨意組合。1.3 什么場(chǎng)景下我仍然不推薦Pytest不是所有項(xiàng)目都適合無(wú)腦上Pytest。有兩個(gè)反例我實(shí)際遇到過(guò)。一個(gè)是極簡(jiǎn)場(chǎng)景總共就二三十個(gè)用例純本地腳本、不接CI、幾乎沒(méi)有復(fù)用需求那用unittest也一樣能跑多裝一個(gè)依賴反而增加環(huán)境負(fù)擔(dān)。另一個(gè)是對(duì)測(cè)試代碼有極端定制需求的場(chǎng)景比如你要強(qiáng)制所有用例都遵循完全統(tǒng)一的OOP繼承鏈團(tuán)隊(duì)又對(duì)夾具注入這套機(jī)制非常不熟悉那遷移的陣痛期會(huì)比想象中長(zhǎng)。還有一個(gè)情況要特別提醒Pytest雖然對(duì)新手友好但它內(nèi)部其實(shí)很靈活同一個(gè)需求有七八種寫法。靈活意味著團(tuán)隊(duì)容易寫出風(fēng)格迥異的代碼反而需要你提前定好規(guī)范。我見(jiàn)過(guò)一個(gè)項(xiàng)目fixture有四種定義方式、兩種命名風(fēng)格跑到最后測(cè)試代碼的可讀性比被測(cè)代碼還差。工具解決不了人的問(wèn)題這點(diǎn)后面會(huì)細(xì)說(shuō)。2. 環(huán)境準(zhǔn)備安裝、工程目錄與PyCharm配置2.1 用pip安裝pytest初學(xué)者最容易卡住的反而是環(huán)境的整潔度。我強(qiáng)烈建議你在虛擬環(huán)境里操作別圖省事直接裝到系統(tǒng)Python里。第一步創(chuàng)建虛擬環(huán)境python -m venv venv然后激活它Windows下執(zhí)行venv\Scripts\activatemacOS/Linux下執(zhí)行source venv/bin/activate。接著安裝pip install pytest裝完驗(yàn)證一下pytest --version能輸出版本號(hào)就說(shuō)明成了。實(shí)際項(xiàng)目里我更建議直接用一個(gè)requirements.txt把測(cè)試相關(guān)依賴鎖住后續(xù)同事拉代碼只需要一條命令就能復(fù)現(xiàn)環(huán)境pip install -r requirements.txt文件內(nèi)容可以寫成這樣pytest7.4.3 pytest-html4.1.0 pytest-xdist3.3.1 pytest-cov4.1.0 requests2.31.0鎖版本號(hào)這件事很多人嫌麻煩但測(cè)試環(huán)境的穩(wěn)定性恰恰就靠這個(gè)。你永遠(yuǎn)不知道同事機(jī)器上那個(gè)“稍新一點(diǎn)的pytest”會(huì)不會(huì)因?yàn)槟硞€(gè)行為變化就讓整個(gè)套件紅掉。2.2 標(biāo)準(zhǔn)的工程目錄長(zhǎng)什么樣Pytest對(duì)目錄結(jié)構(gòu)沒(méi)有硬性要求但用多了你會(huì)發(fā)現(xiàn)一套好用的默認(rèn)約定。我目前比較推薦的工程結(jié)構(gòu)是這樣的project/ ├── src/ │ ├── __init__.py │ ├── api_client.py │ └── models.py ├── tests/ │ ├── __init__.py │ ├── conftest.py │ ├── test_user_api.py │ ├── test_order_flow.py │ └── test_cart.py ├── requirements.txt └── pytest.ini關(guān)鍵點(diǎn)在tests目錄下的conftest.py。這個(gè)文件是Pytest的“全局配置中樞”里面定義的fixture可以被tests下所有測(cè)試文件直接使用不需要任何import。這一點(diǎn)解決了很多人在unittest里糾纏不清的公共依賴問(wèn)題——登錄狀態(tài)、數(shù)據(jù)庫(kù)連接、臨時(shí)目錄統(tǒng)一寫在conftest.py里所有測(cè)試文件按需聲明即可。pytest.ini是配置文件我通常這樣寫[pytest] testpaths tests python_files test_*.py python_classes Test* python_functions test_* addopts -v -stestpaths指定了pytest運(yùn)行時(shí)要搜索的測(cè)試目錄避免在無(wú)關(guān)代碼里浪費(fèi)時(shí)間。addopts里的-v是詳細(xì)輸出-s是讓print內(nèi)容直接顯示。調(diào)試階段這倆我必開(kāi)不然print的內(nèi)容會(huì)被Pytest的捕獲機(jī)制吞掉很容易產(chǎn)生“代碼明明執(zhí)行了但啥都沒(méi)打印”的錯(cuò)覺(jué)。2.3 PyCharm里怎么配置用PyCharm的話有幾點(diǎn)值得先設(shè)置好。打開(kāi)Settings找到Project Interpreter確認(rèn)解釋器指向的是剛才那個(gè)虛擬環(huán)境里的Python而不是系統(tǒng)自帶的。然后在Tools下面有個(gè)Python Integrated Tools把Default test runner設(shè)為pytest。這兩步做完你在測(cè)試文件里點(diǎn)右鍵就能直接選Run pytest跑完之后點(diǎn)左側(cè)紅黃綠色的小條就能看到失敗詳情。PyCharm對(duì)Pytest的fixture跳轉(zhuǎn)也支持得很好按住Ctrl點(diǎn)函數(shù)參數(shù)里的fixture名能直接跳到定義位置。這點(diǎn)對(duì)讀別人寫的測(cè)試代碼特別有用不然光靠人肉找fixture定義會(huì)瘋掉。項(xiàng)目跑起來(lái)之后那個(gè)Run窗口里顯示的日志如果太亂可以在pytest.ini里調(diào)整日志級(jí)別加上log_cli true和log_cli_level INFO讓關(guān)鍵信息透出來(lái)。3. 核心特性實(shí)操斷言、fixture與參數(shù)化3.1 斷言就應(yīng)該用原生assertPytest把斷言簡(jiǎn)化到接近“說(shuō)人話”。看兩個(gè)例子就明白了def test_user_profile(): user get_user_by_id(1001) assert user is not None assert user[nickname] 老王 assert len(user[tags]) 3失敗了Pytest直接告訴你assert user[nickname] 老王 E AssertionError: assert 老李 老王你不需要任何額外解析錯(cuò)誤信息自帶現(xiàn)場(chǎng)。更絕的是對(duì)集合和字典的斷言def test_permission(): perms get_user_permissions(1001) assert {read, write} set(perms)如果失敗它能直接列出你期望的集合里哪些元素不在實(shí)際結(jié)果里。這種差距用過(guò)就回不去了。斷言異常的手段也要會(huì)用比如驗(yàn)證一個(gè)接口在參數(shù)錯(cuò)誤時(shí)拋出ValueErrorimport pytest def test_invalid_param_raises(): with pytest.raises(ValueError, matchid不能為空): create_order(user_idNone)match參數(shù)不是必須的但我建議能寫就寫它能把“確實(shí)拋了異常但拋的卻是另一個(gè)異?!钡那闆r暴露出來(lái)。3.2 fixture測(cè)試前置與清理的正確姿勢(shì)fixture的核心在“聲明式”這三個(gè)字上。比如我要準(zhǔn)備一個(gè)帶登錄態(tài)的API客戶端最基礎(chǔ)的寫法是這樣import pytest import requests pytest.fixture def auth_client(): token login(test_user, password) client requests.Session() client.headers.update({Authorization: fBearer {token}}) return client def test_get_orders(auth_client): resp auth_client.get(/api/orders) assert resp.status_code 200測(cè)試函數(shù)加一個(gè)參數(shù)auth_clientPytest就自動(dòng)幫你調(diào)好。如果同時(shí)需要多個(gè)前置直接加多個(gè)參數(shù)就行def test_create_order(auth_client, test_db): # auth_client負(fù)責(zé)登錄test_db負(fù)責(zé)準(zhǔn)備數(shù)據(jù)庫(kù)記錄 ...test_db是另一個(gè)fixture負(fù)責(zé)建表、插入測(cè)試數(shù)據(jù)用例跑完還能自動(dòng)清理。模塊在這里被拆得很干凈互相之間不耦合。fixture的清理邏輯放在yield后面pytest.fixture def temp_file(tmp_path): path tmp_path / data.txt path.write_text(hello, encodingutf-8) yield path # 到這里執(zhí)行清理邏輯 tmp_path.unlink(missing_okTrue)這個(gè)yield把“準(zhǔn)備”和“收尾”清晰地分隔開(kāi)了比unittest的tearDown更直觀。你在use fixture之后寫清理代碼它照樣會(huì)在用例結(jié)束時(shí)執(zhí)行哪怕用例中途拋異常也不會(huì)跳過(guò)。fixture還能控制作用域默認(rèn)是function也就是每個(gè)用例跑一遍。但有些資源完全不需要來(lái)回重復(fù)創(chuàng)建比如數(shù)據(jù)庫(kù)連接池、配置文件對(duì)象用pytest.fixture(scopemodule)讓整個(gè)模塊只創(chuàng)建一次速度能差出好幾倍。涉及到“模塊級(jí)只創(chuàng)建一次”的東西我建議順手把權(quán)限檢查也寫在fixture里避免被誤用。不過(guò)fixture有個(gè)讓很多新手困惑的地方默認(rèn)情況下一個(gè)測(cè)試函數(shù)如果聲明了fixture參數(shù)就必須依次執(zhí)行完fixture才能進(jìn)入測(cè)試體。如果你確實(shí)想讓某個(gè)fixture自動(dòng)生效、又不想在函數(shù)簽名里聲明可以用autouseTruepytest.fixture(autouseTrue) def enable_logging(): logging.basicConfig(levellogging.INFO)這種情況適合全局都要生效的橫切邏輯比如測(cè)試數(shù)據(jù)庫(kù)事務(wù)回滾。但autouse別濫用否則所有用例都被強(qiáng)制綁定某些依賴別人看代碼時(shí)很難一眼看出來(lái)為什么這個(gè)fixture生效了。3.3 參數(shù)化一份用例跑遍所有場(chǎng)景參數(shù)化是Pytest里最能提升“含金量”的特性。過(guò)去用unittest如果想對(duì)同一個(gè)接口用十組不同參數(shù)做驗(yàn)證要么寫十個(gè)方法要么用循環(huán)包一層。但循環(huán)包一層的后果就是如果第三組數(shù)據(jù)失敗了你只能看到“第3次迭代失敗”具體是哪組參數(shù)、為什么失敗還得自己拼回去。Pytest的pytest.mark.parametrize把數(shù)據(jù)和用例徹底分開(kāi)import pytest pytest.mark.parametrize( price, discount, expected, [ (100, 0.9, 90), (200, 0.5, 100), (50, 0.2, 10), (0, 0.1, 0), ], ) def test_calculate_discount(price, discount, expected): assert price * discount expected運(yùn)行之后Pytest會(huì)把每個(gè)參數(shù)組合當(dāng)成一條獨(dú)立用例輸出類似test_calculate_discount[100-0.9-90]這樣的名字。哪條掛了、掛在哪組數(shù)據(jù)上一眼就能定位。參數(shù)化還有兩個(gè)進(jìn)階技巧。一個(gè)是ids參數(shù)給每組數(shù)據(jù)起別名pytest.mark.parametrize( price, discount, expected, [ (100, 0.9, 90), (200, 0.5, 100), ], ids[九折, 半價(jià)], ) def test_calculate_discount(price, discount, expected): ...這樣生成報(bào)告的時(shí)候用例名不再是那串?dāng)?shù)字而是“九折”“半價(jià)”可讀性直接拉滿。另一個(gè)技巧是參數(shù)化里放fixture的返回值但那是比較高級(jí)的玩法先把基礎(chǔ)搞清楚再說(shuō)。3.4 標(biāo)記和條件跳過(guò)實(shí)際項(xiàng)目里總有幾種用例不能真跑依賴第三方環(huán)境但今天環(huán)境掛了、功能已知有bug且開(kāi)發(fā)還沒(méi)修、在本地調(diào)試時(shí)不想跑慢速用例。Pytest用marker處理這些場(chǎng)景最簡(jiǎn)單的是無(wú)條件跳過(guò)pytest.mark.skip(reason上游API暫未上線) def test_payment_notify(): ...如果想“跑一下看看知道失敗但我不讓它阻塞整個(gè)套件”用xfailpytest.mark.xfail(reason已知缺陷等待修復(fù)) def test_legacy_parsing(): ...xfail的妙處是如果某天這個(gè)用例突然過(guò)了Pytest會(huì)報(bào)告成XPASS這就是一個(gè)明確的信號(hào)開(kāi)發(fā)把bug修了這時(shí)候你可以把標(biāo)記撤掉了。這個(gè)機(jī)制能幫你維護(hù)一個(gè)“已知問(wèn)題清單”比在Excel里記錄靠譜得多。自定義marker也很實(shí)用。比如給接口測(cè)試、UI測(cè)試、冒煙測(cè)試打上不同標(biāo)簽然后在pytest.ini里統(tǒng)一注冊(cè)再配合-m smoke來(lái)單獨(dú)執(zhí)行冒煙用例集業(yè)務(wù)上靈活很多。4. 插件生態(tài)讓測(cè)試報(bào)告和效率起飛4.1 pytest-html零成本獲得一份網(wǎng)頁(yè)報(bào)告跑完測(cè)試之后黑壓壓的終端輸出不是不能看但要是想發(fā)給團(tuán)隊(duì)其他人或者沉淀歷史記錄一份HTML報(bào)告會(huì)體面很多。pytest-html用起來(lái)幾乎不需要學(xué)習(xí)成本pip install pytest-html pytest --htmlreport.html --self-contained-html--self-contained-html參數(shù)的意思是把樣式和腳本全部?jī)?nèi)嵌進(jìn)一個(gè)文件方便單文件轉(zhuǎn)發(fā)對(duì)方不需要聯(lián)網(wǎng)也能正常打開(kāi)。報(bào)告里有每個(gè)用例的耗時(shí)、狀態(tài)、失敗時(shí)的堆棧日常足夠用了。4.2 allure報(bào)告當(dāng)團(tuán)隊(duì)需要更多細(xì)節(jié)時(shí)熱詞里頻繁出現(xiàn)的pytest allure報(bào)告是另一個(gè)重量級(jí)選手。Allure的優(yōu)勢(shì)在于它能把每個(gè)步驟、附帶的請(qǐng)求參數(shù)、日志、截圖都結(jié)構(gòu)化地整合進(jìn)報(bào)告里適合做接口測(cè)試或UI測(cè)試的團(tuán)隊(duì)。用法也不復(fù)雜pip install allure-pytest pytest --alluredirallure-results allure serve allure-results--alluredir先輸出原始數(shù)據(jù)再用allure serve起一個(gè)本地Web服務(wù)展示報(bào)告。相比pytest-htmlAllure能更直觀地展示歷史趨勢(shì)和分類統(tǒng)計(jì)長(zhǎng)期維護(hù)的時(shí)候優(yōu)勢(shì)特別明顯。它的學(xué)習(xí)曲線主要在理解allure.feature、allure.story、allure.step這些裝飾器的組織方式建議從一個(gè)小模塊開(kāi)始試點(diǎn)別一上來(lái)全量鋪。4.3 pytest-xdist多核并行跑測(cè)試測(cè)試套件大了以后串行執(zhí)行的耗時(shí)是團(tuán)隊(duì)最直觀的痛點(diǎn)。pytest-xdist提供了無(wú)腦級(jí)別的加速pip install pytest-xdist pytest -n 4-n 4表示用4個(gè)并發(fā)worker。我實(shí)測(cè)下來(lái)一個(gè)400條用例的項(xiàng)目從6分鐘壓縮到2分鐘出頭效果非常顯著。但注意一點(diǎn)并行跑的前提是測(cè)試之間沒(méi)有共享可變狀態(tài)。如果你某些用例依賴同一個(gè)文件、同一個(gè)數(shù)據(jù)庫(kù)記錄并發(fā)時(shí)大概率隨機(jī)性的失敗。這類用例要先通過(guò)fixture的scope和tmp_path保證數(shù)據(jù)隔離否則加了并發(fā)會(huì)得到一堆莫名其妙的報(bào)錯(cuò)半夜還得被報(bào)警吵醒。4.4 pytest-cov覆蓋率到底夠不夠覆蓋率這個(gè)問(wèn)題經(jīng)常被誤解但還是要引入pytest-cov來(lái)度量哪怕只當(dāng)參考。安裝后運(yùn)行pytest --covsrc --cov-reporthtml會(huì)在命令行給出整體覆蓋率并生成一個(gè)htmlcov目錄點(diǎn)開(kāi)能看到每個(gè)文件里哪些行被覆蓋了、哪些漏掉了。覆蓋率數(shù)字高不代表測(cè)試寫得好但覆蓋率低一定說(shuō)明有大量路徑?jīng)]測(cè)到。我通常把核心模塊的覆蓋率目標(biāo)定在80%以上但更關(guān)注的是“關(guān)鍵分支和異常路徑”有沒(méi)有覆蓋到而不是糾結(jié)那幾行打印日志沒(méi)跑到。4.5 結(jié)合requests做接口測(cè)試的場(chǎng)景最后接上很多人的實(shí)際場(chǎng)景用Pytest做接口自動(dòng)化。其實(shí)不需要什么特別復(fù)雜的庫(kù)requests加上Pytest本身就夠用再加一個(gè)pytest.ini里統(tǒng)一配置BASE_URL接口測(cè)試就能跑得明明白白。常見(jiàn)的做法是fixture里創(chuàng)建session、維護(hù)token然后通過(guò)參數(shù)化去覆蓋各種入?yún)⒔M合。UI自動(dòng)化那邊Pytest和Selenium、Playwright的配合也順理成章因?yàn)閒ixture可以很好地管理瀏覽器實(shí)例的啟動(dòng)和關(guān)閉。熱詞里還有人問(wèn)pytest pycharm其實(shí)就是在IDE里跑這些套件的配置前面已經(jīng)講過(guò)了。5. 常見(jiàn)問(wèn)題與排查技巧5.1 中文路徑與編碼問(wèn)題Windows環(huán)境下項(xiàng)目路徑帶中文時(shí)Pytest偶爾會(huì)報(bào)編碼相關(guān)的錯(cuò)誤。這個(gè)問(wèn)題的根源其實(shí)是Python默認(rèn)讀取配置和測(cè)試文件名時(shí)用了系統(tǒng)api而系統(tǒng)和終端編碼不一致。解決辦法是在pytest.ini里加一行[pytest] ...如果還不行檢查系統(tǒng)區(qū)域的UTF-8支持Windows設(shè)置里把“beta版使用Unicode UTF-8提供全球語(yǔ)言支持”打開(kāi)重啟后再試。我在團(tuán)隊(duì)里遇到過(guò)不下三次這種問(wèn)題解決起來(lái)其實(shí)就這么簡(jiǎn)單。5.2 測(cè)試收集不到用例明明寫了test文件剛用Pytest的人最常遇到“明明寫了測(cè)試文件運(yùn)行卻顯示no tests ran”。逐個(gè)排查這三件事文件名是否滿足test_*.py模式里面的測(cè)試函數(shù)名是否以test開(kāi)頭pytest.ini里的testpaths是否指向了正確目錄第三種情況是我踩坑最多的。testpaths寫錯(cuò)之后Pytest會(huì)直接忽略你的測(cè)試目錄而且不報(bào)錯(cuò)它只會(huì)覺(jué)得“沒(méi)找到用例”。我建議第一輪無(wú)論如何先把testpaths刪了測(cè)試一下確認(rèn)文件能發(fā)現(xiàn)再慢慢加上配置。5.3 fixture名字沖突問(wèn)題fixture多了之后conftest.py里同名fixture可能覆蓋另一個(gè)文件里的本地同名fixturePytest的fixture解析順序是“最近的優(yōu)先”。這個(gè)問(wèn)題有時(shí)會(huì)鬼魅地導(dǎo)致“本地定義了fixture但執(zhí)行時(shí)用的卻是另一個(gè)”。排查方法很簡(jiǎn)單給fixture起名時(shí)帶上模塊前綴比如api_client改成user_api_client不要用data這種爛大街的名字。也可以用pytest --fixtures命令列出當(dāng)前所有的fixture定義直接看實(shí)際生效的是哪個(gè)。5.4 斷言失敗的堆??床欢芏嘈律鲜值耐瑢W(xué)看到一大片DAG追蹤就慌了。實(shí)際上Pytest在-v模式下失敗信息已經(jīng)通過(guò)assert的表達(dá)式分析給出了最關(guān)鍵的對(duì)比大段堆棧通常只是調(diào)用鏈。記住一條紀(jì)律斷言失敗時(shí)先看信息里的assert這一行和下面的對(duì)比值不要從頭開(kāi)始讀堆棧。如果你覺(jué)得信息還不夠可以自己在fixture或被測(cè)函數(shù)入口打日志配合-s輸出很快就能定位。5.5 運(yùn)行順序與隨機(jī)性問(wèn)題在unittest里用例的執(zhí)行順序通常按名稱排序Pytest默認(rèn)也是這樣。但很多測(cè)試其實(shí)不該依賴順序。一旦你依賴“某個(gè)用例先跑、某個(gè)用例后跑”你就在給自己埋雷。比如某個(gè)用例依賴另一個(gè)用例寫入的數(shù)據(jù)一旦加并發(fā)或者調(diào)整執(zhí)行順序整套測(cè)試就崩。解決方案是把數(shù)據(jù)準(zhǔn)備收斂到fixture里誰(shuí)需要誰(shuí)就聲明而不是靠執(zhí)行順序傳遞。在本地調(diào)試時(shí)可以用pytest-randomly這類插件打亂順序運(yùn)行盡早發(fā)現(xiàn)順序依賴。5.6 不要為了復(fù)用而過(guò)度設(shè)計(jì)最后這條算是我自己的體會(huì)。很多人寫測(cè)試框架的時(shí)候容易上頭一上來(lái)就是抽象類、工廠模式、自定義裝飾器連斷言都要封裝一層。結(jié)果測(cè)試代碼的復(fù)雜度遠(yuǎn)超業(yè)務(wù)代碼用例出了問(wèn)題時(shí)排查成本反而更高。Pytest本身已經(jīng)幫你做好了復(fù)用和擴(kuò)展的底座你要做的更多是保持簡(jiǎn)單。優(yōu)先用內(nèi)置的fixture、參數(shù)化、marker去組織等確確實(shí)實(shí)出現(xiàn)重復(fù)且固定的需求再去考慮更上層的封裝。我在實(shí)際帶項(xiàng)目時(shí)有個(gè)經(jīng)驗(yàn)測(cè)試代碼的評(píng)審標(biāo)準(zhǔn)應(yīng)該和業(yè)務(wù)代碼一樣嚴(yán)格。命名、可讀性、職責(zé)單一都要遵守。你寫在測(cè)試?yán)锏拿恳粋€(gè)魔法數(shù)字、每一個(gè)“暫時(shí)這樣”、每一段無(wú)注釋的復(fù)雜邏輯都會(huì)在三個(gè)月后變成你和同事的噩夢(mèng)。Pytest只是讓這個(gè)過(guò)程更舒服它替代不了工程紀(jì)律。如果讓我給新手一條最值得的建議那就是先把fixture和參數(shù)化這兩樣?xùn)|西吃透它們能解決你80%的測(cè)試組織問(wèn)題。我見(jiàn)過(guò)太多人把精力耗在研究各種花哨插件上最后fixture都沒(méi)用明白這是本末倒置。測(cè)試的意義在于給你信心讓你敢改業(yè)務(wù)代碼而不是給你一套運(yùn)行了卻沒(méi)人敢依賴的儀式。讓自己的套件始終保持著“跑起來(lái)很快、掛了能秒懂、換環(huán)境幾分鐘就能復(fù)現(xiàn)”的狀態(tài)這比任何技術(shù)選型都重要。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲综合性感在线| 久久久久国色αv免费观看| 亚洲欧洲网站免费观看| 翔田千里A片一区二区| 久久视网78| 99视频只有精品| 黄视频免费| 欧美色交| 色九久| 伊人 俄罗斯 a v| 天天狠| xxx0国产在线播放| 精品无码久久久久久久久果冻糖心 | 色色婷婷五月| 国产精品国产拍高清AV| 高清在线偷拍自拍视频| 成人性爱全视频观看| 精品国产av一区二区三区四区入口| 精品二区三四区五电影| 欧美第一页| 色综合潮| 九九热视频这里只有精品| 人人操av| 亚洲天堂电影精品一区| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 秋霞一区二区三区四区五区六区七区| 四虎永久在线精品免费网址| 精品网站9999| 亚洲情色婷婷五月天| www.狠狠| 思思99热| 91在线|亚| 色五月亚洲| 日韩欧美字幕亚洲一区二区| 欧美日韩国产高清在线一二三区 | 大屁股xxxxx| 人人看欧美性爱| 国产女同视频在线播放| 操比国产| 色婷婷av在线观看| 老女人爆菊| 亚洲综合另类欧美久久久| 久久精品女同亚洲女同13| 青青草男人天堂| 欧美极品女人的天堂| 三级片网站在线播放| 九九九久千久久激情蜜桃在线看 | 67914在线兔费成人视频| 亚洲脚交| 91精品人妻一区二区三区蜜桃| 亚洲人妻在线一区| 精品欧美А∨无码黑人大荫蒂| 黄色免费网| 91亚洲色人| 亚洲乱伦图片视频| 嗯啊不要啊在线 | 色欲av国内精品久久久久久| 免费岛国一级片| 人人玩人人添人人澡免费| 国产二区三区免费视频| 国产偷拍自拍在线视频| 97人人干| 伊人991| 超碰在线免费一区二区三区| 99国产精品| 国产家庭乱伦性爱视频| 国产精品老师| 天天干2区3区| 亚洲综合色图欧美| 操逼逼福利视频| 噜噜在线| 啊啊啊啊啊好舒服视频| 91网九色蝌蚪操熟女| 国产极品一区二区三区三州| 青娱乐欧美激情一区二区| 久九九九九九九九热| 加勒比AV天堂| 日比av无码| 另类小说欧美激情校园春色| 尹人免费观看视频在线| 久久精品国产亚洲AV无码电影| 在线国产探花| 99久久9| 少妇三p| 亚洲一级性爱视频免费看| 亚洲四虎熟女精品| 青青草原综合久久大伊人精品| SUV一区二区在线看| 97超碰精品图片| a'v在线资源| 欧美日本国产日韩激情视频| 欧美色图中文字幕| 精品欧美乱码久| 亚洲色色探花| 日韩在线人妻网站| 熟妇人妻丰满久久久久久久无码 | 激情专区综合| 亚洲激情色片| 亚洲精品国产精品成人| 色婷五月天| 330dv亚洲成年视频网| 亚洲三级。日韩三级| 亚洲精品国产熟女| 国产第二页| 探花视频免费观看国产专区| 首页亚洲国产高跟丝袜诱惑视频| 尹人免费观看视频在线| AV天天综合| 美女t无毒不卡不卡| www.91人妻.com| 人人乐大香蕉| 欧美97爱| 色亚州人久干视频在线观看免费版 | 另类图片天天影视| 九九热免费视频| 丰满熟妇大乳做爰| 五月天久久久| 大色网久久| 五月天黄色激情视频| 1024手机看片欧美日韩| 26UUU欧美激情一区二区| 国产精品经典一卡久久久 | www…国产操逼| 国产丸一视频| 久久99午夜精品一区人妻| 99国产精品免费| 国产高清视频无码在线| 日韩懂色网| 乱伦一二三区| 中文字幕天天操| www熟女乱伦com| 国产精品 午夜福利| 亚州熟女乱伦| 桃色人妻在线视频| 国产精品亚洲一区二区三区四区| 久久久啊啊啊| 香蕉久久精品| 日本操逼视频导航| 欧美激情 一区| 最新欧洲欧美日本激情网站| 明星性猛交ⅹxxx乱大交| 嗯……啊…嗯嗯…啊…好舒服| 精品一区二区国产日韩| 天美传媒Av在线| 精品毛片久久久精品毛片| 九九五月天| 久久久久久午夜男人的天堂| 乱伦日本中文自拍| 嫩草黄页| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 免费伦费视频在线观看| 国产深喉| 大香蕉十区| 八人操人人摸人人看| 国模91| 狠狠色综合网| 国产精品亚洲天堂网址| 日韩欧美三级| 亚射在线| 97色欧洲| 97人人爱人人做人人乐| 任你爽视频| 国产免费黄色一级大片| 欧美人妻一区二区| 亚洲av总站| 国产超碰人人操| 亚洲天堂男人| 国产精品另类一区大香蕉| 久久久艹艹艹| 国产麻豆福利av在线播放| 欧美日韩传媒| 久久国产乱子伦精品免费女,网站| 熟妇亚洲一区二区三区| 91人妻Pr| 十八禁的黄污污免费网站| 亚洲男人的天堂va亚洲男人社| 搡老女人老妇女老妇老熟女怎么读| 国产精品爽爽v| 天天综合青苹果| 大香蕉伊在线久草麻豆天堂故事| 夜夜高潮夜夜爽高清视频一 | 嗯啊啊啊轻点视频 | 久久精品一区二区三区蜜桃臀| 精品女人999| 日本国产欧美高清在线| 手机午夜电影神马久久| 亚洲欧美一区二区网址| 免费在线视频97| 色天欧美| 东北女人操比视频| 9久久9综合| 婷婷五月天成人网| 国产又色又爽又舒服的三级视频| 亚洲精品无码久久AV| 97天堂| 有码专区最新中文字幕有码| 福利大香蕉| 日本啊啊啊啊啊视频| 色综合五月天| 国产丝袜视频| 91狠| 九九精品美女高溯喷水| 青青11操操操操操操操操| 午夜大香蕉| 日本www操操操| 操逼逼中文字幕| 国产强奸乱伦xd| 99视频这有这里有精品| 一本大道不卡一二三区| 岛国网址国产 | 精品人妻一区二区三区视频| 熟女91网| 少妇贴图| 一级二级在线观看| 91大胆欧美| 国产suv精品一区二区四| 国产成人亚洲精品自产在线| 91在线|亚| 无码heyzo高清一区| 欧美|91色综合| 五月婷婷色| 亚洲美乱| 久久黄黄| 日韩免费人妻色情网站| 欧美三级一级| 歐美性天天| 中国小夫妻勾搭露脸淫荡对白| AV在线资源| 91在线一起| 91丝袜人妻| 在线免费观看高清无码视频 | 黑人中出21连凳花野真衣| 青青草精品| 伊人久久亚洲色欲综合网站 | 色爱综合网欧美| 伊人伊人LD| 伊人96在线| 男人的天堂一区| 美女操逼A A| 狠狠色狠狠色狠狠五月| 99热超碰在线| 黄总AV色图| 国产精品另类| 午夜操逼不卡| 狠狠操狠狠| 精久久久91| 成人情色综合网| 久久伊人最新网址视频| 色99视频| 欧洲与亚洲欧美精品中文字幕| 国产精品高朝久久久久久久| 9色国产精品一区粉嫩| 蜜乳Av成人片网站| 国产性感骚丝袜在线| 久久亚洲日韩国产欧| 97av在线观看| 操人91| 9 7超碰在线免费观看| 少妇精品久久久八区九区| 亚州一区二区| 思思热在线观看| 久久久久元码视频| 天天射天天操天天干天天吃2018 | 91在线国产后入风骚翘臀美女素人| 色吧综合网| 久热久一区二区三区| 久久久久斤小| 欧美激情性久久久久久| 99免费视频| 亚州男人的天堂| 婷婷久久五月综合激情| 久久久工口| 亚欧美色图| 思思热在线视频免费| 亚洲成人免费电影| 天天情欲宗合网| 黄色片A级一区二区三区| 久综合网| 亚洲久草AV色图| 人人 操人人 操人人| 九九热九九热| 13小男生GAY自慰脱裤子| 欧美性爱五月天| 一级免费精品| 国产福利第一视频| 999九九九九国产动| 欧美性爱无码一区二区三区| 久操 高清| 蜜乳中文字幕a在线| 小少妇| 淫淫综合网| 毛片电影一区二区三区| 熟女熟妇一区二区三四区| 激情五月天社区| 亚洲影视第一页| 人人操人人摸人| 亚州精品人妻一二三区| 日韩成人综合网| 欧美se综合| 九九Av| 91综合熟女| 国语人妻精彩刺激| 成人小说另类在线| A啊啊在线观看| 国产网红精品| 欧美日韩国产色五月综合在线| 极品美女福利在线观看| 超碰97综合网| 久草成人福利导航| 97超碰磁| 中文字幕人乱码中文字的预防方法| 东京热视频网| 97超色| 国内毛片免费h片在线| 亚洲做性| 午夜福利久久久噜久噜久久综合 | 国产精品久久久久无码AV会牛| 精品人妻一区二区三区蜜桃视频| 91色久| 大奶的诱惑| 色九月综合| 日韩无码黄色片| 天天综合91入口| 五月丁香影院| 少妇xx精品| 96一区二区三区| 超碰激情808| 亚洲系列第一页| 极品色综合| 99www.bibizy香蕉资源国产一区二区三区高清| av网站在线观看了| 国内一级精品| 日韩午夜国产| 黄污污污污| 老熟女乱伦一区| 97超碰色中文字幕| av在线浏览| 加勒比海成人视频网 | 日韩黄色小说| 暖暖精品二区三区观看| 亚洲日本韩国在线| 亚洲色系另类精品国产| 婷婷性网| 天天操熟妇| 欧美性区| 天天综合色电影| 狠狠操夜夜| 超碰在线一区二区| 九九九九亚洲| 九九久久国产精品怡红院| 偷窥自拍亚洲色图| 天美传媒国产原创中文字幕亚洲欧美另类| 国产啊v在线免费播放| 花花AV导航| 97操综合| 99精品高潮| 青青操少妇| 大胆91| 久久精品色欧美aⅴ一区二区| 韩日色费| 蜜乳中文字幕a在线| 精品久9| 欧美爱国产综合、| 成人欧美日超碰| 青青草吊丝| 性吧在线视频| 91狠婷| 亚洲精品99| 97人人模人人爽人人| 中文字幕精品日韩中文字幕| 伦伦成年午夜免费视频| 人人摸.人人色| 无码不卡八戒| 日韩精品国产一区二区| 一级AV性爱| 激情文学88| 神马麻豆福利院| 伦理第一页| 青青五月天| 99re这里只有精品2| 2017天天透天天通天天擦| a人欧美综合天堂麻豆| 日韩无码嘿咻黑热久| 蜜桃视频精品一区二区| 成人综合色网| 97视频在线免费看| 色好看av| 中文久久96| 亚州图片第一页| 日韩人人精品| 91性网| 亚洲男人电影天堂| 久久透逼视频| 国模艳艳啪啪一区| 亚洲精品精品一区二区| 成人日韩欧美| 人妻精品4K4K4K4K4| 91精品91久久久中77777| 91中文字幕在线观看| 亚洲精品国产拍免费91在线| 美欧色综合| 九九综合九九综合| 亚洲av影音先锋| av一区二区三区 中文| 亚洲人妻av| 97九色人妻| 中出789在线视频| 2019亚洲男人天堂| 蜜臀一区二区三区在线| 日本高清有码网址视频| 七久久久| 天天看特黄的免费网站| 欧美成人精品一区二区男人蜜臀| 欧美色图91| 操操操五月天婷婷丁香影院| 国产亚洲日本精品在线| 亚洲人精| 亚洲色天堂九9| 欧美精品宗合| 国产 亚洲 丝袜 制服| 狠狠狠狠狠| 天天看特黄的免费网站| www欧美91| 吖在线不卡一区二区国产剧情| 333kkkk·亚洲com久久| 99热97| 60秒免费视频| 翔田千里AV无码秘 三区| 综合五月婷婷亚洲一区| 久久久久久夜夜夜夜夜| 色网亚洲人| 日韩有码 一区二区三区| av午夜影院在线播放| www.99热| 后入式999| 十八禁啪啪视频| 亚洲操人| 欧美日韩另类字幕中文| 精品无码一区二区三区色欲| 久久久九九网站| 夜夜嗷嗷一区二区| 日韩一级二级三级在线不卡观看完整| 日韩无码黄色片| 久久色一区| 中文有码9| 最近2019中文字幕国语免费版| 艳美熟妇先锋一二三区| 蜜臀久久99精品久久久久久| 日本国产欧美高清在线| 伊人 俄罗斯 a v| 国产亚洲色停停久久99精品91| 性爱av在线免费观看| 九九自拍伦理| 国产免a费看黄片在线| www鬼畜国产男人的天堂| 欧美精品激情| 国产成人网| 乱伦熟女论坛| 久久高清欧美国产| 18禁精品网站在线看| 综合欧美日韩在线观看| 97网址97| V A在线| 亚洲男人的天堂AV| 亚洲无码超碰免费| 日韩欧亚太美不卡| 日本不卡一区二区| 91丝袜美女| 日本影视久久免费| 色爱综合网欧美| 婷婷色综合欧美日韩| www.狠狠操| 精品人妻久久久| 国产尹人在线视频免费| 美女黄色91| 五月婷婷色| 色淫网站优优视频| 志村玲子视频一区二区| 日本操逼视频免费| 四虎免费看黄| 色网在线视频观看免费| 久超碰这里只有精品| 99久久久无码国产精品性男| 免费视频观看60秒| 精品夜夜澡人妻无码| 在线日韩日本亚洲国产| 好好的日:com久久九九| 久久‘黄片视频| 99re视频在线播放青草| 亚洲最大91网| 在线综合 亚洲 欧美中文字幕| 91性高| 欧美劲爆视频一区二区| 亚洲高清欧美总合| 大香蕉伊人在线成人AV在线观看| 美国一区二区三区视频| 中国少妇啪啪视频| www.99热在线只有精品| 中文字幕 国产区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 日韩视频小说在线观看| 久久久com| 国产精品熟女一区二区三区| 国产第二页| 婷婷五月天av| 日韩精品在线视频在线观看| 色综九九九一区| 99这里有精品| 成人 日本A片无码8888| 后入式免费视频| 91九九九小逼| 欧美激情综合色综合啪啪五月| 人人么人人操| 大香蕉中文201| 9久久美女首页| 日本久久99| 大香蕉黄色一级片免费看| 久久精品导航| 91欧美性| 97干色天堂| 亚洲乱熟女一区二区三区大香蕉| AV麻豆免费一区| 超碰4A| 日韩图区| 欧美一区二区三区大综合| 激情专区综合| 另类 日韩 熟女| 国产乱伦视频污| 亚洲高潮影院| 亚洲人精品午夜不卡| 少妇六月天| 久久亚洲不卡| 91啪啪视频| 强奸乱伦麻豆| 天天弄天天操| 九九综合| 日韩人妻一区二区精品| 日韩亚洲国产视频| 影视综合无码少妇| 中国农村熟妇毛片视频| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 精品少妇一区二区| 久久精品一区二区三区蜜桃臀| 激情图片亚洲色图| 用力操死我| 丝袜夫妻自拍| 久久国产视频专区一二三| 丁香五月AV| 99久在线精品99re8热| 国产激情av女片自拍| 黄片com.| 国产亚洲色婷婷久久99精品91葵花宝典| 伊人黄色片| 翔田千里AⅤHD无码| 高清无码久操视频| 久久透逼视频| 精品国产丝袜一区二区三区乱码| 在线观看成人性爱免费小视频| 亚洲AV秘无码一区..| 26UUU欧美日本| 日韩国产精品人妻无码久久久| 98久久| 亚洲色图欧美一区二区不卡| 欧美激情久操网| 日韩av性爱在线播放| 欧美中文字幕日韩在线| 欧美日韩国产另类综合| 曰韩精品视频一区二区| 国产网站在线播放| 久久99视频| 丝袜 亚洲 偷拍| 久久久9品一区二区三区| 九一综合精品视品av| 99在线观看无大码| 九九九九九九九| 精品超碰色| …亚洲黄色厕厕女女在线播…| 起碰97| 热无码中文亚洲H一道本一区二区| 午夜.DJ高清在线观看免费7| 久久精品国产72国产精品福利| 国产 三级自拍| 亚洲 综合 欧美| 超碰97玖玖爱| 极品出轨视频网站| 日韩一级欧美一级国产一级台湾| 99久久久无码精品国产人| 亚州AV无码国产精品| 丁香六月婷婷| 亚欧中文字幕在线视频| 国产三级中文字幕粉嫩| 国产婷婷综合在线观看| 妺妺跟我一起洗澡没忍住| 插入综合网| 久久一本大香蕉| 精品人妻一区二区三区四区| 黄色片一区二区三区四区五区| 国产 日韩 另类 视频一区爱| 夂久色| 日日噜噜夜夜久久亚洲一区二区| 超碰97伊人| 精品人妻中文字幕4399| 亚洲黑丝在线| 色香欲天天天天综合色| 国产区日韩区在线观看| 欧美精品自慰系列寂寞少妇| 欧美少妇第一页| 中韩中文字幕在线观看| 人人操人人插人人摸人人干| 久久久蜜桃一区二区三区| 日韩美女高潮喷水视频| 淫荡网址| 色综合色综合网| 91AV天堂| 欧美日韩插逼视频| 涩五月婷婷| 欧美第二页午夜| 人妻色偷色噜| 亚洲午夜免费狠狠干| 啊啊啊啊在线播放| 福利社区午夜一区二区| 青青草在线成人视频| 日日骚一区二区三区| 亚洲一级特黄大片在线播放91| 香一区二区三区| 91观看 国产白丝| 超碰人人超在线观看| 久久99999| 免费视频在线一区二区不卡| 少妇二级| 亚洲欧洲激情卡通另类文学四射小说网站| 欧美极度丰满熟妇hd| 超碰午夜| 久久人人舔人人爽舔人人av片| 九热大香蕉| 日本孕妇一区二区视频操逼免费看 | 日韩欧美成人午夜福利| 91色图片| 成人免费毛片| 99国产精品久久久久久久成人热| 东京热男人的天堂| 艳美熟妇先锋一二三区| 国产400孕妇孕交群| 五月婷婷五月天| 欧美 亚洲精品首页| 国产乱伦性爱AV| 四虎免费在线播放| 色999五月色| 精品人妻少妇| 欧美1727免费观看视频| 99色网| 日韩av三四区| 国产探花日韩援交| 亚洲自拍欧美色综合| 无码天天操| 欧洲性人爱视频| 婷婷亚洲五月***久久| 51一区二区三区| 超碰人人在线| 亚洲欧美天堂| 性色国产东北露脸精品视频| 乱伦av麻豆| 日本熟妇自慰性高潮一区二区三区| 日韩AC| 久久久不卡| 操我啊啊啊啊啊| av一区二区三区四区| 色www精品视频在线观看| 人妻乱仑一区二区三区| 女人香蕉久久毛毛片精品| 丁香五月成人| 岛国黄片网站| 曰本特级特黄特色黄色A级网站高清在线免费看 | 欧美日韩亚洲一区二区在线观看| 大香蕉92| 欧美成人9797| 伊人久久综合影院| 亚洲精品电影| 欧美大香蕉97| 欧美国产伊人久久久久| 亚洲黄色| 午夜毛片高清免费不卡| AV电影在线播放| 最新亚洲黄色免费电影| 欧美国产操逼| 色综合91| 国产午夜无码片在线观看影视 | 日本韩欧美在线播放a| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 综合欧美日本三级| 国产精品久久久吖| 久久激情视频| 黄色高清久久无码依人| 亚洲av无码成人精品国产| 乱抡国产91| 亚洲清纯综合| 国产免费久久精品99re韩国| 99久热| 国产综合网站在线播放 | 日本熟妇浓毛hdsex| 欧美在线|亚洲| 91日日| 亚洲黑丝在线| 国产 无码 一区二区| 2024年最新色情网站在线观看| 久久久久久少妇| 在线天堂999| 天天爽天天干| 亚洲日韩国产欧美综合v| 欧美成熟性爱精品| 欧美春色| 欧美精品欧美精品系列| 精品十三区| 青青国产精品在线| 日韩无码专区| 人人操人人大香蕉| 国产精品熟女九色九色蜜臀| 91美女网站| 久区视频| 欧美亚洲清纯| 色九九综合AV| 福利在线视频一区二区| 久久AV无码1区2区3区| 国产女人高潮视频| 五月丁香啪啪网| 亚州AV无码国产精品| 懂色av色欲av蜜臀av| 人妻9117c| 亚洲第一页第二页激情| 美女91网站| 99精品人妻| 超碰在线一区二区| 69精品| 亚洲欧美999| 加勒比综合| 99热这里只有精品9| 超碰成人国产| 婷婷色在线| AV九九| 中文字幕五区| 97色五月天完| 欧美日韩黄色片一区二区三区四区人与兽做爱| 超碰79人人乐| 啊啊啊好湿国产一二| 中文字幕艹艹| 夜夜嗨av午夜成人| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 国产69精品久久久久99尤物| 中国东北熟女老太婆内谢| 日韩激情中文字幕有码| 99日精品欧美国产| 亚洲第一综合| 久久久久久亚洲精品中文字幕人妻| 久久精品人体| 欧美精品91| 欧美一区二区三区黄色影视| 97视频免费在线| 欧美日韩色| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 天天上日日上日韩精品| 熟妇的味道HD中文字幕| 国产中文字幕曰本毛片| www.狠狠| 天天弄欧美| 欧美综合777| 78超碰| 亚洲成人黄色在线观看| 凹凸视频在线观看伊人| 久久久激情| 99999精品成人| 91 国产丝袜在线播放-百度| 亚洲黄色| 天天色,天天干,天天干| 婷婷丁香熟妇综合网| 国产青一二三| 风骚少妇视频中文字幕| 97久久国产| 少妇一级婬片免费放一级a性色.| 欧日a| 九久9热| 欧洲站一级二级三级h| 偷拍精品一区二区三区| 新婚人妻扶着粗大强行坐下| 国产精品一区二区三区在线密挑| 91高跟美女在线播放| 久久久久熟女| 日本三级一区二区 在线| 五月婷色| 亚洲日本天堂| 久久久久久网址| 97人人模人人爽人人| 91精品丝袜久久久久久无码人妻| 中文字幕第二页| 眼镜人妻101.com| 香蕉在线一区二区三区| 学生妹天天看| 日韩一级性爱无码| 国产亚洲99久久精品| 天美传媒AV国产在线| 久艹日日日| 在线观看国产黄色| 国产熟女二区| 少妇被c 黄 免费观看| 色丁香久久| 粉嫩久久久久| 狠狠色噜噜狠狠狠狠2018| 依人大香蕉| 国产成人啪一区二区| 亚洲欧洲无码bt精品合集| 天天日天天插| 97国产精品在线观看| 2018天天干在线视频| 欧美亚男人的天堂| 凹凸精品熟女在线观看| 99久久网站| 老熟妇一区二区三区| 久久无码成人| 欧美一二在线| 100啪啪视频大全| 国产精品天美传媒| 亚洲久9| 婷婷丁香六月| 欧美色91| 五月香婷婷| 国产不卡的视频 | 男人的天堂无码| 无码日韩人妻av一| 欧美亚洲高清不卡| 精品少妇人妻av久久免费| 日夜久久久九九九久| 亚洲精品一区二区日本| 好湿好紧好爽 视频| 神马久久久久久久| 淫淫总合网| 日本一区二区中文字幕久久| 亚 欧 美 综合| 97在线视频免费| 天天影视综合网欧美精品| 日本天天干天天操一区| http://qxhbdz.com| 国产极品馒头逼| 日本久久久久久久久| av影片在线观看不卡| 色一射色一射| 激情小说日韩无码| 97超碰免费人人性爱| 思思热在线cao| 国产99999久久精品| 懂色AV蜜臀无码精品APP | 99热66| 综合97| 久久超碰、| 91久久精品中文字幕| 一级免费精品| 男人的天堂啪啪啪啪啪蜜桃不卡| 亚洲欧美人妻| 亚洲综合另类| 亚洲欧美日韩有码| 99色热国产视频精品| 中文字幕av一区二区三区人妻少妇 | 激情图片亚洲色图| 国产黄片在线免费观看| 男人天堂毛片| 一区黄二区黄| 中文字幕亚洲永久精品| 色综九九九一区| 超碰79人人乐| 亚洲精品一二区| 天天色综合影视网| 台湾佬中文娱乐自偷自拍| 日韩欧美成人午夜福利| 久99在线免费观看视频| 91黑丝少妇| 亚洲无码AV九九九| 久久精品一区二区| 久久久久大香青草精品综合| 色播丁香| 可以在线观看的黄色网址| 青青操日韩| 亚洲瓯美色图| 色五月婷婷色| 国内偷自视频区视频综合| 精品在线78| 久久亚洲不卡一区二区三区 | 欧美肥臀在线| 久久偷拍人| 色婷婷99| 日韩欧美国产一区二区三区四区| 老熟女综合| 亚洲美女黄色| 久久这里精品国产99丫e6| 黄色一级视| 亚洲人妻中文在线视频| julia国产在线 | 强奸乱伦大香蕉网| 日本αv| 传媒在线观看一区二区三区| 九九自拍伦理| 青青青操| 丁香九月婷婷| 激情综合二| 强被迫伦姧在线观看无码网站| 欧美色蜜桃97| 欧美一品道| 自拍二页| 夜夜操91744565| 人妻中文在线| 在线国产一区二区av| 日韩黄色av中文字幕| 精品九九九九九九| 97色操| 亚洲日韩狠狠撸视频| 蘋果手機免費看成人Av| 91夜夜蜜桃臀1区2区3区| 中文字幕一区av| 99自拍视频在线观看| 中文字幕交换人妻| 99re热有精品视频国产| 日韩肏逼视频| 蜜臀久久99精品久久久久久婷婷 | 夜夜爽33333| 97干在线视频| 天天躁日日躁XXXXYY| 国产精品久久99日日| 51久久夜色精品国产麻豆| av激情亚洲五月天| 婷婷五月天激情四射| 欧美韩日精品99综合| 91欧美少妇| 亚洲美腿丝袜香蕉影视欧美成人| 久久原创中文| 欧美女同在线| 骚熟女AV网| 久热精品在线| 欧洲精品二区| se..亚洲欧美| 国产精品操| 女人天堂av在线播放| 亚洲欧美成人网站AAA| 人人摸人人入| 日欧操屄| 国产精品无码久久久久2025| 女同女同恋久久级三级| 成人a大片在线观看| 亚洲国产尤物yw在线观看| 99老司机精品视频在线观看| AV不卡在线| 唐山老熟妇露脸啪啪叫| 久久露脸国产老熟女| 五月婷婷色色| 精品射1999| 91中文精品日韩欧美在线| 亚洲欧洲日产国产综合网| av久日| 国产精品久久久午夜夜伦鲁鲁| 欧美成人贴图| 狠狠爱综合网| 内射小黄片| 夜夜影视四色| 日本一级黄色电影| 麻豆精品久久久久久久| 亚洲AV高潮| 伊人在线大香蕉二。| 久久久久国色αv免费观看| 风月影院十八禁| 国产亚洲精品激情| 欧美性爱视频免费一区一A| 超碰九色| 色综合加勒比四四季| 校园春色中文字幕AV| 青青草在线视频美女| 亚洲丝袜诱惑| 日本午夜福利视频| 亚洲91综合| 欧美性第一页| 国产精品自拍xxxx| 日本在线一二 | 日va操| 猛交交| 91丨精品丨国产丨丝袜| 久久中文字幕在线观看| 丁香九月 婷婷| 婷婷五月天av| 国产熟女二区| 婷婷爽人人婷婷爽视频| av最新免费中文字幕| 免费视频无码| 欧美日韩亚洲电影| 亚洲人成在线放东京热| 久久99午夜精品一区人妻| 国产欧美精品日韩区二区麻豆天美| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲色图欧美视频| 亚洲色欲一区二区三区| 超碰色美女| 人人操人人干网页| 国产丝袜美女诱惑| 久久激情视频| 成人麻豆av电影网站| 熟女人妻av在线资源,黄色的资源 粉嫩国产精品久久粉嫩 | 风月影院男女十八禁| 男啪女色黄无遮挡免费观看| 综合色啪| 黄久在线| 狠狠操官网| 久久精品亚洲婷婷| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 免费看欧美美女黄色大片| 青青色综合| 国产99999| 激情五月天视频| 青操影院| 一级黄色视频网| 亚洲 图片 欧美 色图| 九九草| 亚洲综合激情五月久久| 久久成人午夜狠狠| 亚洲成人日韩小说| 亚洲自拍另类丝袜综合| 97视频在线| 男人天堂2012| 亚洲中文字幕熟女少妇一区二区| 中文自拍欧美影视| 91人妻久久久久久久久久久久久| 欧美中文字幕日韩在线| 精品国产一区二区久久| 九九热九九| 天天射影院| 超碰碰97资源站| 九九伊人网| 蜜臀网 一区| 丁香五月电影| 色97干| 亚洲天堂综合AV| 色逼综合| 无码99| 99婷婷一区二区| 啊啊啊啊啊操我视频| 亚洲最新Av| 99www.bibizy香蕉资源国产一区二区三区高清 | 欧美偷拍| 欧美制服网站美腿丝袜| 久久久亚洲熟妇熟女| 加勒比在线视频| 12一15性XXXX粉嫩国产| 欧美色图私拍91| 人人操人人摸人人看人人插| 欧美韩国你懂得在线| 夜夜天天噜狠狠爱2021| 长久操视频| 超碰91在线| 天天肏视频| 成人老鸭窝人人在线视频| 国产精品日韩在线一区| 日韩欧亚中文在线| 一个人免费HD91视频| 全国男人天堂网| 97舔舔| 中国一级操逼视频| 啊啊啊啊,啊啊好多水| 狠狠综合网| 青娱乐福利99| 吊色| 禁片 高清 在线观看视频网站| 亚洲一区二区三区春色| 亚av顶级裸体一区二区三区四区五区 | 蜜臀久久99精品久久久久久-DVD原版全| 亚洲。日韩。欧美| 欧美色视频在线| 超碰4A| 大香蕉十区| 91三级理论片播放器| 久久久日本电影| 亚洲色图加勒比| 国产强奸超碰AV| 欧美乱欲| 亚洲涩涩| 激情丁香五月| 国模私拍一区二区三区神乳| 精品一区99999| 久久啊哟| 亚洲精品啪视频| 97超碰香蕉| 色眯眯av| 在线啊啊啊啊| 自拍偷拍 日韩无码| 天天色图| 福利五区| 欧美97在线观看| 丁香五月婷婷色| 久久性爱精品一区| 亚洲天天更新| 亚洲欧洲无码一区夜| 成人夜夜爽| 久久久精品无码亚免费| 国产肏逼网站| 97伊人超碰| 亚洲97p| 国产精品白丝www| 亚洲一区二区久久久久| 国产人伦精品一区二区三区| 思思久热在线精品66| 黄色激情电影在线观看| 88在线一区二区三区| 老师充足的奶水小说| 五月婷婷激情| 日韩探花精品在线视频| 中国AAAAAA黄色片| AV女资源| 亚洲一区制服诱惑| 亚洲综合影片| 亚洲性爱高潮影院| 一区在线观看中文字幕| 色天使亚洲综合在线观看| 深夜福利黄片| 欧美综合第一页| 熟女熟妇一区二区三区视频| 大香蕉啪啪啪啪在线| 日韩美女久久一区二区三区| 久久激情五月| 黄片无码在线制服| 人人操人人插人www| 操屄日韩| 91精片| 伊人91| 最新制服中文第一页| 97中文字幕一区| 欧洲亚洲人人爽爽视频| 天天插夜夜爽| 99www.bibizy香蕉资源国产一区二区三区高清 | 天天干天天干天天干| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧美强奸一区二区诱惑| 手机在线播放国产福利| 中文字幕高清精品一区| 欧差乱伦二三| 国产成人在线观看网址| 九九AV| 日日夜夜精品视频| 97在线免费观看| 无码国产精品96久久久久孕妇| 91天堂网| 欧美91精品国产自产| 天天综合网91| 九九九久久久| 熟女探花啪啪| 日韩免费av片高清无码| 日韩日本欧美在线观看| 日韩免费一级性爱视频| 看免费的黄片| 午夜福利av电影在线| 亚洲国产婷婷在线播放| 亚洲精品一二区| 综合操逼| 91麻豆va国产精品| 天天天天干| 97精彩视频网站| 久草色悠悠在线视频| 91色伦综合| 婷婷九月丁香|