Pytest,更改动态传递给标记的计数器

2024-06-16 14:12:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我从Python文件中读取测试数据,如下所示

//testdata.py——它是一个集合列表

TEST_DATA = [
(
{"test_scenario":"1"}, {"test_case_id":1}
),
(
{"test_scenario":"2"}, {"test_case_id":2}
)
]

现在,我将此测试数据用作pytest测试文件的一部分

// test.py
// import testdata

test_data = testdata.TEST_DATA   
start = 0

class TestOne():
    
     @pytest.mark.parametrize(("test_scenario,testcase_id"),test_data)
     @testcaseid.marktc[test_data[start][1]["test_case_id"]]
     def testfunction():
         global start
         start = start + 1
         // Doing test here. 

现在,当我打印start时,它会连续更改其值。但是当我试图检索pytest结果时,我仍然保持start=0,因为我的测试用例ID没有被正确记录

我也可以吗

  1. 从函数内部传递标记
  2. 或者,在本例中,是否有一种方法可以动态更改start的计数

另外,这是我目前能够存储测试数据的最佳方式

下面是如何定义testcaseid.marktc的。 //testrailthingy.py

class testcaseid(object):

    @staticmethod
    def marktc(*ids):
        return pytest.mark.testrail(ids=ids)

Tags: 文件pytestididsdatapyteststart