ฉันมีไดเรกทอรีที่มีการทดสอบหน่วย Python ของฉัน โมดูลหน่วยทดสอบแต่ละที่ของรูปแบบการทดสอบ _ *. PY ฉันกำลังพยายามสร้างไฟล์ที่เรียกว่าall_test.pyซึ่งจะช่วยให้คุณเดาได้ว่ารันไฟล์ทั้งหมดในแบบทดสอบข้างต้นแล้วส่งคืนผลลัพธ์ ฉันได้ลองสองวิธีจนถึงตอนนี้ ทั้งสองล้มเหลว ฉันจะแสดงสองวิธีและฉันหวังว่าจะมีคนรู้วิธีการทำอย่างถูกต้อง
สำหรับความพยายามที่กล้าหาญครั้งแรกของฉันฉันคิดว่า "ถ้าฉันเพียงนำเข้าโมดูลการทดสอบทั้งหมดของฉันในไฟล์แล้วเรียกunittest.main()
doodad นี้มันจะทำงานใช่มั้ย" เอาล่ะฉันคิดผิด
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
if __name__ == "__main__":
unittest.main()
สิ่งนี้ไม่ทำงานผลลัพธ์ที่ฉันได้คือ:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
สำหรับการลองครั้งที่สองของฉันฉันก็โอเคบางทีฉันอาจจะลองทำแบบทดสอบทั้งหมดนี้ในแบบ "แมนนวล" เพิ่มเติม ดังนั้นฉันจึงพยายามที่จะทำด้านล่าง:
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite
result = unittest.TestResult()
testSuite.run(result)
print result
#Ok, at this point I have a result
#How do I display it as the normal unit test command line output?
if __name__ == "__main__":
unittest.main()
สิ่งนี้ยังใช้งานไม่ได้ แต่ดูเหมือนใกล้มาก!
$ python all_test.py
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
ฉันดูเหมือนจะมีชุดของบางอย่างและฉันสามารถเรียกใช้ผลลัพธ์ ฉันกังวลเล็กน้อยเกี่ยวกับความจริงที่ว่าฉันมี แต่run=1
ดูเหมือนว่าควรจะเป็นrun=2
แต่มันเป็นความคืบหน้า แต่ฉันจะผ่านและแสดงผลลัพธ์ไปยังหลักได้อย่างไร หรือฉันจะทำให้มันใช้งานได้โดยทั่วไปดังนั้นฉันจึงสามารถเรียกใช้ไฟล์นี้และในการทำเช่นนั้นเรียกใช้การทดสอบหน่วยทั้งหมดในไดเรกทอรีนี้?