Font size
WorksheetsPython Quiz Testing
Total questions: 20
Worksheet time: 12mins
pytest tự động chạy những những hàm nào sau đây trong thư mục hiện hành?
def test_sqrt():
def testsquare():
def tesequality():
def equality_test():
Từ quan điểm của người viết test, câu lệnh nào sau đây cho kết quả độ bao phủ của các testcase chính xác nhất?
coverage run test_main.py
pytest -v --cov=test_main
coverage report -m test_main.py
pytest
Câu lệnh sau chạy những test nào?
pytest -k great -v
test_greater()
greater()
test_greater_equal()
lessthan_test()
Pytest có những ưu điểm nào sau đây so với unittest?
Pytest có thể chạy nhiều test song song, giúp giảm thời gian thực thi của bộ test.
Pytest cho phép bỏ qua một tập hợp con các test trong quá trình thực thi.
Pytest là mã nguồn mở và miễn phí.
Pytest có cách riêng để phát hiện test file và function, kể cả nếu không được nêu ra cụ thể.
Đối số -v trong câu lệnh dưới đây giúp
pytest -v
Hiển thị version của pytest
Hiển thị nhiều thông tin chi tiết hơn khi thực thi
Hiển thị nội dung hướng dẫn sử dụng pytest
Điều nào dưới đây đúng liên quan đến fixtures?
Fixture được chạy trước mỗi test mà nó được sử dụng
Fixture là các file
Fixture được dùng để lấy dữ liệu cho các test
Bạn có thể làm gì với Fixture
Đặt fixture ở một file riêng để cho phép nhiều file test tái sử dụng được
Kết hợp với việc tham số hóa các test để viết code ngắn hơn
Thực thi code fixture như một hàm test bình thường
Giúp chuẩn bị khi có nhiều khác biệt nhỏ trong dữ liệu
Bạn dùng flag nào sau đây để hiển thị thời gian thực thi test?
--logtime=4
--logtime
--duration
--duration=3
Một trong những cách để test đối số đầu vào từ command line trong pytest là
Dùng pytest.main(*args, **kwargs)
Dùng monkeypatch.setattr()
Dùng @pytest.mark.parametrize()
Không phải bất kỳ cách nào nêu trên
Cách test nhiều bộ tham số đầu vào của một hàm nhanh nhất là:
Liệt kê các bộ tham số trong file pytest.ini rồi đọc vào khi test
Dùng 1 @pytest.fixture cho mỗi bộ tham số đầu vào.
Dùng @pytest.mark.<argument_name>
Dùng @pytest.mark.parametrize
Bạn có thể tạo ra coverage report dạng html qua những cách nào sau đây?
coverage --report=html test_main.py
pytest coverage test_main.py html
coverage run test_main.py
coverage html
pytest -v --cov=test_main --cov-report=html
Cách nào sau đây giúp bỏ qua 1 test case
@pytest.mark.skip(reason="no way of currently testing this")
def test_the_unknown():
@pytest.skip()
def test_the_unknown():
@pytest.mark.skipthis
>>> pytest -k skipthis
def test_function():
pytest.skip("unsupported configuration")
Fixture trong file conftest.py .....
không thể được dùng kết hợp với các fixture khác
có sẵn và có thể được dùng 1 lần duy nhất trong các file test
có sẵn và có thể được dùng trong tất cả các hàm test
Trong Kết quả hiển thị của một lần chạy pytest:
Dấu chấm (dot) nghĩa là (1)
E nghĩa là (2)
và F nghĩa là (3)
(1) Thành công, (2) Thất bại, (3) Bỏ qua
(1) Thành công, (2) Lỗi, (3) Thất bại
(1) Bỏ qua (2) Thành công, (3) Thất bại
(1) Bỏ qua, (2) Lỗi, (3) Thất bại
Trong unittest bạn có thể dùng hàm assert theo cách nào dưới đây?
(1) assert x == y,"test failed"
(2) assertEqual(x, y)
(1)
(2)
Cả 2 cách trên
Cách đánh dấu phía trước hàm với @unittest.skip() hoặc @pytest.mark.name là thể hiện của design pattern nào trong Python?
strategy pattern
template pattern
decorator pattern
adapter pattern
Để viết unittest, ta phải viết các hàm trong class con của class nào sau đây?
Unittest class
TestCase class
Test class
UnittestCase class
Đoạn code sau làm gì?
@patch('project.services.requests.get')
def test_getting_todos(mock_get):
mock_get.return_value.json.return_value = todo
Cấu hình mock từ patcher để thiết lập giá trị trả về
Cấu hình mock dùng context manager để thiết lập giá trị trả về
Cấu hình mock trả một GET response với status là todo.
Cấu hình mock trả một GET response với định dạng json.
Những cách nào sau đây có thể được dùng để thay đổi hàm có sẵn với một mock?
Dùng decorator @patch
Dùng patch.start() và stop()
Dùng context manager with
Dùng hàm getattr()
Lợi ích của việc dùng mock object trong unittest là gì?
Giúp dev tập trung vào logic hoặc biểu hiện cần test
Giúp bỏ qua các phụ thuộc không nằm trong kiểm soát
Giúp giảm thời gian setup và thể hiện rõ ý đồ cần test
Tất cả những điểm trên
