বেস এবং সাব ক্লাস সহ পাইথন ইউনিট পরীক্ষা


148

আমার কাছে বর্তমানে কয়েকটি ইউনিট পরীক্ষা রয়েছে যা পরীক্ষার একটি সাধারণ সেট ভাগ করে দেয়। এখানে একটি উদাহরণ:

import unittest

class BaseTest(unittest.TestCase):

    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(BaseTest):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(BaseTest):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()

উপরের ফলাফল:

Calling BaseTest:testCommon
.Calling BaseTest:testCommon
.Calling SubTest1:testSub1
.Calling BaseTest:testCommon
.Calling SubTest2:testSub2
.
----------------------------------------------------------------------
Ran 5 tests in 0.000s

OK

উপরেরটিকে আবার লেখার কোনও উপায় আছে যাতে একেবারে প্রথমটিকে testCommonবলা হয় না?

সম্পাদনা: উপরের পাঁচটি পরীক্ষা চালানোর পরিবর্তে, আমি এটির জন্য কেবলমাত্র 4 টি পরীক্ষা চালাতে চাই, সাবটেষ্ট 1 থেকে 2 টি এবং সাবটেষ্ট 2 থেকে আরও 2 টি পরীক্ষা চালানো উচিত। দেখে মনে হচ্ছে পাইথন ইউনিটেষ্টটি মূল বেস্টেস্ট নিজেই চালাচ্ছে এবং এটি হওয়া থেকে রোধ করার জন্য আমার একটি ব্যবস্থা দরকার।


আমি দেখছি নুনি এটি উল্লেখ করেছে তবে বেইসটেস্টের সমস্ত সাবক্লাস রয়েছে এমন একটি মূল সিকিউরিটি পরিবর্তন করার এবং টেস্ট স্যুট চালানোর বিকল্প কি আপনার কাছে রয়েছে?
কন সাইক

উত্তর:


154

একাধিক উত্তরাধিকার ব্যবহার করুন, সুতরাং সাধারণ পরীক্ষাগুলি সহ আপনার ক্লাস টেস্টকেস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় না।

import unittest

class CommonTests(object):
    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(unittest.TestCase, CommonTests):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(unittest.TestCase, CommonTests):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()

1
এটি এখন পর্যন্ত সবচেয়ে মার্জিত সমাধান।
থিয়েরি ল্যাম

27
আপনি যদি বেস ক্লাসগুলির ক্রমটি বিপরীত করেন তবে এই পদ্ধতিটি কেবল সেটআপ এবং টিয়ারডাউন পদ্ধতির জন্য কাজ করে। কারণ পদ্ধতিগুলি ইউনিটয়েস্ট.টেষ্টকেসে সংজ্ঞায়িত করা হয়েছে, এবং তারা সুপার () কল করে না, তারপরে কমন টেস্টে কোনও সেটআপ এবং টিয়ারডাউন পদ্ধতি এমআরওতে প্রথম হওয়া দরকার, বা সেগুলিকে একেবারেই বলা হবে না।
ইয়ান ক্লেল্যান্ড

32
ইয়ান ক্লেল্যান্ডের মন্তব্যটি কেবল স্পষ্ট করার জন্য যাতে এটি আমার মতো লোকের জন্য আরও স্পষ্ট হয়ে উঠতে পারে: আপনি যদি ক্লাসে পদ্ধতি setUpএবং tearDownপদ্ধতি যুক্ত করেন CommonTestsএবং আপনি চান যে তাদের উত্পন্ন ক্লাসে প্রতিটি পরীক্ষার জন্য ডাকা হয়, আপনাকে বেস ক্লাসগুলির ক্রমটি বিপরীত করতে হবে, যাতে এটি হবে: class SubTest1(CommonTests, unittest.TestCase)
ডেনিস গোলোমাজভ

6
আমি আসলে এই পদ্ধতির ভক্ত নই। এই কোড একটি চুক্তি যে শ্রেণীর উভয় থেকে উত্তরাধিকারী আবশ্যক স্থাপন unittest.TestCase এবং CommonTests । আমি মনে করি setUpClassনীচের পদ্ধতিটি সর্বোত্তম এবং মানুষের ত্রুটির পক্ষে কম one হয় বা কন্টেইনার ক্লাসে বেসটেষ্ট ক্লাসটি মোড়ানো যা কিছুটা বেশি হ্যাকি তবে টেস্ট রান প্রিন্টআউটে স্কিপ বার্তা এড়িয়ে চলে।
ডেভিড স্যান্ডার্স

10
পাইলিন্টটি হ'ল সমস্যাটি হ'ল কারণ CommonTestsসেই পদ্ধতিটি চালু রয়েছে যা এই শ্রেণীর মধ্যে নেই।
ম্যাড সায়েন্টিস্ট

145

একাধিক উত্তরাধিকার ব্যবহার করবেন না, এটি আপনাকে পরে কামড় দেবে ।

পরিবর্তে আপনি কেবল নিজের বেস ক্লাসটি পৃথক মডিউলে স্থানান্তর করতে পারেন বা ফাঁকা শ্রেণীর সাহায্যে এটি মুড়িয়ে রাখতে পারেন:

class BaseTestCases:

    class BaseTest(unittest.TestCase):

        def testCommon(self):
            print('Calling BaseTest:testCommon')
            value = 5
            self.assertEqual(value, 5)


class SubTest1(BaseTestCases.BaseTest):

    def testSub1(self):
        print('Calling SubTest1:testSub1')
        sub = 3
        self.assertEqual(sub, 3)


class SubTest2(BaseTestCases.BaseTest):

    def testSub2(self):
        print('Calling SubTest2:testSub2')
        sub = 4
        self.assertEqual(sub, 4)

if __name__ == '__main__':
    unittest.main()

আউটপুট:

Calling BaseTest:testCommon
.Calling SubTest1:testSub1
.Calling BaseTest:testCommon
.Calling SubTest2:testSub2
.
----------------------------------------------------------------------
Ran 4 tests in 0.001s

OK

6
এটি আমার প্রিয়। এটি সর্বনিম্ন হ্যাকির অর্থ এবং ওভাররাইড পদ্ধতিতে হস্তক্ষেপ করে না, এমআরও পরিবর্তন করে না এবং আমাকে বেস শ্রেণিতে সেটআপ, সেটআপ ক্লাস ইত্যাদি সংজ্ঞায়িত করতে দেয়।
হ্যানস

6
আমি গুরুত্ব সহকারে এটি পাই না (যাদুটি কোথা থেকে এসেছে?) তবে এটি আমার মতে সবচেয়ে ভাল সমাধান :) জাভা থেকে এসে আমি একাধিক উত্তরাধিকারকে ঘৃণা করি ...
এডুয়ার্ড বার্থে

4
@ এডওয়ার্ড ইউনিটেস্ট কেবলমাত্র টেডকেস থেকে উত্তরাধিকার সূত্রে মডিউল স্তরের ক্লাস পরিচালনা করে। তবে বেসস্টেস্ট মডিউল-স্তর নয়।
JoshB

একেবারে অনুরূপ বিকল্প হিসাবে, আপনি কোনও নো-আরগস ফাংশনের অভ্যন্তরে ABC সংজ্ঞা দিতে পারেন যা ডাকা হয় যখন ABC ফিরিয়ে দেয়
আনখন্ড

34

আপনি এই সমস্যাটি একটি একক কমান্ড দিয়ে সমাধান করতে পারেন:

del(BaseTest)

কোডটি এর মতো দেখায়:

import unittest

class BaseTest(unittest.TestCase):

    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(BaseTest):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(BaseTest):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

del(BaseTest)

if __name__ == '__main__':
    unittest.main()

3
বেসটেষ্ট মডিউলটির সংজ্ঞায়িত হওয়ার সময় এটির সদস্য, সুতরাং এটি সাব টেস্টের বেস ক্লাস হিসাবে ব্যবহারের জন্য উপলব্ধ। সংজ্ঞাটি সম্পূর্ণ হওয়ার ঠিক আগে, ডেল () এটিকে সদস্য হিসাবে সরিয়ে দেয়, সুতরাং যখন মডিউলটিতে টেস্টক্যাস সাবক্লাস অনুসন্ধান করা হয় তখন ইউনিটেস্ট ফ্রেমওয়ার্ক এটি খুঁজে পাবে না।
mhmmith

3
এটি একটি দুর্দান্ত উত্তর! আমি এটি ম্যাথিউ মার্শালের চেয়ে বেশি পছন্দ করি কারণ তার সমাধানে আপনি পাইলট থেকে সিনট্যাক্স ত্রুটি পাবেন কারণ self.assert*পদ্ধতিগুলি কোনও স্ট্যান্ডার্ড অবজেক্টে নেই।
সিম্পল জ্ঞাতএএসজি

1
বেস টেষ্টটি বেস ক্লাসে বা এর উপশ্রেণীর অন্য কোথাও উল্লেখ করা থাকলে কাজ করে না, যেমন পদ্ধতিতে ওভাররাইডগুলিতে সুপার () কল করার সময়: super( BaseTest, cls ).setUpClass( )
হ্যানস ২

1
@Hannes পাইথন 3 অন্তত, BaseTestমাধ্যমে রেফারেন্সড যাবে super(self.__class__, self)বা শুধু super(), উপশ্রেণী মধ্যে যদিও দৃশ্যত না যদি আপনি উত্তরাধিকারী কনস্ট্রাকটর ছিল । হতে পারে এমন একটি "বেনামি" বিকল্পও রয়েছে যখন বেস ক্লাসকে নিজের রেফারেন্সের প্রয়োজন হয় (এমন নয় যে যখন ক্লাসে নিজেকে রেফারেন্স দেওয়ার দরকার হয় তখন আমার কোনও ধারণা নেই)।
স্টেইন

28

ম্যাথু মার্শালের উত্তর দুর্দান্ত, তবে এটির জন্য আপনার প্রতিটি পরীক্ষার ক্ষেত্রে দুটি বিভাগ থেকে উত্তরাধিকারী হওয়া দরকার যা ত্রুটি-প্রবণ। পরিবর্তে, আমি এটি ব্যবহার (অজগর> = 2.7):

class BaseTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        if cls is BaseTest:
            raise unittest.SkipTest("Skip BaseTest tests, it's a base class")
        super(BaseTest, cls).setUpClass()

3
যে ঝরঝরে. এড়িয়ে চলা কোন উপায় কী? আমার কাছে, স্কিপগুলি অনাকাঙ্ক্ষিত এবং বর্তমান পরীক্ষার পরিকল্পনায় কোনও সমস্যা চিহ্নিত করতে ব্যবহার করা হয় (কোড বা পরীক্ষার সাথে)?
জাচ ইয়ং

@ জাচারি ইয়ং আমি জানি না, সম্ভবত অন্যান্য উত্তরগুলি সাহায্য করতে পারে।
ডেনিস গোলোমাজভ

@ জাচারি ইয়ং আমি এই সমস্যাটি সমাধান করার চেষ্টা করেছি, আমার উত্তর দেখুন।
সাইমনজ্যাক

এটি দুটি ক্লাস থেকে উত্তরাধিকার সূত্রে অন্তর্নিহিত ত্রুটি-প্রবণ কি তা অবিলম্বে পরিষ্কার নয়
jwg

@jwg গৃহীত উত্তরের মন্তব্য দেখুন: আপনার দুটি পরীক্ষার ক্লাস দুটি বেস ক্লাস থেকে উত্তরাধিকারী হওয়া দরকার; আপনার সেগুলির সঠিক ক্রম সংরক্ষণ করা দরকার; আপনি কি অন্য বেস পরীক্ষা ক্লাস যুক্ত করতে চান, আপনিও এটি থেকে উত্তরাধিকারী হতে হবে। মিক্সিনগুলির সাথে কোনও ভুল নেই, তবে এক্ষেত্রে এগুলি একটি সহজ স্কিপ দিয়ে প্রতিস্থাপন করা যেতে পারে।
ডেনিস গোলোমাজোভ

7

আপনি কি অর্জন করার চেষ্টা করছেন? আপনার যদি সাধারণ পরীক্ষার কোড থাকে (দাবি, টেম্পলেট পরীক্ষা ইত্যাদি), তবে সেগুলি এমন উপায়ে রাখুন যা উপসর্গযুক্ত নয় testতাই unittestলোড হবে না।

import unittest

class CommonTests(unittest.TestCase):
      def common_assertion(self, foo, bar, baz):
          # whatever common code
          self.assertEqual(foo(bar), baz)

class BaseTest(CommonTests):

    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(CommonTests):

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)

class SubTest2(CommonTests):

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()

1
আপনার পরামর্শ অনুসারে, সাবক্লাসগুলি পরীক্ষা করার সময় এখনও সাধারণ_আসারেশন () স্বয়ংক্রিয়ভাবে চালিত হবে?
স্টিয়ার্ট

পছন্দ করেছেন ডিফল্ট সেটিংটি কেবল "পরীক্ষা" দিয়ে শুরু পদ্ধতি চালানো হয়।
সিএস

6

আমি এখনও 2.5-এ থাকায় ম্যাথিউয়ের উত্তরটি আমার ব্যবহার করা উচিত। তবে ২.7 হিসাবে আপনি যে কোনও পরীক্ষার পদ্ধতি বাদ দিতে চান তাতে @ ইউনিটেষ্ট.স্কিপ () সজ্জা ব্যবহার করতে পারেন।

http://docs.python.org/library/unittest.html#skipping-tests-and-expected-failures

বেস প্রকারটি পরীক্ষা করতে আপনাকে নিজের স্কিপিং ডেকরেটর প্রয়োগ করতে হবে। আগে এই বৈশিষ্ট্যটি ব্যবহার করা হয়নি, তবে আমার মাথার উপরের অংশটি ছেড়ে যেতে শর্ত করতে আপনি বেস্ট টেস্টকে চিহ্নিতকারী প্রকার হিসাবে ব্যবহার করতে পারেন :

def skipBaseTest(obj):
    if type(obj) is BaseTest:
        return unittest.skip("BaseTest tests skipped")
    return lambda func: func

5

এটি সমাধান করার একটি উপায় আমি বেস ক্লাসটি ব্যবহার করা হয় তবে পরীক্ষার পদ্ধতিগুলি আড়াল করে। এইভাবে পরীক্ষাগুলি বাদ দেওয়া হয় না, তাই পরীক্ষার ফলাফলগুলি অনেক পরীক্ষার রিপোর্টিং সরঞ্জামগুলিতে হলুদ পরিবর্তে সবুজ হতে পারে।

মিক্সিন পদ্ধতির তুলনায়, আইডিগুলির মতো পাইচর্ম অভিযোগ করবে না যে ইউনিট পরীক্ষার পদ্ধতিগুলি বেস শ্রেণীর থেকে অনুপস্থিত।

যদি কোনও বেস শ্রেণিটি এই শ্রেণীর কাছ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় তবে এটির জন্য পদ্ধতি setUpClassএবং tearDownClassপদ্ধতিগুলি ওভাররাইড করা দরকার ।

class BaseTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls._test_methods = []
        if cls is BaseTest:
            for name in dir(cls):
                if name.startswith('test') and callable(getattr(cls, name)):
                    cls._test_methods.append((name, getattr(cls, name)))
                    setattr(cls, name, lambda self: None)

    @classmethod
    def tearDownClass(cls):
        if cls is BaseTest:
            for name, method in cls._test_methods:
                setattr(cls, name, method)
            cls._test_methods = []

5

আপনি __test_ = Falseবেসস্টেস্ট ক্লাসে যুক্ত করতে পারেন , তবে আপনি এটি যুক্ত করলে, সচেতন হন যে __test__ = Trueপরীক্ষা চালাতে সক্ষম হওয়ার জন্য আপনাকে অবশ্যই উদ্ভূত শ্রেণিতে যুক্ত করা উচিত।

import unittest

class BaseTest(unittest.TestCase):
    __test__ = False

    def testCommon(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)

class SubTest1(BaseTest):
    __test__ = True

    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(BaseTest):
    __test__ = True

    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

if __name__ == '__main__':
    unittest.main()

4

আর একটি বিকল্প কার্যকর করা হয় না

unittest.main()

পরিবর্তে আপনি ব্যবহার করতে পারেন

suite = unittest.TestLoader().loadTestsFromTestCase(TestClass)
unittest.TextTestRunner(verbosity=2).run(suite)

সুতরাং আপনি কেবল ক্লাসে পরীক্ষা চালান TestClass


এটি হ'ল কমপক্ষে সমাধান। unittest.main()ডিফল্ট স্যুটতে কী সংগ্রহ করে তা পরিবর্তনের পরিবর্তে আপনি সুস্পষ্ট স্যুট তৈরি করেন এবং এর পরীক্ষা চালান।
zgoda

1

আমি @ ভ্লাদিম পি এর চেয়ে প্রায় একইটি তৈরি করেছি ( https://stackoverflow.com/a/25695512/2451329 ) তবে কিছুটা সংশোধিত:

import unittest2


from some_module import func1, func2


def make_base_class(func):

    class Base(unittest2.TestCase):

        def test_common1(self):
            print("in test_common1")
            self.assertTrue(func())

        def test_common2(self):
            print("in test_common1")
            self.assertFalse(func(42))

    return Base



class A(make_base_class(func1)):
    pass


class B(make_base_class(func2)):

    def test_func2_with_no_arg_return_bar(self):
        self.assertEqual("bar", func2())

এবং আমরা সেখানে যাই।


1

পাইথন ৩.২ অনুসারে, আপনি একটি টেস্ট_লডার যুক্ত করতে পারেন পরীক্ষার আবিষ্কার পদ্ধতিতে কোন পরীক্ষাগুলি (যদি থাকে) নিয়ন্ত্রণ করার জন্য একটি মডিউলে ফাংশন ।

উদাহরণস্বরূপ, নিম্নলিখিতগুলি উপেক্ষা করে কেবলমাত্র মূল পোস্টার SubTest1এবং SubTest2টেস্ট কেসগুলি লোড করবে Base:

def load_tests(loader, standard_tests, pattern):
    suite = TestSuite()
    suite.addTests([SubTest1, SubTest2])
    return suite

এটা তোলে পুনরুক্তি করা সম্ভব করা কর্তব্য standard_tests(ক TestSuiteপরীক্ষার ডিফল্ট লোডার পাওয়া ধারণকারী) এবং সব কিন্তু কপি Baseকরতে suiteপরিবর্তে, কিন্তু নেস্টেড প্রকৃতি TestSuite.__iter__যে আরো অনেক জটিল।


0

স্রেফ টেস্টকমন পদ্ধতির নতুন কিছু নামকরণ করুন। ইউনিটেস্ট (সাধারণত) এমন কোনও কিছু এড়িয়ে যায় যার মধ্যে 'পরীক্ষা' নেই।

দ্রুত এবং সহজ

  import unittest

  class BaseTest(unittest.TestCase):

   def methodCommon(self):
       print 'Calling BaseTest:testCommon'
       value = 5
       self.assertEquals(value, 5)

  class SubTest1(BaseTest):

      def testSub1(self):
          print 'Calling SubTest1:testSub1'
          sub = 3
          self.assertEquals(sub, 3)


  class SubTest2(BaseTest):

      def testSub2(self):
          print 'Calling SubTest2:testSub2'
          sub = 4
          self.assertEquals(sub, 4)

  if __name__ == '__main__':
      unittest.main()`

2
এর ফলে সাবটেষ্টের যে কোনও একটিতে মেথডমমন পরীক্ষা না চালানোর ফলাফল হবে।
মরিচ লেবেক-জোবে

0

সুতরাং এটি একটি পুরানো থ্রেডের মতো তবে আমি আজ এই সমস্যাটি জুড়ে এসেছি এবং এর জন্য নিজের হ্যাকটি ভেবেছিলাম। এটি একটি সাজসজ্জা ব্যবহার করে যা বেস শ্রেণীর মাধ্যমে অ্যাক্সেস করা হলে ফাংশনগুলির মানকে কিছুই করে না। সেটআপ এবং সেটআপক্লাস সম্পর্কে চিন্তা করার দরকার নেই কারণ যদি বেসক্লাসের কোনও পরীক্ষা না থাকে তবে সেগুলি চলবে না।

import types
import unittest


class FunctionValueOverride(object):
    def __init__(self, cls, default, override=None):
        self.cls = cls
        self.default = default
        self.override = override

    def __get__(self, obj, klass):
        if klass == self.cls:
            return self.override
        else:
            if obj:
                return types.MethodType(self.default, obj)
            else:
                return self.default


def fixture(cls):
    for t in vars(cls):
        if not callable(getattr(cls, t)) or t[:4] != "test":
            continue
        setattr(cls, t, FunctionValueOverride(cls, getattr(cls, t)))
    return cls


@fixture
class BaseTest(unittest.TestCase):
    def testCommon(self):
        print('Calling BaseTest:testCommon')
        value = 5
        self.assertEqual(value, 5)


class SubTest1(BaseTest):
    def testSub1(self):
        print('Calling SubTest1:testSub1')
        sub = 3
        self.assertEqual(sub, 3)


class SubTest2(BaseTest):

    def testSub2(self):
        print('Calling SubTest2:testSub2')
        sub = 4
        self.assertEqual(sub, 4)

if __name__ == '__main__':
    unittest.main()

-2

বেসটেষ্ট পদ্ধতির নামটি সেটআপে পরিবর্তন করুন:

class BaseTest(unittest.TestCase):
    def setUp(self):
        print 'Calling BaseTest:testCommon'
        value = 5
        self.assertEquals(value, 5)


class SubTest1(BaseTest):
    def testSub1(self):
        print 'Calling SubTest1:testSub1'
        sub = 3
        self.assertEquals(sub, 3)


class SubTest2(BaseTest):
    def testSub2(self):
        print 'Calling SubTest2:testSub2'
        sub = 4
        self.assertEquals(sub, 4)

আউটপুট:

0.000 এর মধ্যে 2 টি পরীক্ষা চালানো

কলিং বেসটেষ্ট: টেস্টকমন কলিং
সাবটেষ্ট 1: টেস্টসুব 1 কলিং
বেসটেষ্ট: টেস্টকমন কলিং
সাবটেষ্ট 2: টেস্টসুব 2

ডকুমেন্টেশন থেকে :

টেস্টকেস.সেটআপ ()
পদ্ধতিটি টেস্টের ফিক্সচার প্রস্তুত করার জন্য ডেকে আনে । এটি পরীক্ষা পদ্ধতি কল করার আগেই বলা হয়; এই পদ্ধতিতে উত্থাপিত কোনও ব্যতিক্রম পরীক্ষা ব্যর্থতার চেয়ে ত্রুটি হিসাবে বিবেচিত হবে। ডিফল্ট বাস্তবায়ন কিছুই করে না।


এটি কাজ করবে, আমার যদি এন টেস্টকমন থাকে, তবে আমি কি তাদের সমস্তটি নীচে রেখেছি setUp?
থিয়েরি ল্যাম

1
হ্যাঁ আপনার এমন সমস্ত কোড স্থাপন করা উচিত যা সেটআপের আওতায় আসল পরীক্ষার কেস নয়।
ব্রায়ান আর বন্ডি

তবে যদি একটি সাবক্লাসের একাধিক test...পদ্ধতি থাকে, তবে এই জাতীয় পদ্ধতিতে setUpএকবার এবং বারবার সম্পাদিত হবে; সুতরাং সেখানে পরীক্ষা দেওয়া ভাল ধারণা নয়!
অ্যালেক্স মার্তেল্লি

আরও জটিল দৃশ্যে মৃত্যুদণ্ড কার্যকর করার সময় ওপি কী চেয়েছিল তা সত্যই নিশ্চিত নয়।
ব্রায়ান আর বন্ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.