簡體   English   中英

引導測試和使用Python測試發現

[英]Bootstrapping tests and using Python test discovery

問題是我繼續讓它“引導”我的測試。

我的問題恰恰是這個家伙的問題

最佳解決方案是關於創建“ boostrap”腳本。 我想我必須然后枚舉所有要運行的測試,或者使用__all__關鍵字在__init__.py文件中使用測試清單。 但是,我注意到關於unittest的最新Python文檔不再談論__all__了。

在2.7版中,我們使用了名為“ discovery”的python命令

python -m unittest discover

效果更好。 因為:1)不需要鼻子2)不需要測試清單

但它似乎沒有辦法“引導”

我需要使用其他測試跑步機嗎? 一種允許引導和發現的東西?

我需要py.test嗎?
http://pytest.org/

我需要引導的原因是這個家伙有的問題。 基本上,如果直接運行測試,導入語句將無法正常工作。 我想從項目的頂部執行測試套件,就像應用程序正常運行時一樣。

畢竟,導入語句始終相對於其物理位置。 (順便說一句,我認為這是Python的障礙)

定義:什么是自舉? 引導程序意味着我想在整個項目中完全運行任何測試之前進行一些設置。 這有點像我要求在整個項目級別進行“測試設置”。

更新 這是關於同一件事的另一篇文章 使用此2.7命令,我們可以避免使用鼻子。 但是,如何添加引導程序呢?

我知道了!

使用我編寫的這個腳本並將其命名為“ runtests.py”並將其放置在項目根目錄中,我能夠“引導”運行一些初始化代碼並使用發現功能。 活泉!

就我而言,“ bootstrap”代碼是兩行,分別是:

import sys
sys.path.insert(0, 'lib.zip')

謝謝!

#!/usr/bin/python

import unittest
import sys
sys.path.insert(0, 'lib.zip')

if __name__ == "__main__":
    all_tests = unittest.TestLoader().discover('.')
    unittest.TextTestRunner().run(all_tests)

這是我的工作,我認為它工作得很好。 對於類似於此的文件/目錄結構:

main_code.py
run_tests.py
    /Modules
        __init__.py
        some_module1.py
        some_module2.py
    /Tests
        __init__.py
        test_module1.py
        test_module2.py

組織run_tests.py文件以引導測試相當容易。 首先,每個帶有測試的文件( test_module1.py等)都應實現一個生成測試套件的函數。 就像是:

def suite():
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(Test_Length))
    suite.addTest(unittest.makeSuite(Test_Sum))
    return suite

在測試代​​碼的末尾。 然后,在run_tests.py文件中,將它們聚合到另一個test_suite中,然后運行該文件:

import unittest
import Tests.test_module1 as test_module1
import Tests.test_module2 as test_module2

module1_test_suite = test_module1.suite()
module2_test_suite = test_module2.suite()

aggregate_suite = unittest.TestSuite()
aggregate_suite.addTest(module1_test_suite)
aggregate_suite.addTest(module2_test_suite)

unittest.TextTestsRunner(verbosity = 2).run(aggregate_suite

然后,要從命令行運行所有這些測試,只需運行

python run_tests.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM