Pytest官方教程-25-Pytest導(dǎo)入機制及sys.path/PYTHONPATH

目錄:

  1. 安裝及入門
  2. 使用和調(diào)用方法
  3. 原有TestSuite使用方法
  4. 斷言的編寫和報告
  5. Pytest fixtures:清晰 模塊化 易擴展
  6. 使用Marks標記測試用例
  7. Monkeypatching/對模塊和環(huán)境進行Mock
  8. 使用tmp目錄和文件
  9. 捕獲stdout及stderr輸出
  10. 捕獲警告信息
  11. 模塊及測試文件中集成doctest測試
  12. skip及xfail: 處理不能成功的測試用例
  13. Fixture方法及測試用例的參數(shù)化
  14. 緩存: 使用跨執(zhí)行狀態(tài)
  15. unittest.TestCase支持
  16. 運行Nose用例
  17. 經(jīng)典xUnit風格的setup/teardown
  18. 安裝和使用插件
  19. 插件編寫
  20. 編寫鉤子(hook)方法
  21. 運行日志
  22. API參考
    1. 方法(Functions)
    2. 標記(Marks)
    3. 鉤子(Hooks)
    4. 裝置(Fixtures)
    5. 對象(Objects)
    6. 特殊變量(Special Variables)
    7. 環(huán)境變量(Environment Variables)
    8. 配置選項(Configuration Options)
  23. 優(yōu)質(zhì)集成實踐
  24. 片狀測試
  25. Pytest導(dǎo)入機制及sys.path/PYTHONPATH
  26. 配置選項
  27. 示例及自定義技巧
  28. Bash自動補全設(shè)置

以下是pytest可能需要更改sys.path以導(dǎo)入測試模塊或conftest.py文件的方案列表。

測試conftest.py包內(nèi)的模塊/ 文件

考慮這個文件和目錄布局:

root/
|- foo/
   |- __init__.py
   |- conftest.py
   |- bar/
      |- __init__.py
      |- tests/
         |- __init__.py
         |- test_foo.py

執(zhí)行時:

pytest root/

pytest會發(fā)現(xiàn)foo/bar/tests/test_foo.py并意識到它是一個包的一部分惯雳,因為__init__.py在同一個文件夾中有一個文件捂刺。然后它將向上搜索开镣,直到它找到仍包含__init__.py文件的最后一個文件夾寇漫,以便找到包(在本例中foo/)村视。要加載模塊吉挣,它將插入root/ 到前面 sys.path(如果不存在)稍味,以便test_foo.py作為模塊 加載 foo.bar.tests.test_foo

相同的邏輯適用于該conftest.py文件:它將作為foo.conftest模塊導(dǎo)入盖高。

當測試存在于包中以避免出現(xiàn)問題并允許測試模塊具有重復(fù)的名稱時慎陵,保留完整的包名稱非常重要眼虱。在Python測試發(fā)現(xiàn)的約定中也詳細討論了這一點 喻奥。

獨立測試模塊/ conftest.py文件

考慮這個文件和目錄布局:

root/
|- foo/
   |- conftest.py
   |- bar/
      |- tests/
         |- test_foo.py

執(zhí)行時:

pytest root/

pytest會發(fā)現(xiàn)foo/bar/tests/test_foo.py并意識到它不是包的一部分,因為__init__.py同一個文件夾中沒有文件捏悬。然后它將添加root/foo/bar/testssys.pathtest_foo.py作為模塊 導(dǎo)入test_foo撞蚕。conftest.py通過添加root/foosys.path將其導(dǎo)入為文件,對文件執(zhí)行相同操作conftest过牙。

因此甥厦,此布局不能包含具有相同名稱的測試模塊,因為它們都將導(dǎo)入全局導(dǎo)入命名空間寇钉。

Python測試發(fā)現(xiàn)的約定中也詳細討論了這一點刀疙。

調(diào)用pytestpython -m pytest

運行pytest 而不是產(chǎn)生幾乎相同的行為,除了前一個調(diào)用將添加當前目錄扫倡。另請參閱通過python -m pytest調(diào)用pytest谦秧。python -m pytest [...]``pytest [...]``sys.path

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疚鲤,更是在濱河造成了極大的恐慌锥累,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件集歇,死亡現(xiàn)場離奇詭異桶略,居然都是意外死亡,警方通過查閱死者的電腦和手機诲宇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門际歼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑蓝,你說我怎么就攤上這事蹬挺。” “怎么了它掂?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵巴帮,是天一觀的道長。 經(jīng)常有香客問我虐秋,道長榕茧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任客给,我火速辦了婚禮用押,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘靶剑。我一直安慰自己蜻拨,他們只是感情好,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布桩引。 她就那樣靜靜地躺著缎讼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坑匠。 梳的紋絲不亂的頭發(fā)上血崭,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音厘灼,去河邊找鬼夹纫。 笑死,一個胖子當著我的面吹牛设凹,可吹牛的內(nèi)容都是我干的舰讹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼闪朱,長吁一口氣:“原來是場噩夢啊……” “哼月匣!你這毒婦竟也來了匈睁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤桶错,失蹤者是張志新(化名)和其女友劉穎航唆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體院刁,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡糯钙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了退腥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片任岸。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狡刘,靈堂內(nèi)的尸體忽然破棺而出享潜,到底是詐尸還是另有隱情,我是刑警寧澤嗅蔬,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布剑按,位于F島的核電站,受9級特大地震影響澜术,放射性物質(zhì)發(fā)生泄漏艺蝴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一鸟废、第九天 我趴在偏房一處隱蔽的房頂上張望猜敢。 院中可真熱鬧,春花似錦盒延、人聲如沸缩擂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胯盯。三九已至,卻和暖如春畦贸,著一層夾襖步出監(jiān)牢的瞬間陨闹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工薄坏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寨闹。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓胶坠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親繁堡。 傳聞我的和親對象是個殘疾皇子沈善,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容