Python自动化测试实战

张开发
2026/4/18 12:27:05 15 分钟阅读

分享文章

Python自动化测试实战
Python自动化测试实战后端转 Rust 的萌新ID 第一程序员——名字大人很菜暂时。正在跟所有权和生命周期死磕日常记录 Rust 学习路上的踩坑经验和啊哈时刻代码片段保证能跑。保持学习保持输出。欢迎大佬们轻喷也欢迎同好一起进步。前言最近在学习 Python 的过程中我开始关注自动化测试。作为一个从后端转 Rust 的萌新我认为了解 Python 的自动化测试是非常有必要的它可以帮助我们确保代码的质量和可靠性。Python 提供了多种库和工具来进行自动化测试如 unittest、pytest、selenium 等。今天我就来分享一下 Python 自动化测试的相关知识和实战经验希望能帮到和我一样的萌新们。自动化测试的基本概念什么是自动化测试自动化测试是指使用自动化工具和脚本执行测试用例验证软件是否符合预期行为的过程。自动化测试的优势提高测试效率减少人工测试的工作量提高测试覆盖率可以测试更多的场景提高测试准确性避免人为错误支持持续集成与 CI/CD 流程集成降低测试成本长期来看自动化测试可以降低测试成本自动化测试的类型单元测试测试单个函数或方法集成测试测试多个组件的交互功能测试测试软件的功能性能测试测试软件的性能安全测试测试软件的安全性端到端测试测试整个系统的流程常用的自动化测试库1. unittestunittest是 Python 内置的测试框架用于编写和运行单元测试。import unittest class TestCalculator(unittest.TestCase): def test_add(self): self.assertEqual(1 1, 2) self.assertEqual(2 3, 5) def test_subtract(self): self.assertEqual(5 - 3, 2) self.assertEqual(10 - 5, 5) def test_multiply(self): self.assertEqual(2 * 3, 6) self.assertEqual(5 * 4, 20) def test_divide(self): self.assertEqual(6 / 2, 3) self.assertEqual(10 / 5, 2) with self.assertRaises(ZeroDivisionError): 1 / 0 if __name__ __main__: unittest.main()2. pytestpytest是一个功能强大的测试框架比 unittest 更简洁、更灵活。def test_add(): assert 1 1 2 assert 2 3 5 def test_subtract(): assert 5 - 3 2 assert 10 - 5 5 def test_multiply(): assert 2 * 3 6 assert 5 * 4 20 def test_divide(): assert 6 / 2 3 assert 10 / 5 2 with pytest.raises(ZeroDivisionError): 1 / 03. seleniumselenium是一个用于 Web 应用测试的工具可以模拟浏览器行为。from selenium import webdriver from selenium.webdriver.common.by import By class TestWebApp: def setup_method(self): self.driver webdriver.Chrome() self.driver.get(https://www.example.com) def teardown_method(self): self.driver.quit() def test_title(self): assert Example Domain in self.driver.title def test_heading(self): heading self.driver.find_element(By.TAG_NAME, h1) assert Example Domain in heading.text实战案例测试一个简单的计算器应用1. 实现计算器应用# calculator.py class Calculator: def add(self, a, b): return a b def subtract(self, a, b): return a - b def multiply(self, a, b): return a * b def divide(self, a, b): if b 0: raise ZeroDivisionError(Division by zero) return a / b2. 编写单元测试# test_calculator.py import unittest from calculator import Calculator class TestCalculator(unittest.TestCase): def setUp(self): self.calculator Calculator() def test_add(self): self.assertEqual(self.calculator.add(1, 1), 2) self.assertEqual(self.calculator.add(2, 3), 5) self.assertEqual(self.calculator.add(-1, 1), 0) self.assertEqual(self.calculator.add(0, 0), 0) def test_subtract(self): self.assertEqual(self.calculator.subtract(5, 3), 2) self.assertEqual(self.calculator.subtract(10, 5), 5) self.assertEqual(self.calculator.subtract(-1, 1), -2) self.assertEqual(self.calculator.subtract(0, 0), 0) def test_multiply(self): self.assertEqual(self.calculator.multiply(2, 3), 6) self.assertEqual(self.calculator.multiply(5, 4), 20) self.assertEqual(self.calculator.multiply(-1, 1), -1) self.assertEqual(self.calculator.multiply(0, 5), 0) def test_divide(self): self.assertEqual(self.calculator.divide(6, 2), 3) self.assertEqual(self.calculator.divide(10, 5), 2) self.assertEqual(self.calculator.divide(-6, 2), -3) with self.assertRaises(ZeroDivisionError): self.calculator.divide(1, 0) if __name__ __main__: unittest.main()3. 运行测试python test_calculator.py自动化测试的最佳实践1. 测试命名规范测试文件以test_开头测试类以Test开头测试方法以test_开头2. 测试隔离每个测试应该独立运行测试之间不应该相互依赖使用setUp和tearDown方法设置和清理测试环境3. 测试覆盖测试应该覆盖主要的功能和边界情况使用测试覆盖率工具如coverage4. 测试数据使用合理的测试数据包括正常情况、边界情况和异常情况5. 测试速度测试应该运行得快避免在测试中进行耗时的操作考虑使用 mock 对象6. 测试文档为测试添加适当的注释说明测试的目的和预期结果常见问题与解决方案1. 测试失败问题测试失败无法通过。解决方案检查测试代码是否正确检查被测试的代码是否有问题确保测试环境正确设置2. 测试运行慢问题测试运行速度慢影响开发效率。解决方案优化测试代码使用 mock 对象替代真实的依赖并行运行测试3. 测试覆盖不足问题测试覆盖不足无法发现所有问题。解决方案增加测试用例使用测试覆盖率工具考虑使用属性测试如hypothesis4. 测试维护困难问题测试代码难以维护随着代码的变化需要频繁更新。解决方案编写简洁、清晰的测试代码避免硬编码测试数据使用测试工厂和 fixtures5. 集成测试问题问题集成测试难以设置和运行。解决方案使用容器化技术如 Docker使用测试数据库考虑使用模拟服务总结Python 自动化测试是确保代码质量和可靠性的重要手段。通过本文的学习我们了解了自动化测试的基本概念、优势、类型、常用库、实战案例、最佳实践和常见问题与解决方案。作为一个从后端转 Rust 的萌新我认为学习 Python 的自动化测试是非常有价值的。它不仅可以帮助我们确保代码的质量还可以让我们更好地理解代码的行为和边界情况。在进行自动化测试时我们应该遵循测试命名规范、测试隔离、测试覆盖、测试数据、测试速度和测试文档等最佳实践。同时我们还应该注意解决测试失败、测试运行慢、测试覆盖不足、测试维护困难和集成测试问题等常见问题。保持学习保持输出今天的 Python 自动化测试实战文章就到这里希望对大家有所帮助。欢迎在评论区分享你的经验和问题我们一起进步

更多文章