Python unittest order 03: Parameterized test

import unittest

from parameterized import parameterized


# noinspection PyMethodParameters,PyMethodMayBeStatic
def generate():
    return [
        ["JackTest", "Jack", "21"],
        ["AndyTest", "Andy", "25"],
        ["ZedTest", "Zed", "18"],
        ["BradTest", "Brad", "30"]
    ]


def get_test_name_index(method_name_str):
    test_name = method_name_str.split("_")[-1]
    generator = generate()
    for i in range(len(generator)):
        if test_name in generator[i]:
            return i


def cmp(a, b):
    return (a > b) - (a < b)


# noinspection PyUnusedLocal
def reorder(self, x, y):
    return cmp(get_test_name_index(x), get_test_name_index(y))


unittest.TestLoader.sortTestMethodsUsing = reorder


class OrderTest(unittest.TestCase):

    # noinspection PyMethodParameters,PyUnusedLocal
    def custom_name_func(testcase_func, param_num, param):
        return testcase_func.__name__ + '_' + param.args[0]

    @parameterized.expand(generate(), name_func=custom_name_func)
    def test_show(self, test_name, name, age):
        print("Test name: '%s', Name: '%s', age: '%s'" % (test_name, name, age))
python3 -m pytest -vv .\OrderedParameterizedTest.py

OrderedParameterizedTest.py::OrderTest::test_show_JackTest PASSED  [ 25%] 
OrderedParameterizedTest.py::OrderTest::test_show_AndyTest PASSED  [ 50%] 
OrderedParameterizedTest.py::OrderTest::test_show_ZedTest PASSED   [ 75%] 
OrderedParameterizedTest.py::OrderTest::test_show_BradTest PASSED  [100%] 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容