Tôi có rất nhiều tệp/gói Python cấp cao nhất và thấy khó chịu khi liệt kê tất cả chúng theo cách thủ công bằng gói -cover, vì vậy tôi đã tạo hai bí danh cho chính mình. Bí danh nosetests_cover
sẽ chạy phạm vi phủ sóng với tất cả các tệp/gói Python cấp cao nhất của bạn được liệt kê trong gói -cover. Bí danh nosetests_cover_sort
sẽ thực hiện tương tự và bổ sung sắp xếp kết quả của bạn theo tỷ lệ phần trăm phù hợp.
nosetests_cover_cmd="nosetests --with-coverage --cover-erase --cover-inclusive --cover-package=\$(ls | sed -r 's/[.]py$//' | fgrep -v '.' | paste -s -d ',')"
alias nosetests_cover=$nosetests_cover_cmd
alias nosetests_cover_sort="$nosetests_cover_cmd 2>&1 | fgrep '%' | sort -nr -k 4"
Ghi chú:
- Đây là từ tập tin .bashrc của tôi. Sửa đổi một cách thích hợp nếu bạn không sử dụng bash.
- Chúng phải được chạy từ thư mục cấp cao nhất của bạn. Nếu không, tên gói sẽ không chính xác và vùng phủ sóng sẽ không xử lý chúng một cách im lặng (tức làthay vì nói với bạn - gói -cover của bạn không chính xác, nó sẽ hoạt động như bạn không cung cấp tùy chọn nào cả).
- Tôi hiện đang sử dụng Python 2.7.6 trên Ubuntu 13.10, với phiên bản mũi 1.3.0 và phiên bản vùng phủ sóng 3.7.1. Đây là thiết lập duy nhất mà tôi đã thử nghiệm các lệnh này.
- Khi bạn sử dụng, hãy xóa --cover-erase và --cover-inclusive nếu chúng không phù hợp với nhu cầu của bạn.
- Nếu bạn muốn sắp xếp theo thứ tự bình thường thay vì thứ tự ngược lại, hãy thay thế
-nr
bằng -n
trong lệnh sắp xếp.
- Các lệnh này giả định rằng tất cả các tệp/gói Python cấp cao nhất của bạn được đặt tên không có dấu chấm (trừ dấu chấm trong ".py"). Nếu điều này không đúng với bạn, hãy đọc phần Chi tiết bên dưới để hiểu các phần lệnh, sau đó sửa đổi các lệnh khi thích hợp.
chi tiết:
Tôi không cho rằng đây là những lệnh hiệu quả nhất để đạt được kết quả tôi muốn. Chúng chỉ là những mệnh lệnh mà tôi tình cờ nảy ra. = P
Điều chính cần giải thích sẽ là đối số cho gói -cover. Nó xây dựng danh sách bằng dấu phẩy của tên file Python/gói cấp cao nhất (với "py" lột từ tên tập tin) như sau:
\$
- thoát nhân vật $
trong một chuỗi dụng dấu ngoặc kép.
$()
- Chèn kết quả của lệnh chứa bên trong.
ls
- Liệt kê tất cả các tên trong thư mục hiện tại (phải là thư mục Python cấp cao nhất).
| sed -r 's/[.]py$//'
- Trong danh sách, thay thế "foo_bar.py" bằng "foo_bar".
| fgrep -v '.'
- Trong danh sách, xóa tất cả các tên không có dấu chấm (ví dụ: xóa foo_bar.pyc và notes.txt).
| paste -s -d ','
- Thay đổi danh sách từ phân cách bằng dòng mới thành phân cách bằng dấu phẩy.
Tôi cũng nên giải thích việc sắp xếp.
2>&1
- Tham gia stderr và stdout.
| fgrep '%'
- Xóa tất cả các dòng đầu ra mà không có ký tự %
.
| sort -nr -k 4
- Sắp xếp các dòng còn lại theo thứ tự số ngược lại theo cột thứ 4 (cột là phần trăm tỷ lệ phù hợp). Nếu bạn muốn đặt hàng bình thường thay vì lệnh ngược lại, hãy thay thế -nr
bằng -n
.
Hy vọng điều này sẽ giúp ai đó! =)
Với phiên bản mới nhất của mũi và vùng phủ sóng, các mã trong các tập tin thử nghiệm bị bỏ qua dưới mũi, vì vậy bạn không nên cần phải xác định gói tại tất cả các. – dbn