Python接口自动化:学会使用测试标签!

在大规模的自动化测试框架中,测试用例的数量通常非常庞大。为了有效地管理这些测试用例,一种常用的技术是使用测试标签(或标记)。测试标签可以帮助你快速定位和执行特定类别的测试,比如回归测试、冒烟测试或性能测试。在Python中,我们可以通过unittest框架的自定义属性或pytest的标记(markers)来实现这一点。

🌟 实例一:使用unittest的自定义属性

import unittestclass TestAPI(unittest.TestCase):    @property    def test_tags(self):        return ['unit']    def test_login(self):        self.assertTrue(True)if __name__ == '__main__':    suite = unittest.TestLoader().loadTestsFromTestCase(TestAPI)    for test in suite:        print(f'Test: {test.id()}, Tags: {getattr(test, "test_tags", [])}')

🌟 实例二:使用unittest的setUpClass方法​​​​​​​

import unittestclass TestAPI(unittest.TestCase):    @classmethod    def setUpClass(cls):        cls.test_tags = ['functional']    def test_api_functionality(self):        self.assertTrue(True)if __name__ == '__main__':    suite = unittest.TestLoader().loadTestsFromTestCase(TestAPI)    for test in suite:        print(f'Test: {test.id()}, Tags: {getattr(test.__class__, "test_tags", [])}')

🌟 实例三:使用pytest的标记​​​​​​​

import pytest@pytest.mark.smokedef test_smoke():    assert Trueif __name__ == '__main__':    pytest.main(['-m', 'smoke'])

🌟 实例四:多标记​​​​​​​

import pytest@pytest.mark.regression@pytest.mark.smokedef test_regress_and_smoke():    assert Trueif __name__ == '__main__':    pytest.main(['-m', 'smoke or regression'])

🌟 实例五:标记整个测试类​​​​​​​

import pytest@pytest.mark.performanceclass TestPerformance:    def test_performance(self):        assert Trueif __name__ == '__main__':    pytest.main(['-m', 'performance'])

🌟 实例六:使用标记过滤器​​​​​​​

import pytest@pytest.mark.long_runningdef test_long_running():    assert Trueif __name__ == '__main__':    pytest.main(['-m', 'not long_running'])

🌟 实例七:标记参数化的测试​​​​​​​

import pytest@pytest.mark.parametrize("input, expected", [(1, 1), (2, 2)])@pytest.mark.functionaldef test_parametrized(input, expected):    assert input == expectedif __name__ == '__main__':    pytest.main(['-m', 'functional'])

🌟 实例八:动态标记​​​​​​​

import pytestdef pytest_collection_modifyitems(items):    for item in items:        if 'login' in item.name:            item.add_marker(pytest.mark.smoke)if __name__ == '__main__':    pytest.main()

🌟 实例九:使用自定义标记插件​​​​​​​

# conftest.pyimport pytestdef pytest_addoption(parser):    parser.addoption('--tag', action='store', default='all', help='run tests with specified tag')def pytest_collection_modifyitems(config, items):    selected_tag = config.getoption('tag')    if selected_tag != 'all':        skip_tag = pytest.mark.skip(reason=f'not running tests with tag {selected_tag}')        for item in items:            if selected_tag not in [mark.name for mark in item.iter_markers()]:                item.add_marker(skip_tag)# test_example.pyimport pytest@pytest.mark.smokedef test_smoke():    assert Trueif __name__ == '__main__':    pytest.main(['--tag', 'smoke'])

🌟 实例十:利用标记进行测试报告定制​​​​​​​

import pytestdef pytest_terminal_summary(terminalreporter):    passed_smoke_tests = terminalreporter.stats.get('passed', [])    smoke_tests = [item for item in passed_smoke_tests if 'smoke' in [mark.name for mark in item.keywords]]    print(f'\nSmoke Tests Passed: {len(smoke_tests)}')if __name__ == '__main__':    pytest.main()

以上实例展示了如何在Python的unittest和pytest框架中使用测试标签。测试标签的引入使得测试的选择性和组织性更强,特别是在大型项目中,这可以显著提高测试的效率和效果。

如果你正在寻找一个更系统的方式来管理你的自动化测试,考虑将测试标签纳入你的测试策略中。它们不仅可以帮助你更好地组织测试,还能在构建持续集成/持续部署(CI/CD)流程时提供灵活性。

如果你对Python编程和自动化测试感兴趣,记得关注我们的微信订阅号,获取更多实用的编程技巧和自动化测试指南。🚀

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值