2016-06-01 28 views
7

Tham số của tôi xác định tên của dịch vụ phân tích tham số của tôi. Tôi sẽ sử dụng một số tham số ngẫu nhiên cho các thử nghiệm này. Để các tên báo cáo của tôi trong junit không bị rối tung lên, tôi muốn tạo một tên tĩnh cho mỗi bài kiểm tra được tham số hóa.Ghi đè tên chức năng tham số hóa pytest

Có thể không?

JUnit dường như có một tham số: Changing names of parameterized tests

class TestMe: 
    @pytest.mark.parametrize(
     ("testname", "op", "value"), 
     [ 
      ("testA", "plus", "3"), 
      ("testB", "minus", "1"), 
     ] 
    ) 
    def test_ops(self, testname, op, value): 

Tôi đã cố gắng ghi đè request.node.name tuy nhiên tôi chỉ có thể đổi tên nó trong quá trình thực thi.

Tôi gần như tích cực Tôi cần phải viết một plugin hoặc một vật cố định. Bạn nghĩ điều gì sẽ là cách tốt nhất để giải quyết vấn đề này?

Trả lời

8

Bạn đang tìm kiếm ids đối số của pytest.mark.parametrize:

danh sách các id chuỗi, hoặc một callable. Nếu chuỗi, mỗi chuỗi là tương ứng với các giá trị argvalues ​​sao cho chúng là một phần của id thử nghiệm. Nếu có thể gọi được, số sẽ lấy một đối số (một argvalue đơn) và trả lại một chuỗi hoặc trả lại Không có.

Mã của bạn sẽ trông như thế

@pytest.mark.parametrize(
    ("testname", "op", "value"), 
    [ 
     ("testA", "plus", "3"), 
     ("testB", "minus", "1"), 
    ], 
    ids=['testA id', 'testB id'] 
) 
def test_industry(self, testname, op, value): 
Các vấn đề liên quan