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

问题描述

我正在从 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. 或者有没有办法在这个例子中动态改变开始的计数?

附言这是我目前能够存储测试数据的最佳方式。

这是我定义 testcaseid.marktc 的方式。 // testrailthingy.py

class testcaseid(object):

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)