Cách kiểm tra tệp đơn trong pytest


81

Làm thế nào để bạn kiểm tra một tệp duy nhất trong pytest? Tôi chỉ có thể tìm thấy các tùy chọn bỏ qua và không có tùy chọn "chỉ kiểm tra tệp này" trong tài liệu.

Tốt hơn là điều này sẽ hoạt động trên dòng lệnh thay vì setup.cfg, vì tôi muốn chạy các thử nghiệm tệp khác nhau trong id. Toàn bộ bộ này mất quá nhiều thời gian.

Câu trả lời:


88

chỉ cần chạy pytestvới đường dẫn đến tệp

cái gì đó như

pytest tests/unit/some_test_file.py


3
Ok, đây có vẻ là những gì pycharm đang làm nhưng nó vẫn đang chạy toàn bộ. Chạy py.test trên dòng lệnh đang đưa ra giá trị mặc định vì một số lý do. Tôi cho rằng điều này nằm ngoài phạm vi của câu hỏi ban đầu vì vậy tôi sẽ chấp nhận câu trả lời của bạn nếu tôi có thể làm cho nó hoạt động.
simonzack

3
Rõ ràng addoptstrong setup.cfg đang gặp sự cố nếu đường dẫn được thêm vào đó.
simonzack

1
@simonzack Tôi đoán bạn muốn chạy một trường hợp thử nghiệm duy nhất trong số nhiều trường hợp thử nghiệm có trong tệp. Hãy thử cách này: py.test test_basic.py -k test_first ở đây test_first là một trường hợp thử nghiệm có trong tệp test_basic.py của tôi.
Anurag Sinha

67

Điều này khá đơn giản:

$ pytest -v /path/to/test_file.py

Các -vlá cờ là để tăng tính cách rườm rà. Nếu bạn muốn chạy một thử nghiệm cụ thể trong tệp đó:

$ pytest -v /path/to/test_file.py::test_name

Nếu bạn muốn chạy thử nghiệm, bạn có thể sử dụng những tên nào tuân theo mẫu:

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py

Bạn cũng có tùy chọn đánh dấu bài kiểm tra, vì vậy bạn có thể sử dụng -mcờ để chạy một tập hợp con các bài kiểm tra đã đánh dấu.

test_file.py

def test_number_one():
    """Docstring"""
    assert 1 == 1


@pytest.mark.run_these_please
def test_number_two():
    """Docstring"""
    assert [1] == [1]

Để chạy thử nghiệm được đánh dấu bằng run_these_please:

$ pytest -v -m run_these_please /path/to/test_file.py

2
cho path/to/test.py::test_method, tôi gặp lỗi> LỖI: không tìm thấy: /home/namgivu/NN/code/myproject/tests/models/test_bill.py::test_generate_for_today_normal_cycle (không có tên '/ home / namgivu / NN / code / myproject / tests / models /test_bill.py::test_generate_for_today_normal_cycle 'trong bất kỳ [<Mô-đun' tests / models / test_bill.py '>])
Nam G VU

1
Điều gì về các bài kiểm tra được tham số, với ID? -k my_test[a test id here]không hoạt động và điều tốt nhất mà tôi đã quản lý cho đến nay -k "my_test and a and test and id and here"hầu như không phải là một định dạng thân thiện.
Paul D Smith,

1
Các ví dụ được đưa ra trong ví dụ này (cụ thể là một đường dẫn trộn và cú pháp lựa chọn nút) nên được thêm vào tài liệu pytest, vì nó thực sự không rõ ràng như IMO.
cjauvin

11

Điều này đã làm việc cho tôi:

python -m pytest -k some_test_file.py

Điều này cũng hoạt động cho các chức năng kiểm tra riêng lẻ:

python -m pytest -k test_about_something

điều này pytest directory_to_tests/some_test_file.pykhông làm việc cho tôi. Tôi đang sử dụng windows python 3.8.2 và pytest 6.0.1
minghua
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.