wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Python Quiz Testing

Total questions: 20

Worksheet time: 12mins

Name
Class
Date
1.

pytest tự động chạy những những hàm nào sau đây trong thư mục hiện hành?

a)

def test_sqrt():

b)

def testsquare():

c)

def tesequality():

d)

def equality_test():

2.

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?

a)

coverage run test_main.py

b)

pytest -v --cov=test_main

c)

coverage report -m test_main.py

d)

pytest

3.

Câu lệnh sau chạy những test nào?

pytest -k great -v

a)

test_greater()

b)

greater()

c)

test_greater_equal()

d)

lessthan_test()

4.

Pytest có những ưu điểm nào sau đây so với unittest?

a)

Pytest có thể chạy nhiều test song song, giúp giảm thời gian thực thi của bộ test.

b)

Pytest cho phép bỏ qua một tập hợp con các test trong quá trình thực thi.

c)

Pytest là mã nguồn mở và miễn phí.

d)

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ể.

5.

Đối số -v trong câu lệnh dưới đây giúp

pytest -v

a)

Hiển thị version của pytest

b)

Hiển thị nhiều thông tin chi tiết hơn khi thực thi

c)

Hiển thị nội dung hướng dẫn sử dụng pytest

6.

Điều nào dưới đây đúng liên quan đến fixtures?

a)

Fixture được chạy trước mỗi test mà nó được sử dụng

b)

Fixture là các file

c)

Fixture được dùng để lấy dữ liệu cho các test

7.

Bạn có thể làm gì với Fixture

a)

Đặt fixture ở một file riêng để cho phép nhiều file test tái sử dụng được

b)

Kết hợp với việc tham số hóa các test để viết code ngắn hơn

c)

Thực thi code fixture như một hàm test bình thường

d)

Giúp chuẩn bị khi có nhiều khác biệt nhỏ trong dữ liệu

8.

Bạn dùng flag nào sau đây để hiển thị thời gian thực thi test?

a)

--logtime=4

b)

--logtime

c)

--duration

d)

--duration=3

9.

Một trong những cách để test đối số đầu vào từ command line trong pytest là

a)

Dùng pytest.main(*args, **kwargs)

b)

Dùng monkeypatch.setattr()

c)

Dùng @pytest.mark.parametrize()

d)

Không phải bất kỳ cách nào nêu trên

10.

Cách test nhiều bộ tham số đầu vào của một hàm nhanh nhất là:

a)

Liệt kê các bộ tham số trong file pytest.ini rồi đọc vào khi test

b)

Dùng 1 @pytest.fixture cho mỗi bộ tham số đầu vào.

c)

Dùng @pytest.mark.<argument_name>

d)

Dùng @pytest.mark.parametrize

11.

Bạn có thể tạo ra coverage report dạng html qua những cách nào sau đây?

a)

coverage --report=html test_main.py

b)

pytest coverage test_main.py html

c)

coverage run test_main.py

coverage html

d)

pytest -v --cov=test_main --cov-report=html

12.

Cách nào sau đây giúp bỏ qua 1 test case

a)

@pytest.mark.skip(reason="no way of currently testing this")

def test_the_unknown():

b)

@pytest.skip()

def test_the_unknown():

c)

@pytest.mark.skipthis


>>> pytest -k skipthis

d)

def test_function():

pytest.skip("unsupported configuration")

13.

Fixture trong file conftest.py .....

a)

không thể được dùng kết hợp với các fixture khác

b)

có sẵn và có thể được dùng 1 lần duy nhất trong các file test

c)

có sẵn và có thể được dùng trong tất cả các hàm test

14.

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)

a)

(1) Thành công, (2) Thất bại, (3) Bỏ qua

b)

(1) Thành công, (2) Lỗi, (3) Thất bại

c)

(1) Bỏ qua (2) Thành công, (3) Thất bại

d)

(1) Bỏ qua, (2) Lỗi, (3) Thất bại

15.

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)

a)

(1)

b)

(2)

c)

Cả 2 cách trên

16.

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?

a)

strategy pattern

b)

template pattern

c)

decorator pattern

d)

adapter pattern

17.

Để viết unittest, ta phải viết các hàm trong class con của class nào sau đây?

a)

Unittest class

b)

TestCase class

c)

Test class

d)

UnittestCase class

18.

Đ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

a)

Cấu hình mock từ patcher để thiết lập giá trị trả về

b)

Cấu hình mock dùng context manager để thiết lập giá trị trả về

c)

Cấu hình mock trả một GET response với status là todo.

d)

Cấu hình mock trả một GET response với định dạng json.

19.

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?

a)

Dùng decorator @patch

b)

Dùng patch.start() và stop()

c)

Dùng context manager with

d)

Dùng hàm getattr()

20.

Lợi ích của việc dùng mock object trong unittest là gì?

a)

Giúp dev tập trung vào logic hoặc biểu hiện cần test

b)

Giúp bỏ qua các phụ thuộc không nằm trong kiểm soát

c)

Giúp giảm thời gian setup và thể hiện rõ ý đồ cần test

d)

Tất cả những điểm trên