Python khẳng định không bằng
Khẳng định (Khẳng định) là một kiểm tra tiêu chuẩn mà bạn có thể bật hoặc tắt khi hoàn tất quá trình kiểm tra chương trình của mình Show
Cách đơn giản nhất để nghĩ về một khẳng định là ví nó với một câu nâng cao nếu (hoặc chính xác hơn là một câu lệnh nâng cao nếu không). Một biểu thức đã được kiểm tra và nếu kết quả trả về là Sai thì một ngoại lệ sẽ được đưa ra Khẳng định được thực hiện bởi câu lệnh assert , từ khóa mới nhất của Python, được giới thiệu từ phiên bản 1. 5. Thành viên lập trình thường đặt các xác nhận khi bắt đầu một hàm để kiểm tra đầu vào hợp lệ và sau đó một lệnh gọi hàm để kiểm tra đầu ra hợp lệ Câu lệnh khẳng địnhKhi gặp câu lệnh xác nhận, Python sẽ đánh giá biểu thức đi kèm, điều này hy vọng là đúng. Nếu biểu thức là sai, Python sẽ đưa ra một lỗi khẳng định sai cú pháp khẳng định Biểu thức [, Đối số] Nếu xác nhận không thành công, Python sử dụng ArgumentExpression làm đối số cho AssertionError. AssertionError ngoại lệ có thể bị bắt và xử lý giống như bất kỳ ngoại lệ nào khác bằng cách sử dụng câu lệnh try-Exception, nhưng nếu không được xử lý, chúng sẽ xử lý kết thúc chương trình và tạo ra một truy nguyên (traceback Ví dụĐây là một chức năng chuyển đổi nhiệt độ từ Kelvin (độ C) sang độ F. Vì 0 độ Kelvin là độ đông nên hàm sẽ dừng nếu thấy nhiệt độ âm PyTest là một khung thử nghiệm cho phép người dùng viết mã kiểm tra bằng ngôn ngữ lập trình Python. Nó giúp bạn viết các trường hợp thử nghiệm đơn giản và có thể mở rộng cho cơ sở dữ liệu, API hoặc giao diện người dùng. PyTest chủ yếu được sử dụng để viết bài kiểm tra cho API. Nó giúp viết các bài kiểm tra từ các bài kiểm tra đơn vị đơn giản đến các bài kiểm tra chức năng phức tạp Tại sao nên sử dụng PyTest?Một số ưu điểm của pytest là
Trong hướng dẫn Python PyTest này, bạn sẽ học Cách cài đặt PyTestSau đây là quy trình về cách cài đặt PyTest Bước 1) Bạn có thể cài đặt pytest bằng cách pip install pytest==2.9.1 Sau khi cài đặt hoàn tất, bạn có thể xác nhận bằng cách py.test -h Điều này sẽ hiển thị trợ giúp PyTest cơ bản đầu tiênBây giờ, chúng ta sẽ học cách sử dụng Pytest với một ví dụ cơ bản về PyTest Tạo một thư mục study_pytest. Chúng tôi sẽ tạo các tệp thử nghiệm của mình trong thư mục này Vui lòng điều hướng đến thư mục đó trong dòng lệnh của bạn Tạo một tệp có tên test_sample1. py bên trong thư mục Thêm mã dưới đây vào nó và lưu lại import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed" Chạy thử nghiệm bằng lệnh py.test Bạn sẽ nhận được đầu ra như test_sample1.py F. ============================================== FAILURES ======================================== ____________________________________________ test_sample1 ______________________________________ def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" > assert x == y,"test failed" E AssertionError: test failed E assert 5 == 6 test_sample1.py:6: AssertionError Ở đây trong test_sample1. py F F nói thất bại Dấu chấm(. ) nói thành công Trong phần lỗi, bạn có thể thấy (các) phương thức lỗi và dòng lỗi. Ở đây x==y có nghĩa là 5==6 sai Tiếp theo trong hướng dẫn PyTest này, chúng ta sẽ tìm hiểu về xác nhận trong PyTest Xác nhận trong PyTestCác xác nhận của Pytest là các kiểm tra trả về trạng thái Đúng hoặc Sai. Trong Python Pytest, nếu một xác nhận không thành công trong một phương thức thử nghiệm, thì việc thực thi phương thức đó sẽ dừng lại ở đó. Đoạn mã còn lại trong phương thức kiểm tra đó không được thực thi và các xác nhận của Pytest sẽ tiếp tục với phương pháp kiểm tra tiếp theo Các ví dụ về xác nhận Pytest assert "hello" == "Hai" is an assertion failure. assert 4==4 is a successful assertion assert True is a successful assertion assert False is an assertion failure. Xem xét assert x == y,"test failed because x=" + str(x) + " y=" + str(y) Đặt mã này vào test_file1_method1() thay vì xác nhận assert x == y,"test failed" Chạy thử nghiệm sẽ báo lỗi là AssertionError. kiểm tra thất bại x=5 y=6 Cách PyTest Xác định Tệp Kiểm tra và Phương pháp Kiểm traTheo mặc định, pytest chỉ xác định tên tệp bắt đầu bằng test_ hoặc kết thúc bằng _test là tệp thử nghiệm. Tuy nhiên, chúng tôi có thể đề cập rõ ràng các tên tệp khác (giải thích sau). Pytest yêu cầu tên phương thức thử nghiệm bắt đầu bằng “test. ” Tất cả các tên phương thức khác sẽ bị bỏ qua ngay cả khi chúng tôi yêu cầu chạy các phương thức đó một cách rõ ràng Xem một số ví dụ về tên tệp pytest hợp lệ và không hợp lệ ________số 8Ghi chú. Có, chúng tôi có thể yêu cầu pytest chọn testlogin một cách rõ ràng. py và logintest. py Xem một số ví dụ về phương pháp kiểm tra pytest hợp lệ và không hợp lệ def test_file1_method1(): - valid def testfile1_method1(): - valid def file1_method1(): - invalid Ghi chú. Ngay cả khi chúng tôi đề cập rõ ràng file1_method1() pytest sẽ không chạy phương thức này Chạy nhiều thử nghiệm từ một tệp cụ thể và nhiều tệpHiện tại trong thư mục study_pytest ta có file test_sample1. py. Giả sử chúng ta có nhiều tệp, giả sử test_sample2. py , test_sample3. py. Để chạy tất cả các bài kiểm tra từ tất cả các tệp trong thư mục và thư mục con, chúng ta chỉ cần chạy lệnh pytest py.test -h0 Điều này sẽ chạy tất cả các tên tệp bắt đầu bằng test_ và tên tệp kết thúc bằng _test trong thư mục đó và các thư mục con trong thư mục đó To run tests only from a specific file, we can use py.test py.test -h1 Chạy một tập hợp con của Toàn bộ thử nghiệm với PyTestĐôi khi chúng tôi không muốn chạy toàn bộ bộ thử nghiệm. Pytest cho phép chúng tôi chạy thử nghiệm cụ thể. Chúng ta có thể làm theo 2 cách
Chúng tôi đã có test_sample1. py. Tạo một tệp test_sample2. py và thêm đoạn mã dưới đây vào nó py.test -h2 Vì vậy, chúng tôi hiện có py.test -h3 Tùy chọn 1) Chạy thử nghiệm bằng cách so khớp chuỗi con Ở đây để chạy tất cả các bài kiểm tra có method1 trong tên của nó, chúng ta phải chạy py.test -h4 Vì vậy, chạy py. test -k method1 -v sẽ cho bạn kết quả như sau py.test -h5 Tại đây, bạn có thể thấy ở cuối 2 bài kiểm tra được bỏ chọn bởi '-kmethod1', đó là test_file1_method2 và test_file2_method2 Hãy thử chạy với các kết hợp khác nhau như. - py.test -h6 Tùy chọn 2) Chạy thử nghiệm bằng điểm đánh dấu Pytest cho phép chúng tôi đặt các thuộc tính khác nhau cho các phương thức kiểm tra bằng cách sử dụng các dấu pytest, @pytest. dấu. Để sử dụng các điểm đánh dấu trong tệp thử nghiệm, chúng tôi cần nhập pytest vào tệp thử nghiệm Ở đây, chúng tôi sẽ áp dụng các tên đánh dấu khác nhau cho các phương thức kiểm tra và chạy các thử nghiệm cụ thể dựa trên tên đánh dấu. Chúng tôi có thể xác định các điểm đánh dấu trên mỗi tên kiểm tra bằng cách sử dụng py.test -h7 Chúng tôi đang xác định các điểm đánh dấu set1 và set2 trên các phương thức thử nghiệm và chúng tôi sẽ chạy thử nghiệm bằng cách sử dụng tên điểm đánh dấu. Cập nhật các tệp thử nghiệm với đoạn mã sau test_sample1. py py.test -h8 test_sample2. py py.test -h9 Chúng tôi có thể chạy bài kiểm tra được đánh dấu bằng cách import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"0 Chạy py. kiểm tra -m set1. Điều này sẽ chạy các phương thức test_file1_method1, test_file2_method1, test_file2_method2 Chạy py. test -m set2 sẽ chạy test_file1_method2 Chạy thử nghiệm song song với PytestThông thường, một bộ kiểm tra sẽ có nhiều tệp kiểm tra và hàng trăm phương pháp kiểm tra sẽ mất một khoảng thời gian đáng kể để thực hiện. Pytest cho phép chúng tôi chạy thử nghiệm song song Để làm được điều đó, trước tiên chúng ta cần cài đặt pytest-xdist bằng cách chạy import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"1 Bạn có thể chạy thử nghiệm ngay bây giờ bằng cách import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"2 -n Đồ đạc PytestFixtures được sử dụng khi chúng tôi muốn chạy một số mã trước mọi phương thức kiểm tra. Vì vậy, thay vì lặp lại cùng một mã trong mọi thử nghiệm, chúng tôi xác định đồ đạc. Thông thường, đồ đạc được sử dụng để khởi tạo kết nối cơ sở dữ liệu, vượt qua cơ sở, v.v. Một phương thức được đánh dấu là vật cố định Pytest bằng cách đánh dấu bằng import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"3 Một phương pháp thử nghiệm có thể sử dụng vật cố định Pytest bằng cách đề cập đến vật cố định làm tham số đầu vào Tạo một tệp mới test_basic_fixture. py với đoạn mã sau import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"4 Nơi đây
Mỗi chức năng kiểm tra có một đối số đầu vào có tên phù hợp với một lịch thi đấu có sẵn. Sau đó, Pytest gọi phương thức cố định tương ứng và các giá trị được trả về sẽ được lưu trữ trong đối số đầu vào, ở đây là danh sách [25,35,45]. Bây giờ các mục danh sách đang được sử dụng trong các phương pháp thử nghiệm để so sánh Bây giờ chạy thử nghiệm và xem kết quả import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"5 import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"6 Bài kiểm tra test_comparewithBB được thông qua kể từ zz=BB=35 và 2 bài kiểm tra còn lại không đạt Phương thức cố định chỉ có phạm vi trong tệp thử nghiệm đó, nó được xác định. Nếu chúng tôi cố gắng truy cập lịch thi đấu trong một số tệp thử nghiệm khác, chúng tôi sẽ gặp lỗi cho biết không tìm thấy lịch thi đấu ‘supply_AA_BB_CC’ cho các phương pháp kiểm tra trong các tệp khác Để sử dụng cùng một lịch thi đấu cho nhiều tệp thử nghiệm, chúng tôi sẽ tạo các phương thức lịch thi đấu trong một tệp có tên là conftest. py Hãy xem điều này bằng ví dụ PyTest bên dưới. Tạo 3 file conftest. py, test_basic_fixture. py, test_basic_fixture2. py với đoạn mã sau thú nhận. py import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"7 test_basic_fixture. py import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"8 test_basic_fixture2. py import pytest def test_file1_method1(): x=5 y=6 assert x+1 == y,"test failed" assert x == y,"test failed" def test_file1_method2(): x=5 y=6 assert x+1 == y,"test failed"9 pytest sẽ tìm kiếm lịch thi đấu trong tệp thử nghiệm trước và nếu không tìm thấy, nó sẽ tìm trong conftest. py Chạy thử nghiệm bằng py. test -k test_comparewith -v để được kết quả như bên dưới py.test0 Kiểm tra tham số hóa PytestMục đích của tham số hóa một bài kiểm tra là để chạy một bài kiểm tra đối với nhiều bộ đối số. Chúng tôi có thể làm điều này bằng cách @pytest. dấu. tham số hóa Chúng ta sẽ thấy điều này với ví dụ PyTest bên dưới. Ở đây chúng ta sẽ truyền 3 đối số cho một phương thức kiểm tra. Phương pháp kiểm tra này sẽ thêm 2 đối số đầu tiên và so sánh nó với đối số thứ 3 Tạo tệp thử nghiệm test_addition. py với đoạn mã dưới đây py.test1 Ở đây, phương thức kiểm tra chấp nhận 3 đối số- input1, input2, output. Nó thêm đầu vào1 và đầu vào2 và so sánh với đầu ra Hãy chạy thử nghiệm bằng py. kiểm tra -k test_add -v và xem kết quả py.test2 Bạn có thể thấy các bài kiểm tra đã chạy 2 lần – một lần kiểm tra 5+5 ==10 và lần kiểm tra khác 3+5 ==12 test_addition. py. test_add[5-5-10] ĐÃ THÔNG QUA test_addition. py. test_add[3-5-12] KHÔNG THÀNH CÔNG Pytest Xfail / Bỏ qua các bài kiểm traSẽ có một số tình huống mà chúng tôi không muốn thực hiện kiểm thử hoặc trường hợp kiểm thử không phù hợp trong một thời điểm cụ thể. Trong những tình huống đó, chúng tôi có tùy chọn Xfail bài kiểm tra hoặc bỏ qua các bài kiểm tra Bài kiểm tra xfailed sẽ được thực hiện, nhưng nó sẽ không được tính là bài kiểm tra thất bại hoặc vượt qua một phần. Sẽ không có dấu vết hiển thị nếu thử nghiệm đó không thành công. Chúng tôi có thể xfail kiểm tra bằng cách sử dụng @pytest. dấu. thất bại Bỏ qua một bài kiểm tra có nghĩa là bài kiểm tra sẽ không được thực hiện. Chúng tôi có thể bỏ qua các bài kiểm tra bằng cách sử dụng @pytest. dấu. nhảy Chỉnh sửa test_addition. py với đoạn mã dưới đây py.test3 Nơi đây
Thực hiện kiểm tra bằng py. kiểm tra test_addition. py -v và xem kết quả py.test4 Kết quả XMLChúng tôi có thể tạo kết quả kiểm tra ở định dạng XML mà chúng tôi có thể cung cấp cho các máy chủ Tích hợp liên tục để xử lý thêm, v.v. Điều này có thể được thực hiện bởi py. thử nghiệm test_sample1. py -v –junitxml=”kết quả. xml” Kết quả. xml sẽ ghi lại kết quả thực hiện kiểm tra. Tìm một kết quả mẫu. xml bên dưới py.test5 From Khung Pytest Kiểm tra APIBây giờ chúng ta sẽ tạo một khung pytest nhỏ để kiểm tra API. API được sử dụng ở đây là API miễn phí từ https. // yêu cầu. Trong/. Trang web này chỉ để cung cấp API có thể kiểm tra. Trang web này không lưu trữ dữ liệu của chúng tôi |