⾃动化测试常⽤断⾔的使⽤⽅法
Python内部⾃带了⼀个单元测试的模块——pyUnit,也就是我们说的:unittest
先介绍⼀下unittest的基本使⽤⽅法:
1. import unittest模块
2. 定义⼀个继承 unittest.TestCa 的测试⽤例类
3. 定义 tUp 和 tearDown两个⽅法,tearDown的过程很重要,是为以后的TestCa留⼀个⼲净的测试环境。
4. 定义测试⽤例,均要以test开头
5. ⼀个测试⽤例只需要测试⼀个⽅⾯,测试的⽬的和测试内容要很明确。⼀般使⽤asrtEqual、asrtIn等断⾔⽅法去判断程序执⾏的结果和预期结果是否相符
6. 调⽤ unittest.main() 开始跑测试⽤例
7. 测试全部通过,不输出任何东西;若测试未通过,则会输出相应的错误提⽰。
下⾯是unittest中常⽤的asrt语句:
asrtEqual(a,b,[msg='测试失败时打印的信息']):若 a=b,则测试⽤例通过
asrtNotEqual(a,b,[msg='测试失败时打印的信息']):若a != b,则测试⽤例通过
asrtTrue(x,[msg='测试失败时打印的信息']):若x是True,则测试⽤例通过
asrtFal(x,[msg='测试失败时打印的信息']):若x是Fal,则测试⽤例通过
asrtIs(a,b,[msg='测试失败时打印的信息']):若a是b,则测试⽤例通过
asrtNotIs(a,b,[msg='测试失败时打印的信息']):若a不是b,则测试⽤例通过
asrtIsNone(x,[msg='测试失败时打印的信息']):若x是None,则测试⽤例通过
asrtIsNotNone(x,[msg='测试失败时打印的信息']):若x不是None,则测试⽤例通过
asrtIn(a,b,[msg='测试失败时打印的信息']):若a在b中,则测试⽤例通过
asrtNotIn(a,b,[msg='测试失败时打印的信息']):若a不在b中,则测试⽤例通过
asrtIsInstance(a,b,[msg='测试失败时打印的信息']):若a是b的⼀个实例,则测试⽤例通过
全国六级成绩查询
asrtNotIsInstance(a,b,[msg='测试失败时打印的信息']):若a不是b的实例,则测试⽤例通过
asrtAlmostEqual(a, b):round(a-b, 7) == 0
asrtNotAlmostEqual(a, b):round(a-b, 7) != 0
asrtGreater(a, b):a > b
asrtGreaterEqual(a, b):a >= b
asrtLess(a, b):a < b
asrtLessEqual(a, b):a <= b
asrtRegexpMatches(s, re):regex.arch(s)
asrtNotRegexpMatches(s, re):not regex.arch(s)
mechanicallyasrtItemsEqual(a, b):sorted(a) == sorted(b) and works with unhashable objs
平和学校
asrtDictContainsSubt(a, b):all the key/value pairs in a exist in b
asrtMultiLineEqual(a, b):strings
asrtSequenceEqual(a, b):quences
拆除英文asrtListEqual(a, b):lists
asrtTupleEqual(a, b):tuples
asrtSetEqual(a, b):ts or frozents
asrtDictEqual(a, b):dicts
(⼀)asrtEqual 和 asrtNotEqual
asrtEqual:如两个值相等,则pass
强心脏利特入伍特辑asrtNotEqual:如两个值不相等,则pass
使⽤⽅法:
asrtEqual(first,cond,msg)其中first与cond进⾏⽐较,如果相等则通过;msg为失败时打印的信息,选填;断⾔asrtNotEqual反着⽤就可以了。
(⼆)asrtTrue和asrtFal
asrtTrue:判断bool值为True,则pass
asrtFal:判断bool值为Fal,则Pass
使⽤⽅法:
asrtTrue(expr,msg)其中express输⼊相应表达式,如果表达式为真,则pass;msg选填;断⾔asrtFal如果表达式为假,则pass
(三)asrtIsNone和asrtIsNotNone
asrtIsNone:不存在,则pass
asrtIsNotNone:存在,则pass
使⽤⽅法:
asrtIsNone(obj,msg)检查某个元素是否存在
总结:
常⽤
asrtEqual(a, b)
asrtNotEqual(a, b)
asrtTrue(x)
asrtFal(x)
asrtIs(a, b)
asrtIsNot(a, b)
asrtIsNone(x)
asrtIsNotNone(x)
asrtIn(a, b)
asrtNotIn(a, b)
asrtIsInstance(a, b)
asrtNotIsInstance(a, b)
其它
asrtAlmostEqual(a, b)
asrtNotAlmostEqual(a, b)
asrtGreater(a, b)
asrtGreaterEqual(a, b)
asrtLess(a, b)
asrtLessEqual(a, b)
asrtRegexpMatches(s, re)
asrtNotRegexpMatches(s, re)
asrtItemsEqual(a, b)
asrtDictContainsSubt(a, b)
越俎代庖怎么读
asrtMultiLineEqual(a, b)
asrtSequenceEqual(a, b)
asrtListEqual(a, b)
asrtTupleEqual(a, b)
asrtSetEqual(a, b)
asrtDictEqual(a, b)
asrtMultiLineEqual(a, b)
asrtSequenceEqual(a, b)
asrtListEqual(a, b)
asrtTupleEqual(a, b)
asrtSetEqual(a, b)
使⽤时机:
那么我们什么时候应该使⽤断⾔呢?如果没有特别的⽬的,断⾔应该⽤于如下情况:
防御性的编程
运⾏时对程序逻辑的检测
合约性检查(⽐如前置条件,后置条件)
程序中的常量
检查⽂档英文电影
例:防御性编程中添加断⾔
在代码开始添加注释是个好的开端,但是⼈们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断⾔,我们可以同时对这块代码编写⽂档,如果这些断⾔被违反了,会直接引起⼀个简单⽽⼜直接的失败。
asrt target in(x, y, z)
if target ==x:
run_x_code()
awv
elif target ==y:
run_y_code()
el:
asrt target == z
run_z_code()
作者:古佛青灯度流年
链接:/p/eea0b0e432daくるり
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。上农
asrtAlmostEqual(a, b):round(a-b, 7) == 0