Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Câu hỏi của bạn không cụ thể nhưng với những gì tôi có thể hiểu, bạn đang cố gắng kiểm tra xem độ dài có giống nhau không

a = [1,5,3,6,3,2,4]
b = [5,3,2,1,3,5,3]

if (len(a) == len(b)):
    print True
else:
    print false

hoặc kiểm tra xem các giá trị danh sách có giống nhau không

import collections

compare = lambda x, y: collections.Counter(x) == collections.Counter(y)
compare([1,2,3], [1,2,3,3])
print compare #answer would be false
compare([1,2,3], [1,2,3])
print compare #answer would be true

Nhưng đối với từ điển, bạn cũng có thể sử dụng

x = dict(a=1, b=2)
y = dict(a=2, b=2)

if(x == y):
    print True
else:
    print False



examples/pytest/test_dictionaries.py

def test_different_value():
    a = {
        "name" : "Whale",
        "location": "Ocean",
        "size": "huge",
    }
    b = {
        "name" : "Whale",
        "location": "Water",
        "size": "huge",
    }
    assert a == b

============================= test session starts ==============================
platform linux -- Python 3.8.6, pytest-6.1.2, py-1.9.0, pluggy-0.13.1
rootdir: /home/gabor/work/slides/python/examples/pytest
plugins: flake8-1.0.6, dash-1.17.0
collected 1 item

test_dictionaries.py F                                                   [100%]

=================================== FAILURES ===================================
_____________________________ test_different_value _____________________________

    def test_different_value():
        a = {
            "name" : "Whale",
            "location": "Ocean",
            "size": "huge",
        }
        b = {
            "name" : "Whale",
            "location": "Water",
            "size": "huge",
        }
>       assert a == b
E       AssertionError: assert {'location': ...size': 'huge'} == {'location': ...size': 'huge'}
E         Omitting 2 identical items, use -vv to show
E         Differing items:
E         {'location': 'Ocean'} != {'location': 'Water'}
E         Use -v to get the full diff

test_dictionaries.py:12: AssertionError
=========================== short test summary info ============================
FAILED test_dictionaries.py::test_different_value - AssertionError: assert {'...
============================== 1 failed in 0.03s ===============================


  • Chỉ mục (i)
  • Mục lục (t)
  • Từ khóa được lập chỉ mục (k)
  • Chương TOC (D)
  • Ẩn/Show (H)

Python đưa ra các chức năng tên tương tự khá nhiều. Phương pháp AssertDiceQual tương tự khi làm việc với phương pháp AsserTequal đã được sử dụng để so sánh sự bình đẳng của hai giá trị. Sự khác biệt duy nhất là phương pháp AssertDictequal được sử dụng để so sánh bình đẳng giữa hai từ điển của Python. Mặc dù phương pháp AsserTequal cũng có thể được áp dụng cho từ điển, đôi khi nó thất bại. Để tránh điều đó, chúng tôi sử dụng phương pháp AssertDictequal. Do đó, chúng ta sẽ thấy phương pháp AssertDictequal ngày hôm nay trong hướng dẫn này. Hãy bắt đầu.

Ví dụ 01:

Hãy cùng lấy ví dụ đầu tiên để so sánh hai từ điển trong mã Spyder3 mà không sử dụng hàm AssertDictequal để hiểu khái niệm bình đẳng một cách đơn giản. Chúng tôi đã bắt đầu mã của chúng tôi với việc khởi tạo hai cấu trúc dữ liệu từ điển. Các từ điển chứa 3 giá trị cặp khóa, tức là, tương tự về các giá trị nhưng khác nhau về vị trí. Câu lệnh in sử dụng toán tử của === để hiển thị kết quả so sánh của hai từ điển. Vì cả hai từ điển đều giống nhau, kết quả là họ phải trả lại True True.

Dic1 = {'One': 46, 'ba': [2,14], 'hai': 14}= {'One': 46, 'Three': [2,14], 'Two': 14}

Dic1 = {'hai': 14, 'một': 46, 'ba': [2,14]}= {'Two': 14, 'One': 46, 'Three': [2,14]}

in (DIC1 == DIC2)(Dic1 == Dic2)

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Sau khi chạy mã đơn giản này, chúng tôi đã có được sự thật là đầu ra, tức là, từ điển là bằng nhau.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Ví dụ 02:

Chúng ta hãy xem xét việc sử dụng hàm AsserTequal trên từ điển trước. Để sử dụng chức năng này, trước tiên chúng tôi đã nhập mô -đun Python của Python. Lớp TestStringMethods tích hợp được sử dụng trong khi triển khai mô-đun TestCase thông qua thư viện Unittest. Hàm thử nghiệm do người dùng xác định được xác định. Nó chứa sự khởi tạo của hai từ điển, DIC DIC1 và DIC DIC2, với cùng các giá trị cặp chính. Hàm Assertequal được gọi ở đây, lấy từ điển DIC1 và DIC2 làm đối số để kiểm tra sự bình đẳng của từ điển. Nó sẽ trả về đúng nếu từ điển bằng nhau; Nếu không, ném một trường hợp kiểm tra không có ngoại lệ.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 2} self.assertequal (DIC1, DIC2) nếu __name__ == '__ Main __': unittest.main () unittest
class TestStringMethods(unittest.TestCase):
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 2}
self.assertEqual(Dic1, Dic2)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Sau khi chạy đoạn mã Python này, chúng tôi đã nhận được thông báo thành công, tức là, OK OK. Điều đó có nghĩa là cả hai từ điển đều bằng nhau và giống nhau về giá trị, và trường hợp thử nghiệm được thông qua.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Ví dụ 03:

Dưới đây là một ví dụ khác về việc sử dụng hàm AssertDiceQual của Python trong mã của chúng tôi. Bạn sẽ thấy rằng nó sẽ rất giống với phương pháp AsserTequal. Chúng tôi đã tuyên bố cùng một từ điển DIC1 và DIC2 trong mã như trong hình minh họa trên trong hàm thử nghiệm. Ngoài ra, chúng tôi đã khởi tạo một biến chuỗi khác, M M, được sử dụng trong mã. Thay đổi duy nhất là hàm AssertDictequal được sử dụng ở đây có 3 đối số thay vì 2. Vì vậy, phương thức AssertDictequal sử dụng 3 biến, tức là, v1, v2 và m. Các biến V1 và V2 sẽ được so sánh, trong khi biến Mùi sẽ cho thấy sự thành công và thất bại của so sánh này.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; M = "Từ điển không bằng ... unittest
class TestStringMethods(unittest.TestCase):
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 2}
        m = "Dictionaries are not equal ..."
self.assertDictEqual(Dic1, Dic2, m)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Vì các từ điển được khởi tạo trong mã là giống nhau và bằng nhau; Do đó, đầu ra của mã này cho thấy thông báo thành công cho trường hợp kiểm tra, tức là, OK OK.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Hãy để thay đổi mã một chút. Lần này, chúng tôi đã thay đổi các giá trị từ điển. Trong từ điển DIC2, chúng tôi đã cập nhật giá trị của khóa hai hai, tức là đã thay thế nó bằng 45. Ngoài ra, chúng tôi đã cập nhật biến có thể thay thế vì các từ điển hiện không bằng nhau.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 45} & nbsp; & nbsp; & nbsp; & nbsp; M = "Từ điển không bằng ... unittest
class TestStringMethods(unittest.TestCase):
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 45}
        m = "Dictionaries are not equal ..."
self.assertDictEqual(Dic1, Dic2, m)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Sau khi chạy mã kiểm tra này, chúng tôi đã có đầu ra không thành công. Đây được gọi là đầu ra âm cho trường hợp thử nghiệm và do đó, thử nghiệm đơn vị của chúng tôi không thành công, tức là, từ điển không bằng nhau.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Ví dụ 04:

Chúng ta hãy xem xét một ví dụ cuối cùng của chúng ta nhưng không phải là ví dụ ít nhất về việc sử dụng hàm AssertDictequal trong mã trường hợp kiểm tra Python. Các tệp tiêu đề tương tự, tức là, không nhất định, đã được sử dụng. Cùng một lớp và hàm main () được sử dụng trong mã. Mã Python này sử dụng hai chức năng do người dùng xác định để kiểm tra hai trường hợp thử nghiệm, tức là, Test1 và Test2. Đầu ra sẽ chỉ dương khi cả hai trường hợp thử nghiệm là đúng. Bạn có thể thấy rằng cả hai hàm đều chứa cùng một từ điển tên, tức là, DIC1 và DIC2. Từ điển chức năng của Test Test1 là như nhau, trong khi từ điển hàm Test2 không giống nhau, tức là, thay đổi tại khóa hai hai trong DIC2. Biến M M M trong cả hai hàm thử nghiệm chứa các giá trị khác nhau.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST1 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; m = "Từ điển bằng nhau ..." self.assertdictequal (DIC1, DIC2, M) & NBSP; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 45} & nbsp; & nbsp; & nbsp; & nbsp; M = "Từ điển không bằng ... unittest
class TestStringMethods(unittest.TestCase):
    def test1(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 2}
        m = "Dictionaries are equal ..."
self.assertDictEqual(Dic1, Dic2, m)
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 45}
        m = "Dictionaries are not equal ..."
self.assertDictEqual(Dic1, Dic2, m)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Sau khi thực hiện mã này, chúng tôi đã có một kết quả tiêu cực.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Hãy để cập nhật mã bằng cách làm cho cả từ điển chức năng kiểm tra khác nhau một chút so với nhau, tức là DIC1 và DIC2 là khác nhau.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST1 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 456} & nbsp; & nbsp; & nbsp; & nbsp; m = "Từ điển bằng nhau ..." self.assertdictequal (DIC1, DIC2, M) & NBSP; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 45} & nbsp; & nbsp; & nbsp; & nbsp; M = "Từ điển không bằng ... unittest
class TestStringMethods(unittest.TestCase):
    def test1(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 456}
        m = "Dictionaries are equal ..."
self.assertDictEqual(Dic1, Dic2, m)
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 45}
        m = "Dictionaries are not equal ..."
self.assertDictEqual(Dic1, Dic2, m)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Bạn sẽ thấy rằng đầu ra cho thấy hai lỗi.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Hãy cùng làm cho các từ điển tương tự và bằng nhau cho cả hai chức năng kiểm tra như dưới đây.

TestStringMethods của Nhập trí (unittest.testcase): & nbsp; & nbsp; DEF TEST1 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; m = "Từ điển bằng nhau ..." self.assertdictequal (DIC1, DIC2, M) & NBSP; & nbsp; DEF TEST2 (tự): & nbsp; & nbsp; & nbsp; & nbsp; Dic1 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; Dic2 = {"One": 1, "Hai": 2} & nbsp; & nbsp; & nbsp; & nbsp; M = "Từ điển không bằng ... unittest
class TestStringMethods(unittest.TestCase):
    def test1(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 2}
        m = "Dictionaries are equal ..."
self.assertDictEqual(Dic1, Dic2, m)
    def test2(self):
        Dic1 = {"One": 1, "Two": 2}
        Dic2 = {"One": 1, "Two": 2}
        m = "Dictionaries are not equal ..."
self.assertDictEqual(Dic1, Dic2, m)
if __name__ == '__main__':
unittest.main()

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Lần này, bạn sẽ nhận được thông điệp thành công của các trường hợp thử nghiệm, tức là, kết quả tích cực.

Hướng dẫn assert dict equal python pytest - khẳng định dict bằng python pytest

Conclusion:

Chúng tôi đã thực hiện phương pháp AssertDictequal trong Python để so sánh từ điển. Chúng tôi cũng đã thấy một ví dụ đơn giản về một hàm tương tự assertequal () để làm cho nó rõ ràng hơn. Do đó, chúng tôi đã thực hiện nó khá đơn giản và dễ dàng để làm cho bạn hiểu khái niệm về phương pháp AssertDictequal.

Thông tin về các Tác giả

Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác

AssertDictequal là gì?

Phương pháp AssertDiceQual tương tự khi làm việc với phương pháp AsserTequal đã được sử dụng để so sánh sự bình đẳng của hai giá trị. Sự khác biệt duy nhất là phương pháp AssertDictequal được sử dụng để so sánh bình đẳng giữa hai từ điển của Python.

Làm thế nào để pytest khẳng định hoạt động?

Các xác nhận trong các xác nhận pytest nhất là các kiểm tra trả về trạng thái đúng hoặc sai.Trong Python pytest, nếu một khẳng định thất bại trong một phương thức kiểm tra, thì phương pháp đó thực thi bị dừng ở đó.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 pytest sẽ tiếp tục với phương thức kiểm tra tiếp theo.checks that return either True or False status. In Python Pytest, if an assertion fails in a test method, then that method execution is stopped there. The remaining code in that test method is not executed, and Pytest assertions will continue with the next test method.

Pytest có tốt hơn không?

Cái nào tốt hơn - pytest hay không nhất quán?Mặc dù cả hai khung đều tuyệt vời để thực hiện thử nghiệm trong Python, PyTest dễ làm việc hơn.Mã trong pytest là đơn giản, nhỏ gọn và hiệu quả.Đối với Unittest, chúng tôi sẽ phải nhập các mô -đun, tạo một lớp và xác định các chức năng kiểm tra trong lớp đó.pytest is easier to work with. The code in pytest is simple, compact, and efficient. For unittest, we will have to import modules, create a class and define the testing functions within that class.

Tại sao pytest là tốt nhất?

Pytest hiện đang phổ biến vì nó là đồ đạc dễ sử dụng.Pytest chủ yếu được sử dụng để kiểm tra API, chúng tôi cũng có thể sử dụng pytest cho các thử nghiệm đơn giản cũng như phức tạp, nghĩa là bạn có thể viết các trường hợp kiểm tra để kiểm tra API, cơ sở dữ liệu, v.v.it's easy-to-use fixtures. Pytest is mostly used for API testing, also we can use Pytest for simple as well as complex tests, that is, you can write test cases to test APIs, database, etc.