test code 작성할 때 동일 테스트 메서드를 반복하면서 특정 값만 바꿔가며 테스트하고 싶을 때가 있다. 그럴 때 pytest의 parametrize
를 사용하면 반복을 줄일 수 있다.
@pytest.mark.parametrize("인자_이름_1, 인자_이름_2", [(인자_이름_1의_값, 인자_이름_2의_값)])
argnames : ,
로 구분된 문자열에서 하나 이상의 이름을 나타내거나 문자열로 구성된 tuple, list 사용
argnames : 반드시 튜플 리스트([(),(),()]
)여야 한다. 튜플 안에는 argnames에 적은 인자에 맞게 값을 넣어야 한다
@pytest.mark.parametrize("user_count", [(0),(1),(10)])
def test_when_create_users_then_success(
user_count,
test_session,
user_factory
):
users = user_model_factory.build_batch(size=user_count)
test_session.add_all(users)
test_session.commit()
users_result = Repo().get_users()
assert len(users_result) == user_count