Tôi đang sử dụng chú thích tham số của pytest để chuyển các tham số vào một lớp. Tôi có thể sử dụng các tham số trong các phương pháp thử nghiệm, tuy nhiên, tôi không thể tìm ra cách sử dụng các tham số trong phương thức setup_class.pytest: Cách chuyển tham số lớp tới setup_class
import pytest
params = ['A','B','C']
@pytest.mark.parametrize('n', params)
class TestFoo:
def setup_class(cls):
print ("setup class:TestFoo")
# Do some setup based on param
def test_something(self, n):
assert n != 'D'
def test_something_else(self, n):
assert n != 'D'
tôi đã cố gắng thêm 'n' như một tham số như các phương pháp kiểm tra, như thế này:
def setup_class(cls, n):
print ("setup class:TestFoo")
# Do some setup based on param
mà kết quả trong một lỗi:
self = <Class 'TestFoo'>
def setup(self):
setup_class = xunitsetup(self.obj, 'setup_class')
if setup_class is not None:
setup_class = getattr(setup_class, 'im_func', setup_class)
setup_class = getattr(setup_class, '__func__', setup_class)
> setup_class(self.obj)
E TypeError: setup_class() takes exactly 2 arguments (1 given)
Có một số cách khác sử dụng tham số trong phương thức setup_class?
này không thực sự giải quyết những gì tôi đang cố gắng làm. Trong mỗi bài kiểm tra, 'n' là một mục từ danh sách params. Trong ví dụ của bạn, bạn đang gán toàn bộ danh sách cho cls.n. Bằng cách thực hiện nó ở cấp lớp, những gì tôi muốn là, đối với mục 'A', hãy chạy thiết lập cụ thể cho mục 'A', sau đó chạy thử nghiệm cho mục 'A'. – user2945303
Ngoài ra, đây là gì? Ví dụ, nó thậm chí không sử dụng trang trí cho phương pháp thiết lập trong lớp, không có giọt nước mắt tương ứng, và như vậy. – lpapp