Có cách nào để tăng tốc độ thực thi lặp lại py.test
không? Nó dường như dành nhiều thời gian để thu thập các bài kiểm tra, ngay cả khi tôi chỉ định tệp nào sẽ thực thi trên dòng lệnh. Tôi biết nó không phải là một vấn đề tốc độ đĩa hoặc kể từ khi chạy pyflakes trên tất cả các tập tin .py là rất nhanh.Làm thế nào để tăng tốc độ py.test
Trả lời
Sử dụng tùy chọn norecursedirs
trong pytest.ini hoặc tox.ini có thể tiết kiệm rất nhiều thời gian thu thập, tùy thuộc vào những tệp khác bạn có trong thư mục làm việc của mình. Thời gian thu thập của tôi là khoảng một nửa cho một bộ 300 bài kiểm tra khi tôi có mà tại chỗ (0,34 vs 0,64).
Nếu bạn đã sử dụng tox như tôi, bạn chỉ cần thêm dòng sau trong tox.ini của bạn:
[pytest]
norecursedirs = docs *.egg-info .git appdir .tox
Bạn cũng có thể thêm nó vào một tập tin pytest.ini miễn phí-đứng.
Tài liệu pytest có more details on py.test configuration files.
Ngoài ra (hoặc thay vào đó), bạn nên định cấu hình 'testpaths', nghĩa là' testpaths = src/tests'. Sau đó, bạn không cần phải bỏ qua '.git',' .tox', vv .. – blueyed
Tôi đã gặp vấn đề tương tự khi tôi gọi số py.test
tại gốc của dự án và các thử nghiệm của tôi là ba thư mục con. Bộ sưu tập đã lấy 6-7 giây trước 0,4 giây thực hiện kiểm tra thực tế.
Giải pháp của tôi ban đầu là để gọi py.test
với đường dẫn tương đối so với các bài kiểm tra:
py.test src/www/tests/
Nếu làm điều đó tăng tốc bộ sưu tập của bạn cũng vậy, bạn có thể thêm đường dẫn tương đối so với các xét nghiệm để kết thúc addopts
thiết lập trong bạn pytest.ini
- ví dụ:
[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/
này giảm bộ sưu tập + thời gian thực hiện xuống khoảng một giây và tôi có thể vẫn chỉ gọi py.test
như tôi trước kia.
Cách tốt hơn là định cấu hình điều này bằng 'testpaths', tức là' testpaths = src/www/tests'. – blueyed
Với xdist bạn có thể song song chạy py.test. Nó cho phép thậm chí gửi thử nghiệm đến các máy từ xa. Tùy thuộc vào thiết lập của bạn, nó có thể tăng tốc khá một chút :)
Trong trường hợp đặc biệt, nơi bạn đang chạy dưới python của Cygwin, xử lý tệp kiểu unix của nó chậm. Xem pytest.py test very slow startup in cygwin để biết cách tăng tốc mọi thứ trong tình huống đặc biệt đó.
Nếu bạn có một số phần mềm chống vi-rút đang chạy, hãy thử tắt nó đi. Tôi đã có cùng một vấn đề này. Việc thu thập thử nghiệm chạy cực kỳ chậm. Nó hóa ra là phần mềm chống vi-rút của tôi (Avast) đã gây ra sự cố. Khi tôi tắt phần mềm chống vi-rút, bộ sưu tập thử nghiệm chạy nhanh gấp năm lần. Tôi đã thử nghiệm nó nhiều lần, bật và tắt chống vi-rút, vì vậy tôi không nghi ngờ gì là nguyên nhân trong trường hợp của tôi.
- 1. Làm thế nào để tăng tốc độ vòng python
- 2. Làm thế nào để tăng tốc độ phát triển WPF
- 3. Làm thế nào để tăng tốc độ Cygwin?
- 4. Làm thế nào để tăng tốc độ trên SOA?
- 5. Làm thế nào để tăng tốc độ lein Uberjar Buid
- 6. Tăng tốc độ sqlFetch()
- 7. Tăng tốc độ IIS
- 8. Làm cách nào để tăng tốc độ cuộn của UIWebView?
- 9. Tăng tốc độ runhaskell
- 10. Làm thế nào để tăng tốc các khối hành quân?
- 11. Làm thế nào để pgBouncer giúp tăng tốc Django
- 12. Làm thế nào để tăng tốc các chương trình WPF?
- 13. Làm thế nào để tăng tốc mã Python này?
- 14. Làm thế nào để tăng tốc độ BitBlt để chụp màn hình với aero?
- 15. Làm thế nào tôi có thể tăng tốc độ chế độ DocView Emacs?
- 16. Làm thế nào để tăng tốc jquery mobile/phonegap?
- 17. Làm thế nào để sử dụng GPU tăng tốc mới?
- 18. Làm thế nào để tăng tốc ký hiệu jar?
- 19. Làm thế nào để tăng tốc android ndk xây dựng
- 20. Webrick rất chậm phản hồi. Làm thế nào để tăng tốc độ?
- 21. Làm thế nào để tăng tốc độ chèn LINQ với SQL CE?
- 22. Làm thế nào để tăng tốc độ gửi thư qua Amazon SES?
- 23. Làm thế nào để tăng tốc độ phát triển Alfresco Share
- 24. Làm thế nào để tăng tốc độ một phần (lựa chọn) của một ghi video Camtasia?
- 25. làm thế nào để tăng tốc độ lên mã R này
- 26. Làm thế nào để tăng tốc độ biểu mẫu. Hiển thị
- 27. Làm thế nào để tăng tốc độ tham gia đơn giản
- 28. Làm thế nào để tăng tốc độ tải lên Django FileField?
- 29. Làm thế nào để tăng tốc độ một truy vấn UPDATE chậm
- 30. Làm thế nào để tăng tốc độ thêm các mục vào một ListView?
Bạn có chắc chắn rằng giai đoạn "thu thập" chậm không? Hãy thử chạy py.test bằng '--collectonly'. – alecxe
Vâng, đó là bộ sưu tập chậm. Tôi có thể thấy số lượng thu thập bắt đầu bằng 0, chuyển đến 2, sau đó 7. Tôi đã xác minh lại số này bằng '--collectonly'. Việc thu thập bài đăng thực hiện gần như ngay lập tức. –
Tôi có một dự án với hơn 400 bài kiểm tra và giai đoạn thu thập rất nhanh. Ngoài ra tôi có conftest.py bổ sung rất nhiều phép thuật, rất nhiều 'parametrize', fixtures, và 'pytest_generate_tests' mà làm cho việc thu thập chậm hơn, mặc dù việc thu thập này nhanh trong trường hợp của tôi. Kiểm tra xem bạn không có mã riêng có tương tác với pha thu thập pytest và làm cho nó chậm hơn. Nếu không, bạn có thể chạy profiler như profiler dòng để xem mã nào chậm. – spinus