python小知识-python单元测试

简介: 当你雄心勃勃的写一个大工程的时候,请在你的checklist里写下三个词语:功能函数化,模块化,单元测试。同时建立一个模块或者文件叫test,所有的单元测试可以放在这里

1.单元测试的重要性

测试是为了保证交互高质量代码,而单元测试就是其中一个基石。

当你雄心勃勃的写一个大工程的时候,请在你的checklist里写下三个词语:功能函数化,模块化,单元测试。同时建立一个模块或者文件叫test,所有的单元测试可以放在这里

2.单元测试的原则

单元测试时伴随在开发过程的自我测试,开发完一个函数,单元测试一下;开发完模块,单元测试一下;所以当你写完你的任务时,交给测试人员测试的时候,你心里是充满自信的

如果你等完成了所有的开发,再来测试,要么来不及测试,要么测一个大概的流程,结果是测试人员无休止的找你。

单元测试原则:

  • 一致性:每次执行的单元测试的结果都是一样的
  • 原子性:单元测试的结果要么成功,要么失败
  • 单一原则:针对单一场景和行为进行测试,多个分支建立多个场景进行单独测试
  • 隔离性:不依赖外部环境,如数据库

3.python如何写单元测试

python内置了一个单元测试模块unittest,我们来看下使用例子

class Func(object):
    def add(self,a,b):
        return a+b
    def sub(self,a,b):
        return a-b

import unittest
class FuncTest(unittest.TestCase):
    def setUp(self):
        print("running set up")
        self.func = Func()
    def tearDown(self):
        print("running teardown")
        self.func = None
    def testAdd(self):
        self.assertEqual(self.func.add(-1,7), 6)
    def testSub(self):
        self.assertEqual(self.func.sub(10,2), 8)

# add test
suite = unittest.TestSuite()
suite.addTest(FuncTest("testAdd"))
suite.addTest(FuncTest("testSub"))

# run test
runner = unittest.TextTestRunner()
runner.run(suite)

# ..
# running set up
# running teardown
# running set up
# running teardown

# ----------------------------------------------------------------------
# Ran 2 tests in 0.003s

# OK
# <unittest.runner.TextTestResult run=2 errors=0 failures=0>

上面的例子,我们要测试类的Func的功能函数,FuncTest为一个测试案例(unittest.TestCase),每个测试案例都有setUp和tearDown来初始化和回收资源,并为需要测试的功能编程Test,具体为:

  • setUp tearDown分别是初始化和回收资源
  • 测试方法通常以test开头
  • func.add(-1,7)为测试对象输出,6为预期输出,assertEqual为判断是否符合预期(是否相等)
  • 将测试case加入TestSuite
  • 利用TextTestRunner执行case

当然,你可以不需要unittest这个包,但请你创建test文件夹,创建testXXX.py来测试你的功能。

目录
相关文章
|
29天前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
94 5
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
110 3
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
103 2
|
2天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
19 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
5天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
18 3
|
4天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
12 1
|
3天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
57 4
|
2月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
68 6
基于Python访问Hive的pytest测试代码实现
|
1月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。