Làm cách nào để định cấu hình PyCharm để chạy thử nghiệm py.test?


161

Tôi muốn bắt đầu viết các bài kiểm tra đơn vị cho mã Python của mình và khung py.test nghe có vẻ như là một đặt cược tốt hơn so với gói không đáng tin cậy của Python . Vì vậy, tôi đã thêm một thư mục "tests" vào dự án của mình và thêm test_sample.py vào nó. Bây giờ tôi muốn cấu hình PyCharm để chạy tất cả các bài kiểm tra trong thư mục "tests" của mình.

PyCharm bị cáo buộc hỗ trợ py.test trong trình chạy thử nghiệm của nó. Bạn được cho là có thể tạo cấu hình chạy / gỡ lỗi để chạy thử nghiệm và PyCharm bị cáo buộc có hộp thoại "tạo cấu hình" dành riêng cho py.test . Nhưng đó là toàn bộ tài liệu của họ về chủ đề này và tôi không thể tìm thấy hộp thoại bị cáo buộc này ở bất cứ đâu.

Nếu tôi nhấn phải chuột lên thư mục trong cửa sổ công cụ dự án, tôi phải nhìn thấy một "Tạo <name>" mục trình đơn, nhưng mục trình đơn chỉ bắt đầu bằng "Tạo" là "Tạo Run Configuration". Được rồi, có thể tài liệu chỉ sai và "Tạo cấu hình chạy" nghe có vẻ hứa hẹn. Thật không may, hai mục duy nhất trong menu con của nó là "Unittests in C: \ mypath ..." và "Doctests in C: \ mypath ...", cả hai mục này đều không áp dụng - Tôi không sử dụng không đơn giản cũng không phải doctest. Không có mục menu cho py.test.

Nếu tôi mở test_sample.py và nhấp chuột phải vào cửa sổ trình chỉnh sửa, tôi sẽ nhận được các mục trình đơn "Tạo <name>" đã hứa: có "Tạo 'Unittests in test_sa ...'...", sau đó là "Chạy 'Unittests in test_sa ...' "và" Debug 'Unittests in test_sa ...' ". Vì vậy, một lần nữa, tất cả đều cụ thể cho khuôn khổ nhỏ nhất; không có gì cho py.test.

Nếu tôi thử các mục menu có nội dung "không đáng tin cậy", tôi nhận được hộp thoại với các tùy chọn cho "Tên", "Loại", hộp nhóm "Thử nghiệm" với "Thư mục" và "Mẫu" và "Tập lệnh" và "Lớp "và" Chức năng ", v.v. Điều này nghe giống như những gì được ghi lại trong hộp thoại để thêm cấu hình cho Kiểm tra đơn vị Python và không giống như các tùy chọn" Tên "và" Kiểm tra để chạy "và" Từ khóa "được cho là hiển thị trong cấu hình cho hộp thoại py.test . Không có gì trong hộp thoại để chuyển đổi khung kiểm tra mà tôi đang thêm.

Tôi đang sử dụng PyCharm 1.5.2 trên Windows với Python 3.1.3 và pytest 2.0.3. Tôi có thể chạy thành công py.testcác bài kiểm tra của mình từ dòng lệnh, vì vậy nó không phải là thứ đơn giản như pytest không được cài đặt đúng cách.

Làm cách nào để định cấu hình PyCharm để chạy thử nghiệm py.test của tôi?

Câu trả lời:


227

Vui lòng vào File | Cài đặt | Công cụ | Python Integration Tools và thay đổi trình chạy thử mặc định thành py.test. Sau đó, bạn sẽ có tùy chọn py.test để tạo các bài kiểm tra thay vì tùy chọn không đáng tin cậy nhất.


Hừ! Không biết làm thế nào tôi bỏ lỡ điều đó. Tuy nhiên, nó chỉ hoạt động được một nửa: nếu tôi nhấp chuột phải vào thư mục trong cửa sổ công cụ Project, nó cho tôi một tùy chọn để tạo doctests, không phải py.tests. (Tôi sẽ viết báo cáo lỗi.) Nhưng nó hoạt động nếu tôi nhấp chuột phải vào trình chỉnh sửa và sau đó thay đổi "Script:" thành tên thư mục.
Joe White

3
Ngoài ra, hãy nhớ đánh dấu thư mục nguồn của bạn là "nguồn gốc": jetbrains.com/pycharm/webhelp/content-root.html
Inti

1
Có cách nào để thiết lập điều này cho toàn bộ dự án (hoặc tất cả các dự án) thay vì theo từng mô-đun không?
OrangeDog

1
Dường như File | Settings | Tools | Python Integrated Toolschỉ có sẵn trong Cài đặt dự án thay vì Cài đặt mặc định trong PyCharm 5.
killthrush

2
Sau khi được cấu hình, làm thế nào để bạn thực sự chạy thử nghiệm?
Chris Anderson

51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- Chọn py.testnhư Default test runner.
  2. Nếu bạn sử dụng Django Preference -> Languages&Frameworks -> Django- Đặt đánh dấu vàoDo not use Django Test runner
  3. Xóa tất cả các cấu hình thử nghiệm hiện có trước đó Run/Debug configuration, nếu không các thử nghiệm sẽ được chạy với các cấu hình cũ hơn.
  4. Để đặt một số đối số bổ sung mặc định cập nhật cấu hình mặc định py.test. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

2
Trong PyCharm 2017.3.2, ngay cả sau khi tôi đặt py.test làm mặc định, khi tôi nhấp chuột phải vào dự án trong bảng Project và chọn New => Python File, trình đơn Kind:thả xuống chỉ cung cấp: tệp Python, Kiểm tra đơn vị, sơ khai Python, không phải Pytest. Tôi đã xem xét tất cả các địa điểm được đề cập trong các chủ đề ở trên. Tôi đang thiếu gì?
Tom Baker

Tệp Python, Kiểm tra đơn vị, sơ đồ Python - chúng là các tệp python, với một số dữ liệu được xác định trước, bạn có thể thêm chính mình, đọc chủ đề này jetbrains.com/help/pycharm/ . Nhưng điều này không ảnh hưởng đến việc chạy thử nghiệm py.test, bạn chỉ có thể tạo một tệp python và nó sẽ hoạt động. Trong chủ đề này, chúng tôi đang thảo luận về cách định cấu hình tính năng này jetbrains.com/help/pycharm/rasty-tests.html để chạy py.test.
Serge Kubrak

Trong PyCharm mới nhất, "Mặc định" được gọi là "Mẫu"
AgDude

19

Tôi nghĩ bạn cần sử dụng mục Cấu hình Chạy / Gỡ lỗi trên thanh công cụ. Nhấp vào nó và 'Chỉnh sửa cấu hình' (hoặc sử dụng thay thế mục menu Run-> Chỉnh sửa cấu hình). Trong phần 'Mặc định' ở khung bên trái có mục 'py.test' mà tôi nghĩ là những gì bạn muốn.

Tôi cũng thấy rằng hướng dẫn sử dụng không phù hợp với giao diện người dùng cho việc này. Hy vọng tôi đã hiểu đúng vấn đề và điều đó có ích.


4
Trang "Mặc định> py.test" thực sự không cho tôi bất kỳ cách nào để tạo cấu hình. Nhưng nếu tôi đi đến hộp thoại Chỉnh sửa cấu hình, nhấp vào nút thanh công cụ "+", chọn "py.test" và đặt "Thư mục làm việc" vào thư mục chứa các bài kiểm tra của tôi, điều đó đã tạo ra một cấu hình chạy các thử nghiệm của tôi. Vì vậy, +1 đã chỉ cho tôi một phần hữu ích của chương trình. Tuy nhiên, tôi sẽ đưa ra câu trả lời được chấp nhận cho @yole, vì tôi nghĩ thay đổi mặc định thành py.test là một giải pháp tốt hơn - nó sẽ cho phép tôi chỉ chạy tệp hiện tại và những thứ tương tự.
Joe White

@JoeWhite Vui lòng thêm câu trả lời vì nó hữu ích
Hariom Singh

Trên các Chỉnh sửa cấu hình Window, sau khi lựa chọn cấu hình pytest của tôi, tôi cũng phải lựa chọn Targetđược Script athvà trỏ nó vào thư mục gốc của các bài kiểm tra của tôi thư mục
RAbraham

Đây là cách tốt hơn nhiều vì nó mở ra tính năng khác cũng như chuyển các đối số dòng lệnh, v.v.
chirag nayak

13

Đây là cách tôi làm cho nó hoạt động với pytest 3.7.2(được cài đặt qua pip) và pycharms 2017.3:

  1. Đi đến edit configurations

  1. Thêm một cấu hình chạy mới và chọn py.test

  1. Trong chi tiết cấu hình chạy, bạn cần đặt target= pythonvà trường không tên bên dưới thành tests. Có vẻ như đây là tên của thư mục thử nghiệm của bạn. Không quá chắc chắn khó khăn. Tôi cũng đề nghị -sđối số để nếu bạn gỡ lỗi các bài kiểm tra của mình, bàn điều khiển sẽ hoạt động đúng. Nếu không có đối số, pytest sẽ bắt đầu ra và làm cho bảng điều khiển gỡ lỗi bị lỗi.

  1. Thư mục thử nghiệm của tôi trông như thế. Đây là ngay dưới gốc của dự án của tôi ( my_project/tests).

  1. foobar_test.pyTệp của tôi : (không cần nhập):
def test_foobar ():
    in ("xin chào pytest")
    khẳng định đúng
  1. Chạy nó với lệnh chạy bình thường


Có bất kỳ khả năng để chỉ chạy thử nghiệm từ tập tin hiện tại? Tôi chỉ phát hiện ra rằng tôi cần thay đổi tên tệp trong cài đặt cấu hình mỗi lần tôi mở tệp khác
algot

@ achot Tôi không biết điều đó trên đỉnh đầu. Có một cái nhìn lúc này: jetbrains.com/help/pycharm/performing-tests.html và điều này: jetbrains.com/pycharm/guide/tips/run-single-test
Benjamin Crouzier

5

Đó là tài liệu kém để chắc chắn. Khi bạn nhận được thêm cấu hình mới từ mặc định, bạn sẽ ở trong vương quốc chạy tập lệnh "/ Ứng dụng / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py". Nó không được ghi lại và có ý tưởng riêng về các đối số dòng lệnh.

Bạn có thể:

  1. Hãy thử chơi xung quanh, đảo ngược tập lệnh và xem liệu bằng cách nào đó bạn có thể lấy py.test để chấp nhận đối số không. Có thể đấy; nó đã không trong nửa giờ đầu tiên đối với tôi.
  2. Chỉ cần chạy "py.test * .py" từ bảng điều khiển.

Điều kỳ lạ là bạn sẽ khó tìm thấy bất kỳ cuộc thảo luận nào vì JetBrains thực hiện tốt việc ném bom các thuật toán của Google bằng các trang của riêng mình.


3

tìm chủ đề này khi tôi gặp câu hỏi tương tự và tìm thấy phiên bản giải pháp pycharm: 2017.1.2 đi tới "Tùy chọn" -> "Công cụ" -> "Công cụ tích hợp Python" và đặt trình chạy thử mặc định từ bảng điều khiển bên phải là py.test giải quyết vấn đề của tôi


Nó sẽ hoạt động, nhưng sau đó bạn phải bấm chuột phải vào tên tệp kịch bản thử nghiệm trong cửa sổ Dự án. Thay vào đó, nếu bạn nhấp chuột phải vào khu vực soạn thảo tệp của cùng một kịch bản kiểm tra, thì nó vẫn hiển thị công cụ mặc định cũ (Unittests). Điều này thật khó chịu vì tôi không thể chỉ định chức năng cá nhân mà tôi muốn kiểm tra.
Hongyu Zhang

3

Trong pycharm 2019.2, bạn chỉ cần làm điều này để chạy tất cả các bài kiểm tra:

  1. Chạy> Chỉnh sửa cấu hình> Thêm pytest
  2. Đặt tùy chọn như hiển thị trong ảnh chụp màn hình sau ảnh chụp màn hình của cấu hình
  3. Nhấp vào Gỡ lỗi (hoặc chạy pytest bằng cách sử dụng phím nóng Shift + Alt + F9)

Để tích hợp pytest cao hơn vào pycharm, hãy xem https://www.jetbrains.com/help/pycharm/pytest.html


2

Tôi đang sử dụng 2018.2

Tôi thực hiện Run -> Chỉnh sửa cấu hình ... Sau đó nhấp vào + ở phía trên bên trái của hộp thoại phương thức. Chọn "python tests" -> py.test Sau đó tôi đặt cho nó một cái tên như "All test with py.test"

Tôi chọn Target: tên mô-đun và đặt vào mô-đun nơi các thử nghiệm của tôi (đó là 'thử nghiệm' cho tôi) hoặc mô-đun nơi tất cả mã của tôi là nếu các thử nghiệm của tôi được trộn lẫn với mã của tôi. Điều này đã làm tôi vấp ngã.

Tôi đặt trình thông dịch Python.

Tôi đặt thư mục làm việc vào thư mục dự án.


0

Với một thiết lập python Conda đặc biệt bao gồm cài đặt pip cho py.test cộng với việc sử dụng addin Specs (tùy chọn --spec) (đối với Rspec như ngôn ngữ tóm tắt kiểm tra đẹp), tôi phải làm;

1. Chỉnh sửa py.test mặc định để bao gồm tùy chọn = --spec, có nghĩa là sử dụng plugin: https://github.com/pchomik/pytest-spec

2. Tạo cấu hình thử nghiệm mới, sử dụng py.test. Thay đổi trình thông dịch python của nó để sử dụng ~ / anaconda / envs / sự lựa chọn thông dịch viên của bạn, ví dụ py27 cho tên của tôi.

3. Xóa cấu hình thử nghiệm 'unittests'.

4.Bây giờ cấu hình kiểm tra mặc định là py.test với các đầu ra kiểu Rspec đáng yêu của tôi. Tôi thích nó! Cảm ơn mọi người!

Tài liệu của ps Jetbrains về cấu hình chạy / gỡ lỗi có tại đây: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test


0

Với 2018.3, nó dường như tự động phát hiện ra rằng tôi đang sử dụng pytest, điều này thật tuyệt, nhưng nó vẫn không cho phép chạy từ cấp cao nhất của dự án. Tôi đã phải chạy pytestcho từng teststhư mục riêng lẻ.

Tuy nhiên, tôi thấy rằng tôi có thể chọn một trong các cấu hình và chỉnh sửa thủ công để chạy ở thư mục gốc của dự án và điều này đã hoạt động. Tôi phải chọn thủ công trong trình đơn thả xuống Cấu hình - không thể nhấp chuột phải vào thư mục gốc trong ngăn Dự án. Nhưng ít nhất nó cho phép tôi chạy tất cả các bài kiểm tra cùng một lúc.


0

Kích hoạt dự án Pytest cho bạn

  1. Mở Cài đặt / Tùy chọn | Công cụ | Hộp thoại cài đặt Công cụ tích hợp Python như được mô tả trong Chọn Khung kiểm tra của bạn.
  2. Trong trường Chạy thử mặc định, chọn pytest .
  3. Nhấn OK để lưu cài đặt.

nhập mô tả hình ảnh ở đây

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.