Python代码测试

对于编写的代码,可以使用unittest模块中的相关方法进行测试。

测试函数

首先定义一个简单的函数,该函数用来合并名称并返回。

name_function.py:

def get_fromatted_name(first,last):

"""组合姓名并返回"""

full_name=first+' '+last

return full_name.title()

接着编写测试代码,需要先导入unittest模块。然后创建一个测试类,用于包含对上述函数的单元测试,这个类必须继承unittest.TestCase类。

test_name_function.py:

#导入模块和要测试的函数

import unittest

from name_function import get_fromatted_name

#编写测试类,必须继承自unittest.TestCase

class NamesTestCase(unittest.TestCase):

"""测试name_function.py"""

#测试方法

def test_first_last_name(self):

"""能够正确的处理Python Java这样的名字吗?"""

formatted_name=get_fromatted_name('python','java')

#调用断言方法用来核实得到的结果是否与期望值结果一致

self.assertEqual(formatted_name,'Python Java')

#运行测试

unittest.main()

上述中最重要的是调用TestCase类的assertEqual()断言方法,用来核实代码执行结果和预期结果是否一致。

注意:当编写测试类时,除了需要继承unittest.TestCase外,测试类中的测试方法必须以test_开头,这样在调用unittest.main()方法时,这些以test_开头的方法才会自动运行。

unittest.TestCase类的断言方法

断言方法检查你认为应该满足的条件是否确实满足。如果该条件确实满足,你对程序行为的假设就得到了确认,你就可以确信其中没有错误。如果你认为应该满足的条件实际上并不满足,Python将引发异常。

方法

用途

assertEqual(a,b)

核实a==b

assertNotEqual(a,b)

核实a!=b

assertTrue(x)

核实x为True

assertFalse(x)

核实x为False

assertIn(item,list)

核实item在list中

assertNotIn(item,list)

核实item不在list中

测试类

首先定义一个简单的类,接着对这个类编写测试代码。

class AnonymousSurvey():

"""收集匿名调查问卷的答案"""

def __init__(self,question):

#存储一个问题,并为存储答案做准备

self.question=question

self.responses=[]

def show_question(self):

#显示调查问卷

print(self.question)

def store_response(self,new_response):

self.responses.append(new_response)

def show_results(self):

print("答案:")

for response in self.responses:

print('-'+response)

测试类和测试函数类似,核心都是应用断言方法来实现的。

import unittest

from survey import AnonymousSurvey

class TestAnonyousSurvey(unittest.TestCase):

"""对类AnonymousSurvey进行测试"""

def setUp(self):

question="你对什么语言感兴趣?"

self.my_survey=AnonymousSurvey(question)

#设定程序回答的答案

self.responses=["java","python","c#"]

#方法以test_开头

def test_store_three_response(self):

for response in self.responses:

self.my_survey.store_response(response)

for response in self.responses:

self.assertIn(response,self.my_survey.responses)

unittest.main()

setUp()方法

unittest.TestCase类包含方法setUp(),让我们只需创建这些对象一次,就可以在每个测试方法中使用它们。

如果你在自己的测试类中重写了setUp()方法,python将先运行它,再运行各个以test_开头的方法。这样,在你编写的每个测试方法中都可使用在方法setUp()中创建的对象了。

import unittest

from survey import AnonymousSurvey

class TestAnonyousSurvey(unittest.TestCase):

"""对类AnonymousSurvey进行测试"""

def setUp(self):

question="你对什么语言感兴趣?"

self.my_survey=AnonymousSurvey(question)

#设定程序回答的答案

self.responses=["java","python","c#"]

#方法以test_开头

def test_store_three_response(self):

for response in self.responses:

self.my_survey.store_response(response)

for response in self.responses:

self.assertIn(response,self.my_survey.responses)

unittest.main()

总结

python代码单元测试,需要使用unittest模块,尤其是其中的TestCase类及其断言方法。

在编写测试代码时,需要自定义一个测试类,并且继承自unittest.TestCase。

所有编写的测试方法都必须以test_开头,这样在调用unittest.main()方法后,才能自动执行。

如果需要在不同的测试方法中使用同一个对象,可以考虑在类中重写setUp()。

断言方法用于验证程序运行的值和期望值(一般是写死的值)是否一致,从而反馈测试的结果。

参考资源

《Python编程:从入门到实践》

本文后续会随着知识的积累不断补充和更新,内容如有错误,欢迎指正。

最后一次更新时间:2018-08-23

python代码测试_Python入门学习系列——Python代码测试相关推荐

  1. python入门代码-Python入门学习系列——Python代码测试

    Python代码测试 对于编写的代码,可以使用unittest模块中的相关方法进行测试. 测试函数 首先定义一个简单的函数,该函数用来合并名称并返回. name_function.py: def ge ...

  2. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  3. python twisted教程_Python Twisted 学习系列20(转载stulife最棒的Twisted入门教程)

    第二十部分 轮子中的轮子: Twisted和Erlang 简介 在这个系列中,有一个事实我们还没有介绍,即混合同步的"普通Python"代码与异步Twisted代码不是一个简单的任 ...

  4. python 动物分类_python入门学习之knn分类

    分类属于监督学习的一种,指的是从数据中选出已经分类好的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类的分析方法.比如判断一副图片上的动物是狗还是猫,就属于分类问题 ...

  5. python求勾股定理_python入门学习随记(二)(勾股定理、球体积、利率、移位和进制转换、数字求和)...

    本题目要求读入2个数分别是直角边A和直角边B,然后输出三角形斜边的长度. 输入格式:输入两个数,用空格分隔,用回车键结束输入 输出格式:输出勾股定理计算的结果,结果保留4位有效数字 输入样例:在这里给 ...

  6. python elif 用法_Python入门高级教程--Python 条件语句

    Python 条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和 ...

  7. python多行注释符号_python知识学习,python标识符和关键字

    python标识符和关键字 标识符和关键字都是之中具有某种意义的标记和称谓,就像人的外号一样.所谓的标识符就是代码的分号.单引号.双引号等等就是标识符,而代码中的if.for等等就是关键字. pyth ...

  8. python递归迭代_Python入门基础知识点(python迭代器和递归)

    函数名的使用: 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 函数名的内存地址: deffunc():pass print(func) #函数的内存地址 结果: 函数名可以 ...

  9. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

最新文章

  1. K-最近邻法(KNN)简介
  2. 从深圳回武汉的面试感想以及一些面试题
  3. java比赛题目_【蓝桥杯2016第七届比赛题目】JAVA A组
  4. 20181027 考试记录
  5. php重点,php – 课程。重点是什么?
  6. 公司应该鼓励怎样的内斗
  7. easydarwin 安装_win10安装EasyDarwin
  8. 使用torch.nn.BatchNorm1d出现Tensor for argument #2 ‘weight‘ is on CPU, but expected it to on GPU错误
  9. C++模板偏特化和全特化
  10. 勇闯迷塔小游戏(c++) 3.17更新
  11. php 微信朋友圈 更新时间,微信朋友圈可见天数怎么设置
  12. 这个世界有病,我们都有病
  13. 随机场(Random field)
  14. Truck History prime
  15. catkin_make时出现‘CV_RETR_TREE’ was not declared in this scope
  16. bison版本问题导致编译报错:‘parse.error‘ is not used
  17. 打车软件被勒令叫停的背后
  18. 错误NDK is missing a platforms directory.
  19. 硬盘数据迁移软件哪款好用?强烈推荐它!
  20. python写所有大写、小写、大小写、字母

热门文章

  1. 编程语言中,差、交、并、自然连接、选择、投影、笛卡尔积分别都是什么运算...
  2. chrome地址栏命令
  3. 黑客马拉松 招募_举办第一次黑客马拉松的提示
  4. 计算机一级办公软件试题,计算机一级WPS模拟练习题及答案
  5. dell加装固态硬盘_技术丨如何进行笔记本硬盘拆装?
  6. 互斥锁(python 版)
  7. ORC 在 Hive 中的应用
  8. 使用scatter()绘制散点图
  9. 远程连接SQL Server数据库
  10. 第二讲 数学模型方法