Thử nghiệm vàng

TFF bao gồm một thư viện nhỏ có tên golden giúp bạn dễ dàng viết và duy trì các bài kiểm tra vàng.

Bài kiểm tra vàng là gì? Khi nào tôi nên sử dụng chúng?

Kiểm thử vàng được sử dụng khi bạn muốn nhà phát triển biết rằng mã của họ đã thay đổi kết quả đầu ra của một hàm. Chúng vi phạm nhiều đặc điểm của các bài kiểm thử đơn vị tốt ở chỗ chúng đưa ra lời hứa về kết quả đầu ra chính xác của các hàm, thay vì kiểm tra một tập hợp cụ thể các thuộc tính rõ ràng, được ghi chép. Đôi khi không rõ khi nào một thay đổi đối với đầu ra vàng được "dự kiến" hoặc liệu nó có vi phạm một số đặc tính mà thử nghiệm vàng bắt buộc phải thực thi hay không. Vì vậy, bài kiểm tra đơn vị có hệ số tốt thường thích hợp hơn bài kiểm tra vàng.

Tuy nhiên, các bài kiểm tra vàng có thể cực kỳ hữu ích để xác thực nội dung chính xác của thông báo lỗi, chẩn đoán hoặc mã được tạo. Trong những trường hợp này, các thử nghiệm vàng có thể là một biện pháp kiểm tra độ tin cậy hữu ích để đảm bảo rằng mọi thay đổi đối với kết quả đầu ra được tạo ra đều "có vẻ ổn".

Tôi nên viết bài kiểm tra bằng cách sử dụng golden như thế nào?

golden.check_string(filename, value) là điểm truy cập chính vào thư viện golden . Nó sẽ kiểm tra chuỗi value dựa trên nội dung của tệp có thành phần đường dẫn cuối cùng là filename . Đường dẫn đầy đủ đến filename phải được cung cấp thông qua đối số dòng lệnh --golden <path_to_file> . Tương tự, các tệp này phải được cung cấp cho các thử nghiệm bằng cách sử dụng đối số data cho quy tắc py_test BUILD. Sử dụng chức năng location để tạo đường dẫn tương đối phù hợp chính xác:

py_string_test(
  ...
  args = [
    "--golden",
    "$(location path/to/first_test_output.expected)",
    ...
    "--golden",
    "$(location path/to/last_test_output.expected)",
  ],
  data = [
    "path/to/first_test_output.expected",
    ...
    "path/to/last_test_output.expected",
  ],
  ...
)

Theo quy ước, các tệp vàng phải được đặt trong thư mục anh chị em có cùng tên với mục tiêu thử nghiệm của chúng, có hậu tố _goldens :

path/
  to/
    some_test.py
    some_test_goldens/
      test_case_one.expected
      ...
      test_case_last.expected

Làm cách nào để cập nhật tệp .expected ?

Các tệp .expected có thể được cập nhật bằng cách chạy mục tiêu thử nghiệm bị ảnh hưởng với các đối số --test_arg=--update_goldens --test_strategy=local . Sự khác biệt kết quả phải được kiểm tra để phát hiện những thay đổi không lường trước được.