Các bài kiểm tra đơn vị Python đi đâu?


490

Nếu bạn đang viết thư viện hoặc ứng dụng, các tệp kiểm tra đơn vị sẽ đi đâu?

Thật tốt khi tách các tệp kiểm tra khỏi mã ứng dụng chính, nhưng thật khó để đặt chúng vào thư mục con "kiểm tra" bên trong thư mục gốc của ứng dụng, vì việc nhập các mô-đun mà bạn sẽ kiểm tra sẽ khó khăn hơn.

Có một thực hành tốt nhất ở đây?


4
Có nhiều câu trả lời chấp nhận được cho câu hỏi này và điều đó làm cho nó không phải là một câu hỏi cho một trang web Q / A. Mọi người cần hiểu rằng không phải tất cả các câu hỏi hữu ích tuyệt vời đều có thể được hỏi trên SO. Các nhà tạo mẫu chọn cho điều đó và chúng tôi phải tuân theo các quy tắc của họ.
Wouter J

121
Mọi người cũng cần phải hiểu rằng khi các trang SO kết thúc như một mục tiêu hàng đầu cho tìm kiếm Google, có lẽ tốt hơn là chỉ đi theo dòng chảy thay vì tuân theo học thuyết chính thức của SO.
Christopher Barber

6
@ChristopherBarber mọi người cũng cần hiểu rằng các quyết định và đóng cửa mạnh mẽ là điều cuối cùng kiếm được danh tiếng khủng khiếp như một trang web, tôi không muốn đặt câu hỏi trừ khi tôi thực sự, thực sự không có lựa chọn nào tốt hơn.
Stefano Borini

Câu trả lời:


200

Đối với một tệp module.py, kiểm tra đơn vị thường được gọi test_module.py, theo các quy ước đặt tên Pythonic.

Có một số nơi thường được chấp nhận để đặt test_module.py:

  1. Trong cùng thư mục với module.py.
  2. Trong ../tests/test_module.py(cùng cấp với thư mục mã).
  3. Trong tests/test_module.py(một cấp dưới thư mục mã).

Tôi thích # 1 vì đơn giản trong việc tìm kiếm các bài kiểm tra và nhập chúng. Bất cứ hệ thống xây dựng nào bạn đang sử dụng đều có thể dễ dàng được cấu hình để chạy các tệp bắt đầu bằng test_. Trên thực tế, mẫu mặc định unittestđược sử dụng để khám phá thử nghiệm làtest*.py .


12
Các load_tests giao thức tìm kiếm tập tin có tên test * .py theo mặc định. Ngoài ra, kết quả hàng đầu này của Googletài liệu không đáng tin này đều sử dụng định dạng test_module.py.
dfarrell07

6
Sử dụng foo_test.py có thể lưu một hoặc hai lần nhấn phím khi sử dụng hoàn tất tab vì bạn không có một loạt các tệp bắt đầu bằng 'test_'.
cây bách xù-

11
@juniper, theo suy nghĩ của bạn module_test sẽ xuất hiện trong hoàn thành tự động khi bạn đang mã hóa. Điều đó có thể gây nhầm lẫn hoặc gây phiền nhiễu.
Medeiros

11
Khi triển khai mã, chúng tôi không muốn triển khai các thử nghiệm đến các địa điểm sản xuất của mình. Vì vậy, có chúng trong một thư mục './tests/test_blah.py' rất dễ dàng khi chúng tôi triển khai. CSONG, một số thử nghiệm lấy các tệp dữ liệu mẫu và có các tệp trong thư mục kiểm tra là điều quan trọng vì chúng tôi triển khai dữ liệu thử nghiệm.
Kevin J. Rice

1
@ KevinJ.Rice Bạn không nên kiểm tra xem mã có hoạt động trên các địa điểm sản xuất của bạn không?
endolith

67

Chỉ có 1 tệp kiểm tra

Nếu chỉ có 1 tệp kiểm tra, nên đặt nó vào thư mục cấp cao nhất:

module/
    lib/
        __init__.py
        module.py
    test.py

Chạy thử nghiệm trong CLI

python test.py

Nhiều tập tin kiểm tra

Nếu có nhiều tệp kiểm tra, hãy đặt nó vào một teststhư mục:

module/
    lib/
        __init__.py
        module.py
    tests/
        test_module.py
        test_module_function.py
# test_module.py

import unittest
from lib import module

class TestModule(unittest.TestCase):
    def test_module(self):
        pass

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

Chạy thử nghiệm trong CLI

# In top-level /module/ folder
python -m tests.test_module
python -m tests.test_module_function

Sử dụng unittest discovery

unittest discovery sẽ tìm thấy tất cả các bài kiểm tra trong thư mục gói.

Tạo một __init__.pytrong tests/thư mục

module/
    lib/
        __init__.py
        module.py
    tests/
        __init__.py
        test_module.py
        test_module_function.py

Chạy thử nghiệm trong CLI

# In top-level /module/ folder

# -s, --start-directory (default current directory)
# -p, --pattern (default test*.py)

python -m unittest discover

Tài liệu tham khảo

Khung kiểm tra đơn vị


51

Một thực tế phổ biến là đặt thư mục tests trong cùng thư mục cha với mô-đun / gói của bạn. Vì vậy, nếu mô-đun của bạn được gọi là foo.py bố cục thư mục của bạn sẽ như sau:

parent_dir/
  foo.py
  tests/

Tất nhiên không có cách nào để làm điều đó. Bạn cũng có thể tạo thư mục con kiểm tra và nhập mô-đun bằng cách nhập tuyệt đối .

Bất cứ nơi nào bạn đặt bài kiểm tra của mình, tôi sẽ khuyên bạn nên sử dụng mũi để chạy chúng. Mũi tìm kiếm thông qua các thư mục của bạn để kiểm tra. Bằng cách này, bạn có thể đặt các bài kiểm tra bất cứ nơi nào chúng có ý nghĩa nhất về mặt tổ chức.


16
Tôi muốn làm điều này nhưng tôi không thể làm cho nó hoạt động. Để chạy thử nghiệm, tôi đang ở trong ngoặc đơn và nhập: "python tests \ foo_test.py" và trong foo_test.py: "từ ..foo nhập cái này, cái kia," Không thành công với: "ValueError: Đã thử nhập tương đối trong gói không "Cả Parent_dir và kiểm tra đều có init .py trong chúng, vì vậy tôi không chắc tại sao chúng không có gói. Tôi nghi ngờ đó là bởi vì tập lệnh cấp cao nhất mà bạn chạy từ dòng lệnh không thể được coi là một phần của gói, ngay cả khi nó nằm trong một thư mục có init .py. Vậy làm thế nào để tôi chạy thử nghiệm? Tôi đang làm việc trên Windows ngày hôm nay, chúc lành cho đôi tất cotton của tôi.
Jonathan Hartley

4
Cách tốt nhất-- Tôi đã tìm thấy-- để chạy thử nghiệm đơn vị là cài đặt thư viện / chương trình của bạn sau đó chạy thử nghiệm đơn vị bằng mũi. Tôi muốn giới thiệu virtualenv và virtualenvwrapper để làm cho việc này dễ dàng hơn nhiều.
Cristian

@Tartley - bạn cần một tệp init .py trong thư mục 'tests' của bạn để nhập khẩu áp dụng để hoạt động. Tôi có phương pháp này làm việc với mũi, vì vậy tôi không chắc tại sao bạn gặp rắc rối.
cmcginty

4
Cảm ơn Casey - nhưng tôi có một tệp init .py trong tất cả các thư mục có liên quan. Tôi không biết những gì tôi làm sai, nhưng tôi có vấn đề này trên tất cả các dự án Python của tôi và tôi không thể hiểu tại sao không ai khác làm điều đó. Ôi trời ơi.
Jonathan Hartley

8
Một giải pháp cho vấn đề của tôi, với Python2.6 hoặc mới hơn, chúng tôi sẽ chạy thử nghiệm từ thư mục gốc của dự án của bạn bằng cách sử dụng: python -m project.package.tests.module_tests (thay vì python project / gói / tests / module_tests.py) . Điều này đặt thư mục của mô-đun thử nghiệm trên đường dẫn, do đó các thử nghiệm sau đó có thể thực hiện nhập tương đối vào thư mục mẹ của chúng để có được thử nghiệm mô-đun.
Jonathan Hartley

32

Chúng tôi đã có cùng một câu hỏi khi viết Pythoscope ( https://pypi.org/project/pythcop/ ), trong đó tạo ra các bài kiểm tra đơn vị cho các chương trình Python. Chúng tôi đã thăm dò ý kiến ​​mọi người về thử nghiệm trong danh sách python trước khi chúng tôi chọn một thư mục, có nhiều ý kiến ​​khác nhau. Cuối cùng, chúng tôi đã chọn đặt một thư mục "tests" trong cùng thư mục với mã nguồn. Trong thư mục đó, chúng tôi tạo một tệp thử nghiệm cho mỗi mô-đun trong thư mục mẹ.


2
Tuyệt vời! Chỉ cần chạy Pythoscope (logo tuyệt vời), trên một số mã kế thừa và nó thật tuyệt vời. Thực hành tốt nhất ngay lập tức và bạn có thể khiến các nhà phát triển khác điền vào các sơ khai thử nghiệm hiện đang thất bại. Bây giờ để móc nó lên tre? :)
Sẽ

27

Tôi cũng có xu hướng đặt các bài kiểm tra đơn vị của mình vào tệp, như Jeremy Cantrell ở trên ghi chú, mặc dù tôi có xu hướng không đặt chức năng kiểm tra trong phần chính, mà thay vào đó đặt mọi thứ vào một

if __name__ == '__main__':
   do tests...

khối. Điều này kết thúc việc thêm tài liệu vào tệp dưới dạng 'mã ví dụ' để biết cách sử dụng tệp python mà bạn đang kiểm tra.

Tôi nên thêm, tôi có xu hướng viết các mô-đun / lớp rất chặt chẽ. Nếu các mô-đun của bạn yêu cầu số lượng thử nghiệm rất lớn, bạn có thể đặt chúng vào một thử nghiệm khác, nhưng ngay cả khi đó, tôi vẫn thêm:

if __name__ == '__main__':
   import tests.thisModule
   tests.thisModule.runtests

Điều này cho phép bất cứ ai đọc mã nguồn của bạn biết nơi để tìm mã kiểm tra.


"Như Jeremy Cantrell ở trên ghi chú" ở đâu?
endolith

Tôi thích cách làm việc này. Đơn giản nhất trong số các trình soạn thảo có thể được cấu hình để chạy tệp của bạn bằng phím nóng, vì vậy khi bạn đang xem mã, bạn có thể chạy thử nghiệm ngay lập tức. Thật không may trong các ngôn ngữ khác ngoài Python, điều này có thể trông rất khủng khiếp, vì vậy nếu bạn đang ở trong một cửa hàng C ++ hoặc Java, các đồng nghiệp của bạn có thể nhăn mặt vì điều này. Nó cũng không hoạt động tốt với các công cụ bảo hiểm mã.
Keeely

19

Thỉnh thoảng tôi thấy mình kiểm tra chủ đề của vị trí kiểm tra và mỗi lần đa số đề xuất một cấu trúc thư mục riêng bên cạnh mã thư viện, nhưng tôi thấy rằng mỗi lần các đối số đều giống nhau và không thuyết phục. Tôi cuối cùng đặt các mô-đun thử nghiệm của tôi ở đâu đó bên cạnh các mô-đun cốt lõi.

Lý do chính để làm điều này là: tái cấu trúc .

Khi tôi di chuyển mọi thứ xung quanh tôi muốn các mô-đun thử nghiệm di chuyển với mã; thật dễ dàng để mất các bài kiểm tra nếu chúng ở trong một cây riêng biệt. Hãy trung thực, sớm hay muộn bạn kết thúc với một cấu trúc thư mục hoàn toàn khác, như django , bình và nhiều thứ khác. Sẽ tốt thôi nếu bạn không quan tâm.

Câu hỏi chính bạn nên tự hỏi mình là:

Tôi đang viết:

  • a) thư viện tái sử dụng hoặc
  • b) xây dựng một dự án hơn các gói cùng nhau một số mô-đun bán tách?

Nếu một:

Một thư mục riêng và nỗ lực thêm để duy trì cấu trúc của nó có thể phù hợp hơn. Không ai sẽ phàn nàn về các thử nghiệm của bạn được triển khai để sản xuất .

Nhưng thật dễ dàng để loại trừ các bài kiểm tra khỏi bị phân phối khi chúng được trộn với các thư mục cốt lõi; đặt cái này trong setup.py :

find_packages("src", exclude=["*.tests", "*.tests.*", "tests.*", "tests"]) 

Nếu b:

Bạn có thể muốn - như mọi người trong chúng ta làm - rằng bạn đang viết thư viện có thể sử dụng lại, nhưng phần lớn thời gian cuộc sống của họ gắn liền với cuộc sống của dự án. Khả năng dễ dàng duy trì dự án của bạn nên được ưu tiên.

Sau đó, nếu bạn đã làm một công việc tốt và mô-đun của bạn phù hợp với dự án khác, nó có thể sẽ được sao chép - không bị rẽ nhánh hoặc được tạo thành một thư viện riêng - vào dự án mới này và di chuyển các thử nghiệm nằm bên cạnh nó trong cùng cấu trúc thư mục thật dễ dàng so với việc kiểm tra các bài kiểm tra trong một mớ hỗn độn mà một thư mục kiểm tra riêng biệt đã trở thành. (Bạn có thể lập luận rằng nó không nên là một mớ hỗn độn ở nơi đầu tiên nhưng hãy thực tế ở đây).

Vì vậy, sự lựa chọn vẫn là của bạn, nhưng tôi sẽ lập luận rằng với các bài kiểm tra hỗn hợp, bạn đạt được tất cả những điều tương tự như với một thư mục riêng, nhưng ít nỗ lực hơn trong việc giữ mọi thứ gọn gàng.


1
thực sự có vấn đề gì với việc triển khai thử nghiệm vào sản xuất? theo kinh nghiệm của tôi, nó rất hữu ích: cho phép người dùng thực sự chạy thử nghiệm trên môi trường của họ ... khi bạn nhận được báo cáo lỗi, bạn có thể yêu cầu người dùng chạy bộ thử nghiệm để đảm bảo mọi thứ đều ổn ở đó và gửi các bản vá nóng cho thử nghiệm bộ trực tiếp ... bên cạnh đó, không phải vì bạn đặt các thử nghiệm của mình vào module.tests mà nó sẽ kết thúc trong sản xuất, trừ khi bạn đã làm gì đó sai trong tệp thiết lập của mình ...
anarcat

2
Như tôi đã viết trong câu trả lời của mình, tôi thường không tách các bài kiểm tra. Nhưng. Đưa các bài kiểm tra vào gói phân phối có thể dẫn đến thực thi những thứ bạn thường không muốn trong env sản xuất (ví dụ: một số mã cấp mô-đun). Tất nhiên nó phụ thuộc vào cách các bài kiểm tra được viết, nhưng để an toàn, bạn bỏ chúng đi, không ai sẽ chạy một cái gì đó có hại do nhầm lẫn. Tôi không chống lại việc bao gồm các thử nghiệm trong các bản phân phối, nhưng tôi hiểu rằng theo nguyên tắc thông thường, nó an toàn hơn. Và đặt chúng vào thư mục riêng biệt giúp việc siêu dễ dàng không bao gồm chúng trong dist.
Janusz Skonieczny

15

Tôi sử dụng một tests/thư mục, và sau đó nhập các mô-đun ứng dụng chính bằng cách nhập tương đối. Vì vậy, trong MyApp / tests / foo.py, có thể có:

from .. import foo

để nhập MyApp.foomô-đun.


5
"ValueError: Đã cố nhập tương đối trong gói không"
cprn

12

Tôi không tin rằng có một "thực tiễn tốt nhất" được thiết lập.

Tôi đặt các bài kiểm tra của mình trong một thư mục khác bên ngoài mã ứng dụng. Sau đó tôi thêm thư mục ứng dụng chính vào sys.path (cho phép bạn nhập các mô-đun từ bất cứ đâu) trong tập lệnh chạy thử nghiệm của tôi (cũng thực hiện một số nội dung khác) trước khi chạy tất cả các bài kiểm tra. Bằng cách này, tôi không bao giờ phải xóa thư mục kiểm tra khỏi mã chính khi tôi phát hành nó, tiết kiệm thời gian và công sức của tôi, nếu một số tiền rất nhỏ.


3
Sau đó tôi thêm thư mục ứng dụng chính vào sys.path Vấn đề là nếu các thử nghiệm của bạn có chứa một số mô đun trợ giúp (như máy chủ web thử nghiệm) và bạn cần nhập các mô đun trợ giúp như vậy từ trong các thử nghiệm thích hợp của mình.
Piotr Dobrogost

Đây là những gì nó trông giống như đối với tôi:os.sys.path.append(os.dirname('..'))
Matt M.

11

Từ kinh nghiệm của tôi trong việc phát triển các khung Kiểm tra trong Python, tôi sẽ đề nghị đặt các bài kiểm tra đơn vị python vào một thư mục riêng. Duy trì cấu trúc thư mục đối xứng. Điều này sẽ hữu ích trong việc đóng gói chỉ các thư viện cốt lõi và không đóng gói các bài kiểm tra đơn vị. Dưới đây được thực hiện thông qua một sơ đồ.

                              <Main Package>
                               /          \
                              /            \
                            lib           tests
                            /                \
             [module1.py, module2.py,  [ut_module1.py, ut_module2.py,
              module3.py  module4.py,   ut_module3.py, ut_module.py]
              __init__.py]

Theo cách này khi bạn đóng gói các thư viện này bằng vòng / phút, bạn chỉ có thể đóng gói các mô-đun thư viện chính (chỉ). Điều này giúp duy trì đặc biệt trong môi trường nhanh nhẹn.


1
Tôi đã nhận ra rằng một lợi thế tiềm năng của phương pháp này là các thử nghiệm có thể được phát triển (và thậm chí có thể kiểm soát phiên bản) như một ứng dụng độc lập của riêng họ. Tất nhiên, đối với mọi lợi thế đều có một nhược điểm - duy trì tính đối xứng về cơ bản là thực hiện "kế toán kép", và làm cho việc tái cấu trúc nhiều việc vặt hơn.
Jasha

Câu hỏi tiếp theo mềm: tại sao môi trường nhanh đặc biệt phù hợp với phương pháp này? (tức là những gì về quy trình làm việc nhanh làm cho cấu trúc thư mục đối xứng trở nên có lợi?)
Jasha

11

Tôi khuyên bạn nên kiểm tra một số dự án Python chính trên GitHub và lấy một số ý tưởng.

Khi mã của bạn lớn hơn và bạn thêm nhiều thư viện, tốt hơn là tạo một thư mục thử nghiệm trong cùng thư mục mà bạn có setup.py và phản ánh cấu trúc thư mục dự án của bạn cho từng loại thử nghiệm (không tích hợp, tích hợp, ...)

Ví dụ: nếu bạn có cấu trúc thư mục như:

myPackage/
    myapp/
       moduleA/
          __init__.py
          module_A.py
       moduleB/
          __init__.py
          module_B.py
setup.py

Sau khi thêm thư mục kiểm tra, bạn sẽ có một cấu trúc thư mục như:

myPackage/
    myapp/
       moduleA/
          __init__.py
          module_A.py
       moduleB/
          __init__.py
          module_B.py
test/
   unit/
      myapp/
         moduleA/
            module_A_test.py
         moduleB/
            module_B_test.py
   integration/
          myapp/
             moduleA/
                module_A_test.py
             moduleB/
                module_B_test.py
setup.py

Nhiều gói Python được viết đúng sử dụng cùng một cấu trúc. Một ví dụ rất hay là gói Boto. Kiểm tra https://github.com/boto/boto


1
Bạn nên sử dụng "kiểm tra" thay vì "kiểm tra", vì "kiểm tra" là mô-đun xây dựng Python. docs.python.org/2/library/test.html
brodul

Không phải lúc nào .. chẳng hạn matplotlib có nó dưới matplotlib/lib/matplotlib/tests( github.com/matplotlib/matplotlib/tree/iêu ), sklearncó nó dưới scikitelearn/sklearn/tests( github.com/scikit-learn/scikit-learn/tree/master/sklearn/tests )
alpha_989

7

Làm thế nào tôi làm điều đó...

Cấu trúc thư mục:

project/
    src/
        code.py
    tests/
    setup.py

Setup.py trỏ đến src / là vị trí chứa các mô đun dự án của tôi, sau đó tôi chạy:

setup.py develop

Mà thêm dự án của tôi vào các gói trang web, chỉ vào bản sao làm việc của tôi. Để chạy thử nghiệm của tôi, tôi sử dụng:

setup.py tests

Sử dụng bất kỳ trình chạy thử nào tôi đã cấu hình.


Bạn dường như đã sử dụng quá nhiều thuật ngữ "mô-đun". Hầu hết các lập trình viên Python có thể sẽ nghĩ rằng mô-đun là tệp bạn đã gọi code.py. Sẽ có ý nghĩa hơn khi gọi thư mục cấp cao nhất là "dự án".
blo ở

4

Tôi thích thư mục kiểm tra toplevel. Điều này không có nghĩa là nhập khẩu trở nên khó khăn hơn một chút. Cho rằng tôi có hai giải pháp:

  1. Sử dụng setuptools. Sau đó bạn có thể vượt quatest_suite='tests.runalltests.suite' thành setup(), và có thể chạy các bài kiểm tra đơn giản:python setup.py test
  2. Đặt PYTHONPATH khi chạy thử nghiệm: PYTHONPATH=. python tests/runalltests.py

Đây là cách những thứ đó được hỗ trợ bởi mã trong M2Crypto:

Nếu bạn thích chạy thử nghiệm với nosetests, bạn có thể cần phải làm một cái gì đó hơi khác một chút.


3

Chúng tôi sử dụng

app/src/code.py
app/testing/code_test.py 
app/docs/..

Trong mỗi tệp thử nghiệm, chúng tôi chèn ../src/vào sys.path. Đây không phải là giải pháp tốt nhất nhưng hiệu quả. Tôi nghĩ sẽ thật tuyệt nếu ai đó nghĩ ra một thứ như maven trong java cung cấp cho bạn các quy ước tiêu chuẩn chỉ hoạt động, bất kể bạn làm việc trên dự án nào.


1

Nếu các bài kiểm tra đơn giản, chỉ cần đặt chúng vào chuỗi doc - hầu hết các khung kiểm tra cho Python sẽ có thể sử dụng:

>>> import module
>>> module.method('test')
'testresult'

Đối với các thử nghiệm liên quan khác, tôi sẽ đặt chúng vào ../tests/test_module.pyhoặc vào tests/test_module.py.


1

Trong C #, tôi thường tách các thử nghiệm thành một cụm riêng biệt.

Trong Python - cho đến nay - tôi đã có xu hướng viết các tài liệu, trong đó bài kiểm tra nằm trong chuỗi tài liệu của hàm hoặc đặt chúng vào if __name__ == "__main__"khối ở dưới cùng của mô-đun.


0

Khi viết một gói có tên là "foo", tôi sẽ đặt các bài kiểm tra đơn vị vào một gói riêng "foo_test". Các mô-đun và gói con sau đó sẽ có cùng tên với mô-đun gói SUT. Ví dụ: các kiểm tra cho một mô-đun foo.xy được tìm thấy trong foo_test.xy Các tệp __init__.py của mỗi gói kiểm tra sau đó chứa bộ AllTests bao gồm tất cả các bộ kiểm tra của gói. setuptools cung cấp một cách thuận tiện để chỉ định gói thử nghiệm chính, để sau khi "python setup.py phát triển", bạn có thể sử dụng "python setup.py test" hoặc "python setup.py test -s foo_test.x.SomeTestSuite" cho chỉ là một bộ cụ thể.


0

Tôi đặt các bài kiểm tra của mình trong cùng thư mục với mã được kiểm tra (CUT); cho foo.pycác bài kiểm tra sẽ trong foo_ut.pyhoặc tương tự. (Tôi điều chỉnh quá trình khám phá thử nghiệm để tìm những thứ này.)

Điều này đặt các bài kiểm tra ngay bên cạnh mã trong danh sách thư mục, làm rõ rằng các bài kiểm tra ở đó và giúp mở các bài kiểm tra dễ dàng nhất có thể khi chúng nằm trong một tệp riêng biệt. (Đối với người chỉnh sửa dòng lệnh,vim foo* và khi sử dụng trình duyệt hệ thống tệp đồ họa, chỉ cần nhấp vào tệp CUT và sau đó là tệp thử nghiệm liền kề.)

Như những người khác đã chỉ ra , điều này cũng làm cho việc tái cấu trúc dễ dàng hơn và trích xuất mã để sử dụng ở nơi khác nếu cần thiết.

Tôi thực sự không thích ý tưởng đưa các bài kiểm tra vào một cây thư mục hoàn toàn khác; tại sao làm cho các nhà phát triển khó mở các bài kiểm tra hơn khi họ mở tệp bằng CUT? Nó không giống như đại đa số các nhà phát triển rất thích viết hoặc tinh chỉnh các bài kiểm tra mà họ sẽ bỏ qua mọi rào cản để làm điều đó, thay vì sử dụng rào cản như một cái cớ. (Hoàn toàn ngược lại, theo kinh nghiệm của tôi; ngay cả khi bạn làm cho nó dễ dàng nhất có thể, tôi biết nhiều nhà phát triển không thể bận tâm để viết bài kiểm tra.)


-2

Gần đây tôi đã bắt đầu lập trình bằng Python, vì vậy tôi chưa thực sự có cơ hội tìm hiểu thực tiễn tốt nhất. Nhưng, tôi đã viết một mô-đun đi và tìm tất cả các bài kiểm tra và chạy chúng.

Vì vậy, tôi có:

ứng dụng /
 appfile.py
kiểm tra/
 appfileTest.py

Tôi sẽ phải xem mọi thứ diễn ra như thế nào khi tôi tiến tới các dự án lớn hơn.


4
Xin chào, camelCase có một chút kỳ lạ trong thế giới trăn.
Stuart Axon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.