Hướng dẫn how to run multiple classes in python - cách chạy nhiều lớp trong python

Làm cách nào để chạy nhiều lớp trong một bộ thử nghiệm duy nhất trong Python bằng cách sử dụng thử nghiệm đơn vị?

user5305519

2.8004 huy hiệu vàng27 Huy hiệu bạc42 Huy hiệu đồng4 gold badges27 silver badges42 bronze badges

hỏi ngày 19 tháng 3 năm 2011 lúc 7:40Mar 19, 2011 at 7:40

1

Nếu bạn muốn chạy tất cả các bài kiểm tra từ một danh sách cụ thể các lớp kiểm tra, thay vì tất cả các bài kiểm tra từ tất cả các lớp kiểm tra trong một mô -đun, bạn có thể sử dụng phương pháp loadTestsFromTestCase của ____ 7 để nhận TestSuite các bài kiểm tra cho mỗi lớp, Và sau đó tạo một TestSuite kết hợp từ một danh sách chứa tất cả các bộ mà bạn có thể sử dụng với

import unittest

class TestSomeClass[unittest.TestCase]:
    def testStuff[self]:
            # your testcode here
            pass

class TestSomeOtherClass[unittest.TestCase]:
    def testOtherStuff[self]:
            # testcode of second class here
            pass

if __name__ == '__main__':
    unittest.main[]
1:

import unittest

# Some tests

class TestClassA[unittest.TestCase]:
    def testOne[self]:
        # test code
        pass

class TestClassB[unittest.TestCase]:
    def testOne[self]:
        # test code
        pass

class TestClassC[unittest.TestCase]:
    def testOne[self]:
        # test code
        pass

def run_some_tests[]:
    # Run only the tests in the specified classes

    test_classes_to_run = [TestClassA, TestClassC]

    loader = unittest.TestLoader[]

    suites_list = []
    for test_class in test_classes_to_run:
        suite = loader.loadTestsFromTestCase[test_class]
        suites_list.append[suite]
        
    big_suite = unittest.TestSuite[suites_list]

    runner = unittest.TextTestRunner[]
    results = runner.run[big_suite]

    # ...

if __name__ == '__main__':
    run_some_tests[]

Đã trả lời ngày 29 tháng 5 năm 2013 lúc 21:11May 29, 2013 at 21:11

rakslicerakslicerakslice

8,5343 huy hiệu vàng52 Huy hiệu bạc54 Huy hiệu đồng3 gold badges52 silver badges54 bronze badges

2

Tôi hơi không chắc chắn về những gì bạn đang yêu cầu ở đây, nhưng nếu bạn muốn biết cách kiểm tra nhiều lớp trong cùng một bộ, thông thường bạn chỉ cần tạo nhiều mẫu thử trong cùng một tệp python và chạy chúng lại với nhau:

import unittest

class TestSomeClass[unittest.TestCase]:
    def testStuff[self]:
            # your testcode here
            pass

class TestSomeOtherClass[unittest.TestCase]:
    def testOtherStuff[self]:
            # testcode of second class here
            pass

if __name__ == '__main__':
    unittest.main[]

Và chạy với ví dụ:

python mytestsuite.py

Các ví dụ tốt hơn có thể được tìm thấy trong tài liệu chính thức.

Mặt khác, nếu bạn muốn chạy nhiều tệp kiểm tra, như đã nêu chi tiết trong "Cách tổ chức kiểm tra Python theo cách mà tôi có thể chạy tất cả các thử nghiệm trong một lệnh duy nhất?", Vậy thì câu trả lời khác có thể tốt hơn.

Đã trả lời ngày 28 tháng 4 năm 2011 lúc 17:24Apr 28, 2011 at 17:24

TddryingTddryingtddtrying

8606 Huy hiệu bạc12 Huy hiệu Đồng6 silver badges12 bronze badges

Phương thức unittest.testloader.loadTestSfRode [] sẽ khám phá và tải tất cả các lớp trong mô -đun được chỉ định. Vì vậy, bạn chỉ có thể làm điều này:

import unittest
import sys

class T1[unittest.TestCase]:
  def test_A[self]:
    pass
  def test_B[self]:
    pass

class T2[unittest.TestCase]:
  def test_A[self]:
    pass
  def test_B[self]:
    pass

if __name__ == "__main__":
  suite = unittest.TestLoader[].loadTestsFromModule[ sys.modules[__name__] ]
  unittest.TextTestRunner[verbosity=3].run[ suite ]

Đã trả lời ngày 27 tháng 4 năm 2017 lúc 11:30Apr 27, 2017 at 11:30

PDSPDSpds

2.0821 Huy hiệu vàng19 Huy hiệu bạc18 Huy hiệu đồng1 gold badge19 silver badges18 bronze badges

Thông thường bạn sẽ làm theo cách sau [chỉ thêm một lớp cho mỗi bộ]:

# Add tests.
alltests = unittest.TestSuite[]
alltests.addTest[unittest.makeSuite[Test1]]
alltests.addTest[unittest.makeSuite[Test2]]

Nếu bạn muốn có nhiều lớp mỗi bộ, bạn có thể sử dụng thêm các bài kiểm tra này theo cách sau:

for name in testnames:
    suite.addTest[tc_class[name, cargs=args]]

Dưới đây là ví dụ tương tự để chạy tất cả các lớp trên mỗi bộ riêng biệt, bạn có thể xác định phương thức

import unittest

class TestSomeClass[unittest.TestCase]:
    def testStuff[self]:
            # your testcode here
            pass

class TestSomeOtherClass[unittest.TestCase]:
    def testOtherStuff[self]:
            # testcode of second class here
            pass

if __name__ == '__main__':
    unittest.main[]
2 của riêng bạn:

# Credits: //codereview.stackexchange.com/a/88662/15346
def make_suite[tc_class]:
    testloader = unittest.TestLoader[]
    testnames = testloader.getTestCaseNames[tc_class]
    suite = unittest.TestSuite[]
    for name in testnames:
        suite.addTest[tc_class[name, cargs=args]]
    return suite

# Add all tests.
alltests = unittest.TestSuite[]
for name, obj in inspect.getmembers[sys.modules[__name__]]:
    if inspect.isclass[obj] and name.startswith["FooTest"]:
        alltests.addTest[make_suite[obj]]

result = unittest.TextTestRunner[verbosity=2].run[alltests]

Nếu ở trên không SUITE, bạn có thể chuyển đổi ví dụ trên thành phương thức có thể chấp nhận nhiều lớp.

Đã trả lời ngày 12 tháng 5 năm 2015 lúc 10:12May 12, 2015 at 10:12

Kenorbkenorbkenorb

Phù bằng vàng 146K7676 gold badges658 silver badges715 bronze badges

Tôi đã tìm thấy mũi là một công cụ tốt cho việc này. Nó phát hiện ra tất cả các bài kiểm tra đơn vị trong cấu trúc thư mục và thực thi chúng.

Đã trả lời ngày 19 tháng 3 năm 2011 lúc 8:18Mar 19, 2011 at 8:18

0

Bạn có thể có nhiều lớp trong Python không?

Như tất cả chúng ta đều biết, Python hỗ trợ nhiều kế thừa, có nghĩa là gì, trong Python, một lớp có thể kế thừa các tính năng và thuộc tính từ nhiều lớp.Python supports multiple inheritance, what means, in Python, a class can inherit features and attributes from multiple classes.

Làm thế nào để bạn sử dụng hai lớp trong Python?

Một lớp có thể được lấy từ nhiều lớp cơ sở trong Python, tương tự như C ++.Điều này được gọi là nhiều kế thừa.Trong nhiều kế thừa, các tính năng của tất cả các lớp cơ sở được kế thừa vào lớp dẫn xuất.Cú pháp cho nhiều kế thừa tương tự như thừa kế đơn.. This is called multiple inheritance. In multiple inheritance, the features of all the base classes are inherited into the derived class. The syntax for multiple inheritance is similar to single inheritance.

Chúng ta có thể mở rộng nhiều lớp trong Python không?

Python hỗ trợ kế thừa từ nhiều lớp..

Làm thế nào để bạn chạy nhiều trường hợp thử nghiệm trong Python?

Làm thế nào để bạn nhập nhiều trường hợp thử nghiệm trong Python ?..
Cú pháp:.
đầu vào[].Chia [phân tách, MaxSplit] Ví dụ:.
# Lấy nhiều đầu vào cùng một lúc.# và loại đúc bằng hàm danh sách [].....
# Lấy nhiều đầu vào cùng một lúc.x = [int [x] cho x trong đầu vào ["Nhập nhiều giá trị:"] ..

Bài Viết Liên Quan

Chủ Đề