扩展unittest参数,辅助测试

背景
在利用unittest组织UI脚本时,可能需要在执行时实时传递一些参数到case中,比如设备id、用户账号、密码等等;
但在unittest原测试类中,只可传递一个method参数,不方便传递。

解决方法
可以在测试类B上层添加一个父类A,类A继承unittest.TestCase,同时类A重写__init__构造函数,添加需要的额外参数。

# unittest正常调用

import unittest


class MyTestCase(unittest.TestCase):

    def setUp(self):
        print("执行case前")

    def test_my_first_case(self):
        print("case执行中")

    def tearDown(self):
        print("执行case后")


if __name__ == "__main__":
    suit = unittest.TestSuite()
    suit.addTest(MyTestCase("test_my_first_case"))
    runner = unittest.TextTestRunner()
    runner.run(suit)


# 执行结果
"""

执行case前
case执行中
执行case后
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

"""

补充父类,重写构造方法

import unittest


class ParameterTest(unittest.TestCase):
    # 重写init方法,补充额外参数
    # 接受参数定义为对象属性
    def __init__(self, method, deviceid, account):
        # 复用父类 unittest.TestCase init方法
        super(ParameterTest, self).__init__(method)
        self.deviceid = deviceid
        self.account = account


class MyTestCase(ParameterTest):

    def setUp(self):
        print("执行case前")

    def test_my_first_case(self):
        # case中可正常操作外面传递的参数
        print(f"需要额外参数{self.deviceid}")
        print("case执行中")
        print(f"需要额外参数{self.account}")

    def tearDown(self):
        print("执行case后")


if __name__ == "__main__":
    suit = unittest.TestSuite()
    # 此时添加case时,就可以传递额外参数了
    suit.addTest(MyTestCase("test_my_first_case", "KFTKYH7PRC85TKDA", "18222112211"))
    runner = unittest.TextTestRunner()
    runner.run(suit)


# 执行结果
"""
执行case前
需要额外参数KFTKYH7PRC85TKDA
case执行中
需要额外参数18222112211
执行case后
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
"""
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值