2013-07-10 30 views
12

Tôi đang sử dụng dịch hại nhất. Tôi có hai tệp trong một thư mục. Trong một trong các tệp có một trường hợp thử nghiệm chạy dài tạo ra một số đầu ra. Trong tập tin khác có một trường hợp thử nghiệm mà đọc đầu ra đó. Làm thế nào tôi có thể đảm bảo thứ tự thực hiện thích hợp của hai trường hợp thử nghiệm? Có cách nào khác thay vì đặt các trường hợp thử nghiệm trong cùng một tệp theo đúng thứ tự không?Trật tự thực hiện trường hợp kiểm tra trong pytest

+3

nói chung không phải là ý tưởng tuyệt vời khi có trường hợp kiểm tra phụ thuộc vào nhau. Nếu bạn cần sử dụng cùng một dữ liệu trong 2 trường hợp kiểm tra thì tại sao không thêm nó vào phần 'setup'? – Brad

+0

Tôi biết. Tôi không thích nó, nhưng ngay bây giờ tôi cần nó. – Kocka

+1

Tôi không muốn thêm nó vào phần thiết lập, vì mất khoảng 15-20 phút. – Kocka

Trả lời

7

Nói chung, bạn có thể định cấu hình hành vi của bất kỳ phần nào của pytest cơ bản bằng cách sử dụng well-specified hooks.

Trong trường hợp của bạn, bạn muốn móc "pytest_collection_modifyitems", cho phép bạn sắp xếp lại các thử nghiệm được thu thập tại chỗ.

Điều đó nói rằng, dường như việc đặt hàng các thử nghiệm của bạn sẽ dễ dàng hơn - đây là Python! Vì vậy, tôi đã viết một plugin để đặt hàng kiểm tra. Hãy xem docs hoặc cài đặt từ pypi. Hiện tại, tôi khuyên bạn nên sử dụng @ pytest.mark.first và @ pytest.mark.second hoặc một trong các dấu @ pytest.mark.order #, nhưng tôi có một số ý tưởng về các API hữu ích hơn. Gợi ý hoan nghênh :)

+0

Hey. Cảm ơn bạn đã tạo plugin này. Bạn có thể sửa đổi nó sao cho nó chỉ trích xuất các chữ số cuối theo thứ tự. Ví dụ: Nếu tôi nói @ pytest.mark.custom1, thì 1 phải là thứ tự. Điều này sẽ giúp rất nhiều! –

+0

Tôi có thể thử. Tôi nghĩ rằng v0.2 có hành vi này với điểm đánh dấu "thứ tự", thay vì các điểm đánh dấu tùy ý. Bạn có thể viết nó lên như một yêu cầu tính năng trên trang github của pytest-ordering? https://github.com/ftobia/pytest-ordering –

+0

Liên kết móc phải đến: http://pytest.org/latest/writing_plugins.html#well-specified-hooks –

1

lẽ bạn có thể xem xét sử dụng plugin dependency pytest, nơi bạn có thể thiết lập sự phụ thuộc kiểm tra một cách dễ dàng:

@pytest.mark.dependency() 
def test_long(): 
    pass 

@pytest.mark.dependency(depends=['test_long']) 
def test_short(): 
    pass 

Bằng cách này test_short sẽ chỉ thực hiện nếu test_long là thành công và lực trình tự thực hiện cũng.

+0

Ở trên không có tác dụng đối với tôi để sắp xếp thứ tự. Ví dụ: nếu bạn lật thứ tự. Tức là từ lâu phụ thuộc vào ngắn. Trong trường hợp đó, lâu bị bỏ qua. – peaxol

3

Ngoài ra còn có một plugin pytest-ordering dường như đáp ứng các yêu cầu của bạn.

+0

Câu trả lời của Frank T. đã đề cập đến plugin này và đã được đăng 3 năm trước câu trả lời này. – Ave

+0

uh, nhưng anh ta không đề cập đến cái tên. đó là lý do tại sao tôi hoàn toàn bỏ qua điểm đó. –

Các vấn đề liên quan