python测试断言
这几天看了一下python的测试,基于函数方法和基于类的测试,主要使用的模块是unittest模块,为特定的方法和类,建立测试模块,测试函数功能是否满足预期。下面是模仿书里面的一个例子。
City.py模块
def city(city_name,country_name):
full_city_name = city_name +','+country_name
return full_city_name
为这个模块创建一个测试模块,主要是为了测试这个city方法是否能够满足预期。
assert模块
import unittest
from City import city
class Testcity(unittest.TestCase): def test_city(self):
city_name = 'Santiago'
country_name = 'Chile'
full_city_name = city(city_name,country_name)
print(full_city_name)
self.assertEqual(full_city_name,'Santiago,Chile')
# self.assertEqual(4+5,9) if __name__ == '__main__':
unittest.main()
主要就是导入unittest模块,然后定义一个测试类,继承unittest.TestCase,在测试类中定义测试方法,针对于被测试方法,编写测试用例,然后assert断言,查看输入,如果在运行过程中出现报错,则证明模块功能有问题,需要修改功能。如果测试没有问题,则证明测试能够通过,功能模块没有问题。

这就是测试成功的结果,如果测试部成果,如下图所示。


会抛出一个异常,在断言的地方。然后可以根据这个异常,来进行排错。
一般编写的代码,都需要经过测试之后,才能正常使用。避免复杂的人工测试,assert断言能够做到自动化,一旦有报错,则直接能判断功能是否正常。
下面是一个对类的测试断言,写在同一个模块中,只是为了说明测试方法。
class Employee():
def __init__(self,first_name,last_name,salary):
self.first_name = first_name
self.last_name = last_name
self.salary = int(salary) def give_raise(self,raise_default = 5000):
self.salary += raise_default class TestClassEmployee(unittest.TestCase):
def setUp(self):
self.username = Employee('John','Smith','') def test_give_default_raise(self):
self.username.give_raise()
new_raise = 65000
self.assertEqual(new_raise,self.username.salary) def test_give_custom_raise(self):
self.username.give_raise(7000)
new_raise = 67000
self.assertEqual(new_raise, self.username.salary)
if __name__ == '__main__':
unittest.main()
定义了一个员工类,需要知道员工的名字和薪水,同时定义了一个涨工资方法,默认值是5000,在定义测试类的时候,首先定义了个测试对象,通过setUp方法,生产测试对象,后续的测试方法中,可以通过该测试对象来做测试。定义了两个测试方法,默认值和自定义值。测试结果如下:

python测试断言的更多相关文章
- 收藏清单: python测试框架最全资源汇总
xUnit frameworks 单元测试框架 frameworks 框架 unittest - python自带的单元测试库,开箱即用 unittest2 - 加强版的单元测试框架,适用于Pytho ...
- Python assert 断言函数
http://blog.csdn.net/hunyxv/article/details/52737339 使用assert断言是学习python一个非常好的习惯,python assert 断言句语格 ...
- 转 python测试框架最全资源汇总
转自: http://www.testclass.net/list/python_list_1/ xUnit frameworks(单元测试框架) frameworks 框架 unittest - p ...
- python assert断言函数
python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假. 可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常. self ...
- python测试框架&&数据生成&&工具最全资源汇总
xUnit frameworks 单元测试框架frameworks 框架unittest - python自带的单元测试库,开箱即用unittest2 - 加强版的单元测试框架,适用于Python 2 ...
- Python测试 ——开发工具库
Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...
- python assert 断言语句的作用
python assert 断言语句的作用 assert语句的应用场景 使用assert语句是一个很好的习惯. 我们在编写代码的时候, 不知道程序会在什么时候崩溃, 与其让它在深度运行时崩溃, 不如预 ...
- python assert 断言详细用法格式
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
- 全功能Python测试框架:pytest
python通用测试框架大多数人用的是unittest+HTMLTestRunner,这段时间看到了pytest文档,发现这个框架和丰富的plugins很好用,所以来学习下pytest. imag ...
随机推荐
- 待解决ava.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method)
java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at ja ...
- hdu-1421(dp)
解题思路:dp[i][j]表示前i个物品中取k对所要的最小花费: 首先得对物品进行处理,因为需要当前物品减前一个物品的平方和最小: 所以先排序,因为排序的相邻两个的差的平方一定最小: 然后转移方程:d ...
- js判断一个元素是否在数组中
js判断一个元素是否在数组中 var arr = ['a','s','d','f']; console.info(isInArray(arr,'a'));//循环的方式 function isInAr ...
- 使用Google ZXing生成和解析二维码
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- BZOJ4475[Jsoi2015]子集选取——递推(结论题)
题目描述 输入 输入包含一行两个整数N和K,1<=N,K<=10^9 输出 一行一个整数,表示不同方案数目模1,000,000,007的值. 样例输入 2 2 样例输出 16 可以发现 ...
- BZOJ2084[Poi2010]Antisymmetry——回文自动机
题目描述 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串.比如00001111和010101就是反对称的,1001就不是.现在给出一个长度为N的0 ...
- HDU 4344-Mark the Rope-大数素因子分解
注意只有一个素因子的情况. #include <cstdio> #include <algorithm> #include <cstring> using name ...
- codeforces1045B Space Isaac 【manacher】【差分】
题目大意: 题目是将$[0,m)$的数划成了两个集合,其中一个集合的元素个数不超过$n$.问在第一个集合中选出的数加上第二个集合中选出的数的和中没有出现的数有哪些. 题目分析: 很有意思的一道题.方便 ...
- 爬虫_微信小程序社区教程(crawlspider)
照着敲了一遍,,, 需要使用"LinkExtrator"和"Rule",这两个东西决定爬虫的走向. 1.allow设置规则的方法:要能够限制在我们想要的url上 ...
- bzoj4671: 异或图
bzoj4671: 异或图 Description 定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 ( ...