qc

Phần mềm chụp màn hình:
qc
Các chi tiết về phần mềm:
Phiên bản: 0.1
Ngày tải lên: 14 Apr 15
Nhà phát triển: Peter Scott
Giấy phép: Miễn phí
Phổ biến: 23

Rating: 4.0/5 (Total Votes: 2)

qc là một công cụ kiểm tra cho phép bạn viết các thuộc tính mà bạn mong đợi để giữ đúng, và để cho các máy tính tạo ra các trường hợp kiểm tra ngẫu nhiên để kiểm tra xem các tài sản thực tế giữ & nbsp;. Ví dụ, nếu bạn đã viết nén và giải nén các chức năng cho một số chương trình nén dữ liệu, một tài sản rõ ràng để kiểm tra là nén và giải nén một chuỗi cung cấp trở lại chuỗi ban đầu. Đây là cách bạn có thể thể hiện điều đó:
unittest nhập khẩu
qc nhập khẩu
lớp TestCompression (unittest.TestCase):
& Nbsp; @ qc.property
& Nbsp; def test_compress_decompress (tự):
& Nbsp; "" ". Test nén và giải nén dữ liệu trả về" bản gốc ""
& Nbsp; data = qc.str () # Một chuỗi tùy ý. Các giá trị được chọn ngẫu nhiên.
& Nbsp; self.assertEqual (dữ liệu, giải nén (nén (dữ liệu)), repr (dữ liệu))
Đó là một bài kiểm tra bình thường với xây dựng trong khuôn khổ unittest Python (đó là lý do tại sao có quá nhiều boilerplate). Cách khác, bạn có thể làm điều chính xác cùng với một khuôn khổ thử nghiệm khác nhau, như tối thiểu verbose, mũi khá dễ chịu. Các trang trí @ qc.property chạy các chức năng trang trí nhiều lần, và mỗi lần các giá trị trả về bởi các chức năng như qc.string () là khác nhau. Nói cách khác, QuickCheck là tương thích với khá nhiều mỗi đơn vị kiểm tra khuôn khổ hiện có; nó không đặc biệt đòi hỏi.
Các chức năng như qc.str (), qc.int (), và như vậy, tạo ra giá trị tùy ý của một loại nhất định. Trong ví dụ trên, chúng ta khẳng định rằng tài sản đúng với tất cả các chuỗi. Khi bạn chạy các bài kiểm tra, QuickCheck sẽ tạo chuỗi ngẫu nhiên để thử nghiệm.
Bạn sẽ nhận thấy rằng tôi đã nói "ngẫu nhiên", không phải "ngẫu nhiên". Điều này là có chủ ý. Sự phân bố của các giá trị được tinh chỉnh để bao gồm các giá trị thú vị, như chuỗi rỗng, hoặc các chuỗi với các ký tự NUL ở giữa, hoặc các chuỗi có chứa văn bản tiếng Anh. Nói chung, QuickCheck cố gắng đưa ra một kết hợp tốt của các giá trị phức tạp thông minh và tính ngẫu nhiên. Đây là những gì bạn sẽ làm gì, nếu bạn phải viết các trường hợp thử nghiệm thực sự triệt để bằng tay, ngoại trừ việc bạn không cần phải làm điều đó. Trong thực tế, các máy tính có ít định kiến ​​về những gì tạo dữ liệu lành mạnh, vì vậy nó thường sẽ tìm thấy lỗi đó sẽ không bao giờ xảy ra với bạn để viết các trường hợp kiểm tra cho. Nó không biết làm thế nào để tránh các lỗi tiềm thức.
Bạn đang không giới hạn các chức năng giá trị tùy ý xây dựng-in. Bạn có thể sử dụng chúng như là các khối xây dựng để tạo của riêng bạn. Ví dụ như:
class Point (object):
& Nbsp; def __init __ (self, x, y):
& Nbsp; self.x, self.y = float (x), float (y)
điểm def ():
& Nbsp; "" "Nhận được một điểm tùy ý." ""
& Nbsp; x = qc.int (-20, 20)
& Nbsp; y = qc.int (-34, 50)
& Nbsp; trở về điểm (x, y)
Sau đó bạn có thể sử dụng để tạo ra các giá trị điểm tùy ý trong bất động sản. Dưới đây là một thử nghiệm mũi-phong cách:
@ Qc.property
def test_triangle_inequality ():
& Nbsp; pt = điểm ()
& Nbsp; khẳng định abs (pt.x) + abs (pt.y)> = Math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Khi bạn chạy này, một điều kỳ diệu xảy ra: QuickCheck sẽ cố gắng để tạo ra giá trị khó khăn cho cả x và y biến trong lớp Point, với nhau, vì vậy bạn sẽ thấy điểm tương tự (0, 0), (1, 1), ( 0, 1), (385.904, 0), cũng như những người hoàn toàn ngẫu nhiên như (584, -35.809.648). Nói cách khác, thay vì chỉ vẽ giá trị x và y từ một dòng suối của số ngẫu nhiên với một số giá trị phức tạp ở trong đó, QuickCheck sẽ thực sự cố gắng để tạo ra sự kết hợp khéo léo của tọa độ x và y.
Chức năng để nhận dữ liệu tùy ý
- Int (thấp, cao) cho ints, giữa các tùy chọn giới hạn thấp và cao.
- Dài (thấp, cao) cho phép chờ đợi, giữa các tùy chọn giới hạn thấp và cao.
- Float (thấp, cao) cho nổi, giữa các tùy chọn giới hạn thấp và cao. Không infinities hoặc NaN giá trị.
& Nbsp; str (chiều dài = None, maxlen = None) cung cấp cho các chuỗi, các loại str. Mã hóa là UTF-8. Nếu chiều dài được đưa ra, các chuỗi sẽ được chính xác điều đó lâu. Nếu maxlen được đưa ra, chiều dài chuỗi ký tự sẽ được ở maxlen nhất.
- Unicode (chiều dài = None, maxlen = None) cho chuỗi unicode, kiểu unicode. Nếu chiều dài được đưa ra, các chuỗi sẽ được chính xác điều đó lâu. Nếu maxlen được đưa ra, chiều dài chuỗi ký tự sẽ được ở maxlen nhất.
- Tên () cung cấp tên, trong Unicode. Những phạm vi từ tầm thường, như "John Smith", đến kỳ lạ - tên chứa không phá vỡ không gian, hoặc địa chỉ email, hoặc các ký tự Unicode ngoài Basic Multilingual Plane. Đây là, nếu bất cứ điều gì, ít ngoan hơn các tên mà bạn sẽ thấy trong một bộ đủ lớn các dữ liệu Internet.
- NameUtf8 () là giống như tên () mã hóa ('utf8')..
- FromList (bài) trả về item ngẫu nhiên từ danh sách. Điều này chủ yếu là hữu ích cho việc tạo ra các chức năng máy phát dữ liệu tùy tiện của riêng bạn.
- Randstr (chiều dài = None, maxlen = sys.maxint) cho chuỗi các byte ngẫu nhiên. Nếu chiều dài được đưa ra, các chuỗi sẽ được chính xác điều đó lâu. Nếu maxlen được đưa ra, chiều dài chuỗi sẽ có mặt tại hầu hết các maxlen byte.
Các chuỗi sản xuất bởi str và unicode được chọn ngẫu nhiên, nhưng một số nỗ lực đã được đưa vào làm cho chúng đủ ngoan cố như để lộ lỗi trong một toàn bộ rất nhiều mã xử lý chuỗi. Danh sách tên là dựa vào những ký ức khủng khiếp khi nhìn thấy mã xử lý tên tai nạn trên dữ liệu thực tế, hơn và hơn và hơn nữa, vì nó đã trở nên rõ ràng hơn, thế giới là điên, và chúng tôi đang thực sự bị đe dọa. (Cảm giác này đi một khi bạn có đủ bảo hiểm thử nghiệm và điều cuối cùng ngừng rơi. Có hy vọng!)
Tên và chuỗi ví dụ dữ liệu trong qc.arbitrary có thể thú vị như là một nguồn của nhiều deteministic dữ liệu test. Cảm thấy tự do để mượn bất kỳ của nó. Các ruột có phép thuật, nhưng các bộ phận nội bộ huyền diệu, những người thú vị nhất là trong qc.arbitrary và qc

Yêu cầu .

  • Python

Phần mềm tương tự

QSnipps
QSnipps

12 May 15

PMD
PMD

9 Dec 15

disable-docstring
disable-docstring

11 May 15

Tarn
Tarn

14 Apr 15

Ý kiến ​​để qc

Bình luận không
Nhập bình luận
Bật hình ảnh!