自动化测试从Unittest开始
一个测试小白的认知,最近想对公司的app进行自动化测试,进阶一下自己,关于自动化测试有的说用pytest框架,有的说用untitest框架,于是逛了好多论坛,也看了好多视频,觉得还是的从untitest开始学起,没有untitest的基础,对于pytest很吃亏,就在这上面记录一下吧
提示:以下是本篇文章正文内容,下面案例可供参考
示例 首先创建一个test文件夹,然后创建aa.py文件
代码如下(示例):
class Arithmetic:
def __init__(self,a,b):
self.a=a
self.b=b
def add(self):
return self.a+self.b
def sub(self):
return self.a-self.b
def multiply(self):
return self.a*self.b
代码如下(示例):建一个py文件:bb ,写一个加法测试用例,一个加法测试用例
import unittest
from test.aa import Arithmetic
class Test_add(unittest.TestCase):
# 继承了unittest 里面的testcase专门写测试用例
# 一个用例就是一个函数,不能传参,只有self关键字
# 所有的用例,函数都是以test开头
def test_add1(self):
a =Arithmetic(1,1).add()
print("1+1的结果",a)
def test_add2(self):
a =Arithmetic(0,0).add()
print(f"0 + 0的结果{a}")
def test_add3(self):
a =Arithmetic(-1,-2).add()
print(f"-1+ -2的结果{a}")
class Test_sub(unittest.TestCase):
def test_sub1(self):
a =Arithmetic(1,1).sub()
print("1 - 1的结果",a)
def test_sub2(self):
a =Arithmetic(0,0).sub()
print(f"0 - 0的结果{a}")
def test_sub3(self):
a =Arithmetic(-1,-2).sub()
print(f"-1 - -2的结果{a}")
if __name__ == '__main__':
unittest.main()
使用main函数自测,执行的结果如下,用例通过:
需要注意的是返回的结果是按ASCII编码英文字母前后排序的
代码如下(示例):创建cc.py文件
用例有三种写法,如只执行一条用例
import unittest
from test.bb import Test_add
suite=unittest.TestSuite() # 先构造测试集,实例化测试套件
# 如只执行用例中 1+1 的这个测试用例
# 多条就写多个下面语句,改变参数
suite.addTest(Test_jia_jia("test_add1"))
# 下面是执行器,固定写法
runner = unittest.TextTestRunner()
runner.run(suite)
方法二:执行测试类下的所有测试用例
import unittest
from test.bb import Test_add
suite=unittest.TestSuite() # 先构造测试集,实例化测试套件
# 执行Test_jia 用例中所以用例
loader=unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(Test_add))
# 下面是执行器,固定写法
runner = unittest.TextTestRunner()
runner.run(suite)
代码如下(示例):方法三:执行测试文件下的所有测试用例
import unittest
from test.bb import Test_add
# 第三种 具体到模块上
suite=unittest.TestSuite() # 先构造测试集,实例化测试套件
loader=unittest.TestLoader()
from test import bb # 具体到模块
suite.addTest(loader.loadTestsFromModule(bb)
# 下面是执行器,固定写法
runner = unittest.TextTestRunner()
runner.run(suite)
用例执行完了,肯定需要一个判断依据,需要使用断言函数,
class Test_add(unittest.TestCase):
def test_add1(self):
a =Arithmetic(1,1).add()
print("1+1的结果",a)
# assertEqual 后面跟三个参数,第一位预期结果,第二位实际结果
# 第三位出错是报什么错,只有在出错时提示语才显示
self.assertEqual(2, a) # 如果1+1=2,用例通过
# 期望值放前面, 实际结果放后面
def test_add2(self):
a =Arithmetic(0,0).add()
print(f"0 + 0的结果{a}")
self.assertEqual(2, a,'这里写不写不重要,只有错误才显示在终端')
# 如果0+0=2 用例通过,由于用例是错误的提示语才会出现
def test_add3(self):
a =Arithmetic(-1,-2).add()
print(f"-1+ -2的结果{a}")
self.assertNotEqual(2, a,'这是个预期结果不等于实际结果的断言')
# 如果-1+ -2 != 2 用例通过
最后输出HTML测试报告,这里需要上网虚招开源的代码,有很多,本人用的是这个:BSTestRunner,找到开源文件后下载放到同级目录即可,报告生成后会生成一个HTML文件,使用浏览器打开即可
import unittest
from a.BSTestRunner import BSTestRunner
# 导入HTML报告模板
from test.bb import Test_add
suite=unittest.TestSuite()
loader=unittest.TestLoader()
from test import bb # 具体到模块
suite.addTest(loader.loadTestsFromModule(bb))
with open('aaa.html', 'wb') as f:
runner = BSTestRunner(stream=f,
title='这是我的测试报告啊',
description='执行人testing')
runner.run(suite)