سؤال

أحاول إجراء بعض اختبارات الوحدة في بيثون مما أعتقد أنه وحدة نمطية. لدي هيكل دليل مثل

TestSuite.py
UnitTests
  |__init__.py
  |TestConvertStringToNumber.py

في testsuite.py لدي

import unittest

import UnitTests

class TestSuite:
    def __init__(self):
        pass

print "Starting testting"
suite = unittest.TestLoader().loadTestsFromModule(UnitTests)
unittest.TextTestRunner(verbosity=1).run(suite)

الذي يتطلع إلى بدء الاختبار بشكل جيد ، لكنه لا يلتقط أيًا من الاختبار في TestConvertNumberToString.py. في تلك الفئة ، لدي مجموعة من الوظائف التي تبدأ بـ "اختبار".

ما الذي يجب أن أفعله بحيث تشغيل Python Testsuite.py في الواقع يبدأ جميع اختباراتي في أهم؟

هل كانت مفيدة؟

المحلول

فيما يلي بعض التعليمات البرمجية التي ستقوم بتشغيل جميع اختبارات الوحدة في الدليل:

#!/usr/bin/env python
import unittest
import sys
import os

unit_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
os.chdir(unit_dir)
suite = unittest.TestSuite()
for filename in os.listdir('.'):
    if filename.endswith('.py') and filename.startswith('test_'):
        modname = filename[:-2]
        module = __import__(modname)
        suite.addTest(unittest.TestLoader().loadTestsFromModule(module))

unittest.TextTestRunner(verbosity=2).run(suite)

إذا قمت بتسميتها testsuite.py ، فستقوم بتشغيلها على هذا النحو:

testsuite.py UnitTests

نصائح أخرى

باستخدام عداء اختبار "التجريبي" الخاص بـ Twisted ، يمكنك التخلص من testsuite.py ، والقيام فقط:

$ trial UnitTests.TestConvertStringToNumber

على سطر الأوامر ؛ أو الأفضل من ذلك ، فقط

$ trial UnitTests

لاكتشاف وتشغيل جميع الاختبارات في الحزمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top