คำถามติดแท็ก python-unittest

15
ฉันจะรันการทดสอบหน่วย Python ทั้งหมดในไดเรกทอรีได้อย่างไร
ฉันมีไดเรกทอรีที่มีการทดสอบหน่วย 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 สำหรับการลองครั้งที่สองของฉันฉันก็โอเคบางทีฉันอาจจะลองทำแบบทดสอบทั้งหมดนี้ในแบบ "แมนนวล" …

7
รันการทดสอบเดี่ยวจาก unittest.TestCase ผ่านทางบรรทัดคำสั่ง
ในทีมของเราเรากำหนดกรณีทดสอบส่วนใหญ่ดังนี้: คลาส "framework" หนึ่งคลาสourtcfw.py: import unittest class OurTcFw(unittest.TestCase): def setUp: # something # other stuff that we want to use everywhere และกรณีทดสอบจำนวนมากเช่น testMyCase.py: import localweather class MyCase(OurTcFw): def testItIsSunny(self): self.assertTrue(localweather.sunny) def testItIsHot(self): self.assertTrue(localweather.temperature > 20) if __name__ == "__main__": unittest.main() เมื่อฉันเขียนรหัสทดสอบใหม่และต้องการเรียกใช้บ่อยๆและประหยัดเวลาสิ่งที่ฉันทำคือฉันใส่ "__" ไว้หน้าการทดสอบอื่น ๆ ทั้งหมด แต่มันเป็นเรื่องยุ่งยากกวนใจฉันจากรหัสที่ฉันเขียนและเสียงการกระทำที่สร้างขึ้นนั้นน่ารำคาญ เช่นเมื่อมีการเปลี่ยนแปลงtestItIsHot()ฉันต้องการที่จะทำสิ่งนี้: $ python testMyCase.py …


2
Python Mocking ฟังก์ชันจากโมดูลที่นำเข้า
ฉันต้องการเข้าใจวิธี@patchการทำงานจากโมดูลที่นำเข้า นี่คือที่ที่ฉันมาไกลมาก app / mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program..." test_method() app / my_module / __ init__.py: def get_user_name(): return "Unmocked User" การทดสอบ / mock-test.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): …

2
ความแตกต่างระหว่าง setUp () และ setUpClass () ใน Python unittest คืออะไร?
อะไรคือความแตกต่างระหว่างsetUp()และsetUpClass()ในunittestกรอบPython ? เหตุใดจึงต้องจัดการการตั้งค่าด้วยวิธีเดียว ฉันต้องการที่จะเข้าใจในสิ่งที่เป็นส่วนหนึ่งของการติดตั้งจะทำในsetUp()และsetUpClass()ฟังก์ชั่นเช่นเดียวกับและtearDown()tearDownClass()

11
AttributeError: ออบเจ็กต์ 'module' ไม่มีแอตทริบิวต์ 'testing'
ฉันใช้คำสั่งนี้: python manage.py test project.apps.app1.tests และทำให้เกิดข้อผิดพลาดนี้: AttributeError: ออบเจ็กต์ 'module' ไม่มีแอตทริบิวต์ 'testing' ด้านล่างนี้คือโครงสร้างไดเร็กทอรีของฉัน ฉันได้เพิ่ม app1 ลงในการกำหนดค่าแอปที่ติดตั้งแล้วด้วย Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/username/local/dev/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 50, in run_from_argv super(Command, self).run_from_argv(argv) File …

2
วิธีส่งคำขอด้วย JSON ในการทดสอบหน่วย
ฉันมีรหัสภายในแอปพลิเคชัน Flask ที่ใช้ JSON ในคำขอและฉันสามารถรับวัตถุ JSON ได้ดังนี้: Request = request.get_json() สิ่งนี้ใช้งานได้ดี แต่ฉันพยายามสร้างการทดสอบหน่วยโดยใช้โมดูลที่ไม่เหมาะสมที่สุดของ Python และฉันมีปัญหาในการหาวิธีส่ง JSON พร้อมกับคำขอ response=self.app.post('/test_function', data=json.dumps(dict(foo = 'bar'))) สิ่งนี้ทำให้ฉัน: >>> request.get_data() '{"foo": "bar"}' >>> request.get_json() None ดูเหมือนว่า Flask จะมีอาร์กิวเมนต์ JSON ซึ่งคุณสามารถตั้งค่า json = dict (foo = 'bar') ในคำขอโพสต์ แต่ฉันไม่รู้ว่าจะทำอย่างไรกับโมดูลที่ไม่เหมาะสมที่สุด

3
อธิบายเมธอด Python“ setUp” และ“ tearDown” ที่ใช้ในกรณีทดสอบ
ใครสามารถอธิบายการใช้ Python setUpและtearDownวิธีการในขณะที่เขียนกรณีทดสอบนอกเหนือจากที่setUpเรียกว่าทันทีก่อนที่จะเรียกใช้วิธีการทดสอบและtearDownจะถูกเรียกทันทีหลังจากที่ถูกเรียก

1
Python ส่งคืนวัตถุ MagicMock แทน return_value
ฉันมีไฟล์ python a.pyซึ่งมีสองคลาสAและB. class A(object): def method_a(self): return "Class A method a" class B(object): def method_b(self): a = A() print a.method_a() ผมอยากจะ UnitTest method_bในชั้นเรียนโดยการเยาะเย้ยB Aนี่คือเนื้อหาของไฟล์testa.pyสำหรับวัตถุประสงค์นี้: import unittest import mock import a class TestB(unittest.TestCase): @mock.patch('a.A') def test_method_b(self, mock_a): mock_a.method_a.return_value = 'Mocked A' b = a.B() b.method_b() if __name__ == '__main__': unittest.main() …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.