亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
制服丝袜第二页| 欧美亚洲国产自久久| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 无遮挡h肉动漫在线观看| 亚洲色丰满少妇高潮| 一个人免费视频观看在线WWW| 国产极品美女高潮无套在线观看| 男人的天堂kva| 99精品在线| 亚洲三级。日韩三级| 99久视频| 婷婷伊人五月| 色综合20p| 免费看国产曰批40分钟怎么下载| 易易A毛视频| 人妻少妇精品一区二区三区| 色色色欧美| 超碰九九| 天天久久久久久| 好屌色综合| 粘花网06av视频| 中文久久爆乳| 超清中文乱码字幕| 日韩钢筋无码高清啾啾啾| 一,爱啪啪,在线免费视频| 99精品丰满人妻无码| 丁香六月婷婷久久综合| 嗯啊抽插大香蕉网页| 亚洲熟妇综合久久久久久| 伊人大香蕉在线| 香蕉久久AⅤ...| 精品国产乱码久久久A| 亚洲污污网站| 神马午夜久久久| 国产在线视视频有精品| 黄色网址在线免费观看| 国产精品亚洲免费| 色欲天天综合网| 99婷婷一区二区| 亚洲欧美天堂| 亚洲黄色电影| 亚洲熟女一区| 中文久久96| 日本久久999| 97操97色| 美女诱惑爱爱| 日日夜夜天天| 毛片中心9视频99| 亚洲一区二区精品福利| 91视频精品| 日韩免费a级毛片无码a∨| 久久97视频| 久久久99999久网站| 熟妇人妻一区二区| 亚春色色| 亚洲人妻中文在线视频| 色色色日本| 尤物视频视频官网| 人人妻人人澡人人爽久久av| 天天干夜夜| 成人精品一区二区三区| 亚洲污污网站| 久久久精品网| 亚洲 在线| 久久久久亚洲Av无码专区老牛影视 | 凌辱美少妇久久aV| 色综合国产在线观看| 青青五月天| 日韩精品人妻中文字幕不卡乱码| 国产97色在线| 欧美经典一区二区三区| 久久精品72| 日日躁狠狠躁天天躁精品| 91亚洲情色| 久久这里只精品免费福利| AV免费在线播放一区| 黑人白女精品一区| 欧美日韩国产三级黄色| 97干在线视频| 日本高清加勒比| 少妇精品| 亚洲 自拍偷拍 欧美| 啪啪啪精品视频| 亚洲一区二区三区久久 亚洲一区二区| 精品免费一区二区三区在线亚洲人成| 五月天欧美色图| 神马久久久久| 九九无码视频| 人妻色情天天操| 97在线欧| 艹少妇网站| 日韩三四五区| 男人的天堂久久| 情趣丝袜无码操逼视频| 欧美日韩性爱无码| a男人的天堂| 日本精品一区二区不卡| 国产精品婬乱一级毛片彝族| 制服少妇欧美| 夜夜嗨一区二区三区三州加勒比 | 国产欧美日韩女同性恋ww喷水精品| 91九九九小逼| 久操91视频| 农村妇女一级二级三级视频| 91 亚欧| 国产成年女黄特黄| 日韩精品区二区三区不卡| 天天欧美欧美亚洲网| 夫妻AV网站| 377p欧洲日本亚洲大胆| 青青草原综合久久大伊人精品| 丝袜美腿91| 超碰在线观看av不卡| 伊人影院在线理论播放| 日日骚AV| 亚洲最大的黄色电影网站。| 日韩大香蕉| 国产精品成人久久一区二区三区| 上床不卡网站| 日本三级R| 亚洲涩涩| 日韩无码黄色片| 熟啊v色欧美热| 亚洲美女精品九九视频| 巨爆乳肉感一区二区三区竹菊影视| 久久久爆乳翘臀一线天伦理视频| 婷婷五月天激情四射| 黄片在线免费在线观看| 尤物视频视频官网| 天美传媒AV国产在线| 69XX一中文字幕人妻91| 嗯嗯啊啊好爽| 又黄又爽在线观看视频| 精品国产Av无码久久久伦古装| 自拍鲍鱼一区在线高清观看免费| 人澡逼| 操婢日韩| 97国产精品久久久久| 日本精品高清一二区一本到| 国产精品网站www| 亚洲欧美国产中文视频| 99后入| 日本性感人妻91| 天美av在线观看| 国产品精品自在在线午夜免费| 亚洲91av| 激情小说日韩无码| 亚洲文学偷乱拍啪啪啪啪| 综合欧美日本三级| 成人小说另类在线| 成人精品欧洲亚洲| 99综合| 天天综合~91| 精品少妇一区二区三区免费观看| 日本三级A片网站com| 亚洲精品欧洲精品| 婷婷五月天AV| 久久综合国产精品国产| 天天干人妻视频| 美女露胸露奶头| 人妻久久一区二区三区| 97资源制服丝袜| 国产精品视频自拍在线| 9/A片| 狠狠久久手机视频精品| 婷婷丁香人妻 | 熟妇艹鸡八| 强奸乱伦日韩AV| 九九无码| 欧洲色综合| 日本一区99| 国产亚州高清国产拍精| 日韩综合无码一区久久92| 日日嗨AV一区二区夜夜| 色哟哟国产精品免费网址| 人妻少妇被猛烈进入中| 农村女一级毛卡片| 欧美日韩中文字幕不卡| 久久久久亚洲精品| 精品超碰中文在线| 蜜乳性色无码专日粉嫩骚逼AV| 欧美九九九九九| 人妻超碰青青草98| 欧美页片| 色哟哟国产精品免费网址| 黄片aaaaa一区| 影音先锋少妇| CCYY草草影院地址入口| 精品免费视频国产一区| 亚洲国产熟妇综合色专区| 亚洲的天堂网| 超碰97首页| 天天享受天天看| 精品久久一区二区三区四区五区| 欧美操逼一二三区| 大香蕉宗合网在线| 亚洲中文字幕精品久久久久久直播| 91久久九九精品国产综合| 清纯唯美综合| 美女91AV| 亚洲欧美一区二区网址| 精品一区二区三区国产| 天天看天天日| 精品国产av一区二区三区四区入口| 久久久久国色αv免费观看| 久久久久深夜无码| 蜜桃臀一区二区三区久久| 躁躁日曰躁2020| 久久免费老司机精品| 久操精品网| 777奇米影视777四色| 国内毛片国产专区二| 天天干天天燥| 欧美一级久久久久久久大片动画| 强奸乱伦αv片| 亚洲色图欧美视频| 亚洲操人| 亚洲骚女一区二区三区| 97操97色| 久久精品国产精品| 欧美亚洲色的图| 青青草华人在线欧美在线| 亚洲天堂少妇| 淫淫综合网| 啊啊啊好想要| 國產尤物AV尤物在線觀看| 99热只有这里有精品| 国产麻豆一级精品视频| 骚逼高潮久久精品| 大香蕉十区| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 国产兽交视频在线播放| 亚洲中文国际强奸字幕| 韩国一级婬片A片AAAAA| 熟女啪啪视频| 欧美 亚洲 另类 综合| 欧洲一区二区三区四区在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 色哟哟国产精品免费网址| 亚洲自拍小说| 肉丝中文无码高清| 亚洲天堂2020| 被男人吃奶很爽的毛片| 操逼网站视频漫画国产| 亚欧精品久久久久久久久久久| 99.色网| 97伪v| 精品一级| 亚洲成人免费中文字幕| 久久久com| 蜜桃久久久久久久久久久久| 国产伊人精品在线| 懂色中文一区二区三区 | 久久精品人体AV| 国产精品情侣啪啪| 蜜臀网址在线| 天天干天天燥| 精品免费一区二区三区在线亚洲人成| 热久久无毒不卡| 无码国产精品96久久久久孕妇| 久久毛卡| 欧美亚洲日韩16色| 久久久久久久强迫| 二色av| 黄日韩| 亚州综合色| 亚洲美女自拍偷拍视频| 久久黄色视频一区二区三区| 亚洲加勒比久久日本道| 自慰白浆在线观看| 天堂资源站| 97天堂| 无码少妇精品一区二区60岁老人| 亚洲天堂电影网| 日韩欧美大片免费高清啪啪| 六月色婷婷| 黄色十八禁| 岛国片在线播放| 精品妇女一区二区三区| 精品97精品97| 日韩无码人妻| 91久青| 日产狠狠干| AV色图| 翔田千里无码中出中文字幕| 伊人国产视频| 亚洲精品无码成人久久久99| 久久视网78| 麻豆天美91| 亚洲欧洲小说图片视频| 天天综合亚洲综合| 无码91| 男人天堂2017| 欧美第一页性| 免费岛国一级片| 天天综合日韩网| 97在线免费视频观看| 亚洲黄网在哪免费看| 亚洲熟女乱综合一区二区三区| 夜夜草我| a人片中文字幕一区二区| 在线观看亚洲成人精品| 久久神马影院| 国产曰批免费观看久久久| 97在线欧洲| 51国产午夜精品视频| 嗯阿好爽好紧| 亚洲囯产精品女人久久久| 欧美aⅴ99久久黑人专区| 俄罗斯一区二区视频在线观看| 中文字幕日韩人妻视频一区二区三区交换夫妻 | 天天日天天搞天天干| 97露脸精品丝袜| A级毛片在线看免费| 超碰1997| 操逼操操操91| 欧美AB在线| 日本天天人人狠狠在线日美女 | 欧美在线啊啊啊| 成人乱人伦一区二区| 秋霞福利网| 乱伦熟女区| 精品视频一二三中文| 激情图片伦理国产一区二区日韩| 青青免费在线视频一区| 97免费视频在线观看视频| 女人高潮大叫一级毛片| 校园春色 欧美| 人人色人人射人人妻| 成全在线观看免费观看| 日本媚薬中文字幕在线| 天天天乱色综合全| 欧美十八禁在线看| 精品日韩人妻精品一二三区| 国产精品一区二区麻豆| 大香蕉 222| 欧美日韩国产高清在线一二三区| 亚州综合在线| 精品人妻一二三四区视频| 欧美日韩成人在线| h无码动漫在线观看| 欧美劲爆第一页| 日韩视频小说在线观看 | 超碰到97情色| 精品.99999| 国产麻豆福利av在线播放| 丝袜AV一区二区三区| 国产精品乱码久久久久久久久久久久| 日韩欧美加勒比| 欧美色图成人网一区二区 | 91精品丝袜在线观看| 狠狠操狠狠操操| 大香蕉92| 加勒比AV网| 日本三级大片| 韩国一级婬片A片AAAAA| 久久精品欧美一区二区三区不卡| 欧美AB在线| 欧美天天在线| 一区二区三区无卡视频在线观看| 最新AVzaixian| 欧美婷婷五月天| 欧美综合娱乐久久| 国产精品高清2021在线| 亚洲欧美另类图片| 欧美综合综合| 欧美92| 欧美色图小说综合| 久久久一区二区| 超碰性爱97| 中文字幕一区av| 日韩中文字幕视频在线观看| 国产极品美女高潮无套在线观看| 丰满人妻一区二区三区四区| 无码精品久久| 乱伦熟女专区| 四虎国产精品永久在线囯在线| 91岛国动作片| 午夜噜噜噜| 97K超碰在线| 亚洲玖玖爱| 欧美骚少妇| 欧美在线视频观看一二三四区高清| 国产AV天美| 大香蕉伊人在线成人AV在线观看| 9 7超碰在线免费观看| 日韩欧美麻豆大片| 久草视频制服诱惑| 不卡人妻少妇精品毛片一区23区视频| 亚洲 图片 综合91| 秋霞男人网| 第四色色综合91| 超碰97在线 欧美 国产| 欧美色图亚洲特色| 精品人妻一区二区三区视频| 欧美成人色| 污污污8888| 97一区二区三区视频| 欧美一二在线| 亚洲欧美日韩中文久久自慰| 96超碰网| 日本操逼视频不卡直接放| 伊人网青青| 日本性爰一道本| 九九久久一区二区伦理| 国产AV高清AV无码| 成人资源中文字幕在线观看天天| 久久发布国产伦子伦精品| 一道本东京热加勒比一区二区三区| 日本不卡卡一区| 亚洲棕合电彰| 国产精品午夜福利视频| 女人香蕉久久毛毛片精品| 国产传媒一区二区三区| 成人性爱视频在线看| 曰韩成人免费视频| 亚洲欧美九九| 少妇色综合| 久操视频这里只有精品| 国产午夜福利专区综合| 亚欧高清v| 99re6久热只有精品6在线直播| 美女大乳久久久久久久女人18| 欧美人人天天网| 欧美性高潮| 高清无码久操视频| 久久这里只精品99re66图| 大香蕉碰碰| 亚洲色资源| 一区二区三区看视频| 国产辣妈在线视频福利| 欧美色色色| 中国黑人三级片网站上区| 90后后入| 奇米狠999| 97九色人妻| 91女优在线观看| av黄图片在线观看| 黄片免费看黄片免费看| 国产自产91区13区| 91蜜桃传媒精品久久久一区二区| 欧美精品23| 五月综合色| 东京热熟女亚洲视频网站| 中文乱码字幕观看视频| 伊人黄色视频免费观看| 欧美第38页| 97se亚洲综合自| 亚洲综合中文字幕有码| 丰满精品人妻少妇久久字幕| 97天天操| 大香蕉123| 九色 蝌蚪 熟女自 | 精品人妻一区二区乱码一区二区| 欧美精品三区| 四虎AV在线观看| 日韩二区三四区五区六区在线看| 亚洲色图尤物视频 | 超碰午夜| 九九久久首页| 男女性无套 免费九一| 色情综合网| 丝袜视频网国产90| 秋霞一级视频在线观看免费| 好屌色综合| 成人AV超碰免费在线| 日韩国语字幕| 91熟女网| 女优视频第10页| 精品人妻一区二区三区免费视频| 国产麻豆一级精品视频| 欧美另类天堂| www.色操逼| 超碰久草| 五月天婷婷久久| 玖玖无码超碰| 99无码视频| 夜夜高潮夜夜爽夜夜爱爱一区| 五月天婷精品激情| 91天天综合在线观看| 久久婷婷综合国际产色怕| 亚洲丰满很很操| 日韩不卡a级视频专区| 另类老少妇| 九色婷婷| 天天色图| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 91在线国产后入风骚翘臀美女素人| 思思热免费在线视频| 99黄页网站| 国产综合网站在线播放 | 麻豆区久久久久亚| 婷婷激情综合网| 国产熟女一区二区| 午夜福利久久久噜久噜久久综合| 一起草欧美| 中日992视频| 屌逼麻豆| 国产黄片精品在线| 97操97干| yirendaxiangjiashipin| 久热影视| 精品久久久久成人码免| 久久超碰久| www.亚洲黄色| 欧美亚洲高清晰| 日韩天美| 日韩无码黄色片| 久久久久久人体| 男人的天堂成人的社区| 青青操狠狠撩| 日韩性爱啪啪视频| 欧美黑人91| 天美传媒国产原创中文字幕亚洲欧美另类| 18禁无码永久免费无限制| 99精品人人爽| 国产丝袜美女诱惑| 亚洲色图殴美色图激情乱伦| 亚洲欧美综合| 一本一道久久综合久久| 亚洲人在线成线成人| www黄片免费看com| 91福利网在线观看| 欧美激情 亚洲色图| 成人日韩中文字幕| 加勒比大香蕉视频在线| 黄色性爱网网| 欧美五十路熟| 乱欲视频| 九九九九九精品视频| 超碰1997| 国产AV人人 夜夜人人澡| 日韩中文字幕二区| 亚洲成人无码影院| 粉嫩av平台| 亚洲 在线| 国产外初女出血视频| 日韩影片中文字幕一区二区三区| 欧美视频在线视频免费va| 黄色激情电影在线观看| 日韩免费a级毛片无码a∨| 四虎影视国产精品| 老女人91| 夜夜 中文视频rt| 美女久久久久久久| 熟妇熟女一区二三区| 色色色热| 青草av在线| 久久亚洲精品成人av| 人妻啪| 国产精品福利资源在线尤物| 久久97| 91精片| 欧洲精品一级二级精品综合视频综合| 色97国产69香蕉| 亚洲人人夜夜澡人人爽| 成人久久久精品| h色99999| 1024午夜激情男人的天堂| 91日产欧美| 久操在97| 加勒比伊人影院| 人妻熟妇久草在线| 大屁股熟女一区二区三区| 91性感网站| 人妻黑丝袜电影| 天天色踪合| 日本黄色天堂| 欧美综合综合| 大香蕉综合网| 91被操| 91搞逼视频| 精品成人动漫一区二区| 亚洲一本色道中文无码aV天美| 操逼操逼视频操逼| 在线国产一区二区av| 少妇滛荡视频| 日韩美一区| 亚洲色图20p| 色诱avtt| 玖玖爱伊人玖玖爱| 深夜激情 | 秋霞一集毛片观看| 亚洲天堂一区二区久久| 在线精品福利免费播放| 人妻久久久久久| 久久久久9久久久久| 夜夜嗷嗷一区二区| 亚洲日韩97| 亚洲97在线观看| 高清国产性猛交xxxx乱大交| 人妻乱仑一区二区三区| 欧美极品少妇交| 欧美一区二区成人一卡| 90后后入| 久久久精品电影| 国产精品久久伊人| 日本淫色网| 日本精品九九九| 成人久久久| 免费超碰97在线观看| 人人爱操| 国产美女口爆吞精| 啊啊啊啊好多水| 欧美精品一区二区少妇免费A片 | 97硬碰| 人妻 欧美亚洲| 国产h小视频在线观看免费| 91精品女厕偷拍视频| 9久久精品| 大香蕉一人在线| 综合亚洲欧美| 婷婷丁香五月天亚洲天堂网| 精品免费一区二区三区在线亚洲人成 | 久久香蕉国产线看观看亚洲女人 | 一级性爱视频免费观看 | 国产AB视频| 在线视频免费观看午夜| 色99视频| 久污| 九九视频黄色片| 国内外色色色色色成人视频| 亚洲清纯唯美| 色黄污美女啪啪啪免费网站| 韩日精品四区| 青青草原香蕉日本Ap| 亚洲天堂一区二区久久| 亚洲成人一二三区| 色综合天天爱去电影网| 国产一区二区欧美日本| 老司机午夜福利视频一区二区| 97爱综合| 午夜精品一区二区三区三上悠亚| 欧美综合亚洲| 亚洲操逼无码| 欧美亚洲宗合色性图| 一个人免费视频观看在线WWW | 久草看看看| 久久精品店| 欧美性生活内射| 精品国产91内射久久| 亚洲欧洲视频小说在线观看| 91中文字幕制服丝袜免费视频| 欧美性爱伊人| 国产午夜福利合集| 久久久久国产精品片区无码直播| 九九九九欧美| 手机在线视频国内精品| 噜噜噜亚洲精品| 口爆吞精在线观看| 久艹99| 性爱乱伦网址| 欧美日韩国产色五月综合在线| 夜间福利片1000无码| 色天欧美| 免费综合亚洲中文| 易易A毛视频| 91一区二区| 青青色在线观看| 久久理论字幕视频| 99久久久久久亚洲精品不卡| 神马久久久久久久久久久久| www.yeyecao| 夜夜青青无码影院| 激情五月婷婷综合| 亚洲丝袜诱惑| 啊啊啊在线观看免费视频| 天天视频网站黄| 330dv亚洲成年视频网| 一级特级aaaa毛片免费观看| 97超碰国产亚洲精品| 激情综合婷婷| 国产白丝精品在线观看| 青青草色情网站视频| 逼逼逼逼操操操操操操操操操午夜剧场| 91女优在线观看| 色婷婷丁香五月| 国产又粗又大硬免费色网视频| 精品视频专区| 蜜臀AV网站| 国产99热| 中文字幕超碰CAO| 欧美综合区| 成·人免费午夜在线观看| 人妻熟女一区二区三区在线| 黄片无码在线制服| 另类天堂| 99久久9| 日韩一级二级| 国产自产自拍| 在线不欧美| 久久综合av| 人妻少妇精品一区二区三区| 日韩亚洲精品一区二区| 女优大全 - 91n| 大香蕉男人的天堂| 夜夜嗨一区二区| 大香蕉专区| 亚洲综合电影| av日韩中文字幕| 午夜天堂网| 日本色色色网站免费看不卡| 夜夜高潮夜夜爽高清视频一| 国产亚洲日本精品在线| 神马久久久久久| av 模特一区了| 天堂日本亚洲欧美| 色999五月色| 另类TS人妖一区二区三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 97久久久网站| 校园春色中文字幕AV| 久久久草成人网站久久久草成人久久久草久久久| 国产一区二区免费福利片| 亚洲中文字幕av | 婷婷五月天在线观看| 国产91av在线播放| 久久久久女教师免费一区| 超碰97网址| 丁香五月激情啪啪| 亚洲成人日韩小说| 男人午夜天堂| 人妻夜爽夜夜爽| 欧美日韩大陆黑人少妇99| 凹凸视频特色日本特黄| 日本女优在线视频福利| 国产三级在线现体验区| 国产一区二区二区按摩精品啪视频| 色色青青久久| 可以看的av| 国产东北女人在线视频| 超碰色综合| 漂亮人妻被强中文字幕hd| #NAME?| 日韩中文字幕熟妇人妻| 五月丁香亭亭| 97人人超| 国产又色又爽又舒服的三级视频| 天天日天天搞天天干| 好色综合| 9久热这里只有精品| Julia Annxxxxx| 97 国产一区| 男人天堂站| 亚洲国产综合久久天堂| 一区二区激情国产熟女| 国产欧美日韩在线不卡第一页| 亚洲av影音先锋| 亚洲日韩美女中文字幕乱| 中文字幕奈奈美被公侵犯| www.yeyecao| 日本 色 导航| 日韩国产成人自拍视频| 国产精品亚洲一区二区三区四区| 人人做人人妻人人夜视频| 视频分类 国内精品| 日本色色的视频| 久久婷婷精品| 中文字幕国产精品1区| 岛国AV一区二区电影| 久插综合| 在线小视频| 97在线免费公开视频| 嗯嗯啊啊啊好爽| 亚洲久9| 亚洲春色一区二区三区| 波多野结衣一级视频| 欧美系列在线一区二区| 人妻AV在线| 亚洲欧美九九九| 蜜桃丰满熟妇av无码区不卡| AV女资源| 强奸抽插av| 亚洲97久久精品亚洲| 欧美色色色| 啊啊啊啊视频免费| 九九国产| 色妺妺AⅤ| 无码免费在线观看黄色片| 美女写真| 999狠狠综合| 青青草成人视频在线观看二区| 久久久性少妇| 啪啪视频免费在线观看| 99久久e免费热视| 国产精品一二三免费网站| 青青草啪啪网| 久久这里只精品| 先锋影音av先锋一区| 91精品无码人妻系列| 99热超碰| 色九色久| 久久日韩精品一区二区| 亚洲欧美成人在线| 久久中出在线| 91爱| 一区三区啪啪| 美女裸体麻豆天美蜜桃91| 91麻豆天美国产欧美高潮| 欧美一区二区男人天堂| 亚洲欧美国产其他二区| 亚洲一二三四区机械| 岛国天天午夜影院传媒网| 国产亚洲深夜激情| 久草婷婷| 欧美特黄视频网站| 人人妻人人爽 97人人看碰人免费公开视频| 自拍偷拍2025在线观看| 午夜精品久久久久久久99热影院 | 欧美性爱三区二区| 日本精品国产视频| 福利视频网站| 探花一区在线| 欧美日韩精品久久| 乱伦熟女论坛| 青青网三级视频| 91精品91久久久久77777| 一本久道在线综合视频| 嗯嗯,啊啊,国产精品| 亚洲图片91| 3p国产欧美99热| 超碰97亚洲区| 新久久AV| 秋霞一区二区三区四区五区六区七区| 亚欧高清| 丝袜喷水在线| 亚洲婷婷丁香在线| 98一区二区精品| 92久久| 调教熟妇 久久久久久| 亚洲精品九九九九九九| 无码av永久免费专区网站| 亚洲黄日韩无码专区| 精品久久久av无码免费| 9/A片 | 日韩国产品视频中文字| 亚洲AV无码乱码| 丁香五月婷婷基地| 久久午夜神马| 色综合五月天| 亚州色综合| 旡码电影特区| 午夜男女爽爽爽影院视频| 国产久久视频| 日韩精品一区二区高清 | 91精品久久久| 天堂涩涩| 蜜乳AV色欲AVAV无码| 国产精品69久久久久久久| 97最新在线播放视频| 欧美日韩制服| 国产日本熟女顶级一区二区三区视频| 青青草国产欧美非洲黑人| 久久9亚洲| 欧美区亚洲区偷拍区| 91N综合在线| 欧美强奸一区二区诱惑| 熟女少妇一区二区三区| 一区二区偷拍拍视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 精品人妻免费观看| 天天舔九色婷婷| 思思热影视| 亚洲人妻爽爽爽| 欧美一区二区在线资源| 麻花豆传媒剧国产MV出差| 啊啊啊久久久视频| 丁香五月久久| 日本αv| 欧美亚州色的图| 日本天天色| 国产精品久久天天干| 国产99999久久精品| 五月天婷婷影院| 亚洲av国产av综合av卡| 高清不卡 中文 人妻| 九九热超碰| 五码视频在线观看| 日本高清一本二本免费不卡| 欧插网站| 美女一区二区国产精品| 亚洲 欧美 色图| 中文字幕精品乱码| 五月天激情国产综合婷婷婷| 欧洲综合无码| 午夜噜噜噜| 亚洲色图国产另类| 五月丁香成人网| 99国产精品视频尤物| 综合亚洲欧美| 亚洲综合性网址| 色爽爽文学| 成人性爱美曰韩| 欧美91精品国产自产| 99热日| 精品久久久久瑟瑟| 色色婷婷丁香| 国产成人一级av88| 91天天综合| 成人青青草原伊人| 九九国产| 哈哈操电影AV| 99在线精品视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 99亚亚热| 婷婷中文网| 高潮毛片无遮挡高清免费| 天天干人人乐| 亚洲影视第一页| 欧美暴力猛交| www.操| 韩国久久97| 色五月综合网| 殴美大黄片| 黄骗免费| 少妇啪啪自拍| 久久久久久亚洲Av无码精| 九九九九九精品视频| 人妻人久久精品中文字幕| 伦理弟一页| 久操 高清| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 国产精品日本无码A片| 2020中文字幕在线观看| 老鸭窝在线视频播放| 欧美日韩美女精品久草一区二区三区| 久草资源在线视频官方总站日韩丝袜美腿| 欧美日韩丝袜| 国产一区96在线| 亚洲黑丝在线| 中文字幕 码 自拍 视频 区| 免费黄色片子| 五月丁香婷婷啪啪| 色五月综合| 操人无码| A V少妇特黄三级| 国产少妇肉丝在线观看| 99热综合| 亚洲不卡AV在线| 亚洲色图超碰在线| 玖色AV| 啊啊啊com| 91女人的网站| 欧美爆操91| 东北女人的毛片| 欧美情色贴图| 丝袜狠狠草尤物 91| 美女91色黄18| 精品丰满熟妇人妻一区| 色97欧美| 人人操人人肉久久精品| 99人妻| 五月丁香六月综合缴清无码 | 欧美日综合| 综合网欧美在线| 91人妻丝袜无码| 国产亚洲色婷婷99精品91| 91精品国久久久久久无码| 色偷偷男人的天堂麻豆| 精品久久久一本一道| 人妻少妇精品久久久久久| 欧美高清色| 自拍偷拍草一草| 岛国在线一区二区三区| 国产精品视频精品一二| 亚洲nv男人的天堂网| 蜜臀在线免费观看在线免费观看| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 久久久精品无码亚免费| 中文字幕在线日亚州9| 91九久| 天天色怡春院| 久久伊人东京热| 日韩性爱一级片| 一区操逼日比视频| 国产免费一区二区在线A片视频| 男人天堂婷婷五月天校园春色| 99热免费精品| 中文字幕熟女人妻丝袜丝| 天天综合网网欲色| 欧美一区二区三区另类精品| 色色激情五月天| 欧州激情视频在线一区二区| 91热色| 国产高清视频无码在线| 精品伊人久久久大香线蕉小说| 91色艳| 国产精品久久久久久9999| 99999re| 日韩精品 视频一区二区| 天天流夜夜操| 2019午夜福利视频| 久久久久97| 超碰人人超在线观看| 日韩美女久久一区二区三区| 超碰在线1234区| 国产强奸乱伦无码视频| 日韩欧美字幕亚洲一区二区| 日韩中字av一区| 99最新日韩偷拍视频| 国产精品久久久久久久无码AV| 黑人精品成人一区二区三区| 欧美性色综合网| 欧美人妻制服| 欧美黑人精品一区二区| 桃色六月天| 超碰97综合| 天天色播亚洲综合网站| 97视频7| 91中文字幕| 激情久久av一区av二区av| 99xav| 熟妇乱伦一区二区| 大香蕉综合| 国产精品一级二级在线| 以及麻豆国产入口在线观看免费| 欧美性爱五月天| 2020中文字幕在线| 人妻少妇被猛烈进入中| 国产婷婷一区| 九九九色| 欧美毛片在线网| 国产成人五月天丁香花| 一区二区三区视频在线观看免费| 91中文精品日韩欧美在线| 亚洲av青草久久一区二区| 婷婷九月色| 欧美色图99| 成人性爱高清视频免费看| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 丰满少妇精品一区二区| 乱论91| 欧美韩日精品资源| 吖在线不卡一区二区国产剧情| 神马视频久久久久久| 国产精品96| 99国内精品| 亚洲av噜噜噜噜噜噜| 一本一道人妻久久一区二区三区| 情色大香蕉| 五月丁香色综合| 精品天堂| 粉嫩国产精品久久粉嫩| 久 久无码人妻AV| 亚洲nv男人的天堂网| 日本不卡在线二区三区| 99色在线| 亚洲天堂男人天堂| 亚洲人成色9999精品久久| 日本欧美中文字幕| 日韩内射视频| 黄色片A级一区二区三区| 天天日天天舔东京热| 密乳AV免费观看| 加勒比av官网在线| 国产亚洲精品玖玖玖在线观看| 男人天堂网手机版婷婷| 十八禁视频网站| 91精品国产91熟女| 天天摸天天插天天日| 99婷婷一区二区| 日本999精品| 8050无码八戒| 超碰地址久久| 九九九久千久久激情蜜桃在线看 | 无码9区| 国产午夜福利电影免费在线观看 | 国产 热久久久久国产精品| 东北操逼| 欧美色五月| 青娱乐福利99| 偷拍色图| 伊人成人中文字幕久久网| 性无码专区2020| 99日免费视频中文字幕| 9久热| 免费少妇一区二区| 美国三级日本三级久久99| 99热这里是精品| 99亚洲精品| 97在线免费公开视频| 日韩精彩免费| 日韩av在线免费网站| 日本不卡码黄色| 国产农村妇女精品一| www.91理论| 999久久久九九九九| 欧美白嫩在线放| 中字乱伦AV| 极品欧美一区二区三区| 春色综合免费| 91在线美女| 操逼操网| 曰韩人妻中文字幕在线 | 成人线上超碰| 美女91av| 高清不卡视频| 另类一区| 另类亚洲一区二区三区| 啊啊啊啊,啊啊好多水| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久久久久久久久久久久久久久乱码| 在线强奷到舒服的无码视频| 操一操摸一摸| 亚洲综合有码| 美女干逼2| 国内精品不卡无毒99999| 深夜激情无码| 一二三四视频中文字幕在线看| 变态综合色| 操死我了啊啊啊| 天堂精品小草| 91精品国产综合久久久蜜臀| 久久久久国产一区二| 日韩无码精品综合久久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 嗯嗯嗯啊啊啊在线免费观看| 国产成人自拍视频在线| 无码国产Av| 精品人成视频在线观看| 亚洲成人ab| 日日骚av| 久久视频,这里只有精品| 日韩精品熟妇| 人人乐大香蕉| 国产精品麻豆成人AV艾秋| 中文字幕日本久久| 欧美精品成人在线播放| 99亚洲国产精品色一区二区三区| 色图综合| 天天天肏屄肏屄肏屄欧美欧美| 51一区二区三区| 九九九精品色乱九九九| 精品无码久久久久| 国产欧美日韩臀| 亚洲五区熟女| 精品人妻一区二区免费蜜桃| 97精品国产97久久久久久免费| 日本在线一二| 亚洲.欧美.丝袜.中文.综合| 99精品在线| 天天爽天天操| 欧洲色色| 91色综| 精品少妇后入一区二区三区四区人妻巨乳 | 日韩av免费一级电影| 麻豆国产精品午夜视频| 日本人妻最新在线中| 在线免费观看高清无码视频| 婷婷久久五月综合激情| 亚洲国产丝袜熟女av| 欧美不卡五十路| 国产无码三级视频在线观看| 免费视频在线一区二区不卡| 黄色成人网久久久久久| 伊人一区二区在线播放| 17c在线成人免费A片观看| 日韩人妻一二三区视频| 久久人人舔人人爽舔人人av片| 92午夜免费福利视频|