以下内容B站千峰软件测试训练营内容
引入例子使用简单的例子进行测试脚本的开发:
#开发实现功能myMath.py
class mymath():
def jia(self,a,b):
return a+b
def jian(self,a,b):
return a-b
def chengfa(self,a,b):
return a*b
def chufa (self,a,b):
if b==0:
return 'ee'
else:
return a/b
if __name__=="__main__":
mm=mymath()
#测试用例一:验证数字的加法
actualValue=mm.jia(2,3)
exceptValue=5
if actualValue==exceptValue:
print("该加法功能实现正确",exceptValue)
# 测试用例2:异常用例
try :
actualValue=mm.jia("a",3)
exceptValue = "a3"
if actualValue == exceptValue:
print("该加法功能实现正确",exceptValue)
except Exception as e:
print("该方法实现不正确",e)
#验证字符串的加法
try :
actualValue=mm.jia("a","b")
exceptValue ="ab"
if actualValue == exceptValue:
print("该加法功能实现正确",exceptValue)
except Exception as e:
print("该方法实现正确",e)
输出:
该加法功能实现正确 5
该方法实现不正确 can only concatenate str (not "int") to str
该加法功能实现正确 ab
这种方法的特点:
1.断言方式太low,需要使用if-else进行判断;
2.测试结果在控制台输出,看不到测试报告的效果。
于是引入Unittest框架,其优势在于:
1.提供了用例的组织与形式;
2.提供了丰富的日志和报告;
3.提供了丰富的断言方法,如表1所示.
表1 unittest框架TestCase类提供的断言方法
方法 描述 方法 描述 assertEqual(a,b) a==b assertIn(a,b) a in b assertTrue(x) bool(x) isTrue assertNone(x) x is None assertIs(a,b) a is b assertIsInstance(a,b) isInstance(a,b)
以下将通过unnittest 框架来实现mytest
引入unittest框架来设计mymath单元测试用例
TestCase步骤:
1.导包 unittest是自导的框架,不需要安装;
2.创建一个单元测试类(其实就是类,只不过他继承了单元测试框架单元测试用例的类);
3.单元测试类中的5个方法的使用,包括使用场景及执行顺序;
setUp():测试用例的资源初始化,一般写入测试用例的前提条件;
test_add_1():测试用例,把测试用例步骤写在这个方法中;
tearDown()用于测试用例的资源释放。
@classmethod注解的是类方法,不用创建对象也能用,在对象创建之前就已经存在
的方法随着类进入内存。
setUpClass给当前所有的测试类进行初始化
tearDownClass给所有的单元测试用例进行资源释放
4.创建测试用例:test开头的方法,与代码顺序无关
5.测试用例的执行:
main():所有的测试用例执行一遍,测试用例的执行顺序按照测试用例方法名的字母序执行的。
import unittest
from myMath import mymath
#创建一个单元测试类(继承自unittest.testcase)
class myMathTest(unittest.TestCase):
#测试用例资源初始化方法
def setUp(self):
self.mm=mymath()
#测试用例方法
def test_add_1(self):
actualValue=self.mm.jia(2,1)
exceptValue=3
#断言
self.assertEqual(actu