当前位置: 首页 > news >正文

在线建设网站搜索网站关键词

在线建设网站,搜索网站关键词,网站悬浮二维码,手机网站开发怎么测试文章目录1. 单元测试简介1.1 本质1.2 单元测试框架1.3 参考资料2. unittest框架2.1 框架介绍2.2 测试原理2.3 测试流程2.4 测试准备2.5 代码3. 参数化3.2 excel读取4. 整体代码5. 测试报告5.1 报告样式5.2 测试报告库文件-HTMLTestRunnerNew.py1. 单元测试简介 1.1 本质 面向…

文章目录

        • 1. 单元测试简介
          • 1.1 本质
          • 1.2 单元测试框架
          • 1.3 参考资料
        • 2. unittest框架
          • 2.1 框架介绍
          • 2.2 测试原理
          • 2.3 测试流程
          • 2.4 测试准备
          • 2.5 代码
        • 3. 参数化
          • 3.2 excel读取
        • 4. 整体代码
        • 5. 测试报告
          • 5.1 报告样式
          • 5.2 测试报告库文件-HTMLTestRunnerNew.py

1. 单元测试简介

1.1 本质
面向对象:封装->类---类属性+类方法/类函数
单元测试的本质---对类函数/方法进行测试
1.2 单元测试框架
unittest
pytest
ddt    ---参数化
1.3 参考资料
https://www.cnblogs.com/fennudexiaoniao/p/7771931.html

2. unittest框架

2.1 框架介绍
1. TestCase(测试用例):编写测试用例2. TestSuite(测试套件):放置测试用例的容器,以备执行3. TestLoder:是用来加载 TestCase到TestSuite中4. TextTestRunner:是来执行测试用例的5. TextTestResult:测试结果会保存到TextTestResult实例中6. TestFixture:测试代码的运行环境,包括setUp和tearDown方法
2.2 测试原理

在这里插入图片描述
TestLoader加载TestCase到TestSuite中,然后TestRunner运行测试用例,生成的结果保存到TextTestResult中。整个过程集成在unittest.main模块中

2.3 测试流程
1. 编写TestCase:继承自unittest.TestCase方法须以test开头设置断言:self.assertEqual(res, 0)运行单元测试:unittest.main()2. 由TestLoder加载TestCase到TestSuite3. 然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中。
2.4 测试准备
  1. HTMLTestRunnerNew.py测试报告模板安装
    下载链接:链接:https://pan.baidu.com/s/1bGBh4jyiheIz1YARExUgWA
    提取码:z13q。下载完成后将文件放在项目目录下或项目运行环境下的Lib目录中。使用时import HTMLTestRunnerNew即可
2.5 代码
  • code.py
class Add:def add(self, a, b):return a + b
  • test_case.py
import unittest
from zy.Code import Addclass TestAdd(unittest.TestCase):   # 测试用例必须继承自父类def setUp(self):        # 初始化测试环境print('Start')self.t = Add()def tearDown(self):     # 还原测试环境print('End')def test_add_two_positive(self):r = self.t.add(1, 3)try:                           # 异常处理self.assertEqual(r, -4)    # 添加断言,取自父类except AssertionError as e:print('Fail')raise e                    # 抛出异常print('测试结果是{}'.format(r))def test_add_two_negative(self):r = self.t.add(-1, -3)self.assertEqual(r, -4)print('测试结果是{}'.format(r))def test_add_two_zero(self):r = self.t.add(0, 0)self.assertEqual(r, 0)print('测试结果是{}'.format(r))# 运行测试用例
if __name__ == '__main__':unittest.main()
  • execute_case.py
import unittest
from zy.test_case import TestAdd   # 导入测试类# 创建测试套件
suite = unittest.TestSuite()   # 实例化即可# 添加用例# 方法一:单一添加用例
suite.addTest(TestAdd('test_add_two_positive'))
suite.addTest(TestAdd('test_add_two_negative'))# 方法二:批量添加用例
from zy import test_caseloader = unittest.TestLoader()suite.addTest(loader.loadTestsFromTestCase(TestAdd))  # 加载测试类里的所有用例
suite.addTest(loader.loadTestsFromModule(test_case))  # 加载模块里的所有用例# 执行用例并生成报告# 方法一:txt格式报告
with open('TestResult.txt', 'w+', encoding='utf-8') as f:runner = unittest.TextTestRunner(f, descriptions='20180929', verbosity=2)   # verbosity=1/2,参数2报告更详细runner.run(suite)       # 执行测试用例# 方法二:引入HTMLTestRunnerNew模块生成Html格式报告
import HTMLTestRunnerNewwith open('TestResult.html','wb+') as f:runner = HTMLTestRunnerNew.HTMLTestRunner(f, title='zy-TestReport', description='20180929', tester='zy')runner.run(suite)

3. 参数化

利用初始化函数进行参数化
  • test_case.py
import unittest
from zy.Code import Addclass TestAdd(unittest.TestCase):   # 测试用例必须继承自父类def setUp(self):        # 初始化测试环境print('Start')self.t = Add()def __init__(self, a, b, expected, methodName): # 参数化,初始化传参super(TestAdd, self).__init__(methodName)    # 超继承self.a = aself.b = bself.expected = expecteddef tearDown(self):     # 还原测试环境print('End')def test_add(self):r = self.t.add(self.a, self.b)try:                           # 异常处理self.assertEqual(r, self.expected)    # 添加断言,取自父类except AssertionError as e:print('Fail')raise e                    # 抛出异常print('测试结果是{}'.format(r))# def test_add_two_negative(self):#     r = self.t.add(-1, -3)#     self.assertEqual(r, -4)#     print('测试结果是{}'.format(r))## def test_add_two_zero(self):#     r = self.t.add(0, 0)#     self.assertEqual(r, 0)#     print('测试结果是{}'.format(r))# 运行测试用例
if __name__ == '__main__':unittest.main()
  • execute_case.py
import unittest
from zy.test_case import TestAdd   # 导入测试类
import HTMLTestRunnerNew# 测试数据
test_data = [[1, 2, 3, '两个整数相加'],[-1, -2, -3, '两个整数相加'],[0, 0, 0, '两个零相加'],[0, 1, 1, '一正一零相加'],[0, -1, -1, '一负一零相加']]# 创建测试套件
suite = unittest.TestSuite()   # 实例化即可# 添加用例# suite.addTest(TestAdd(4, 3, 7, 'test_add'))
for i in test_data:print('正在执行{}'.format(i[3]))suite.addTest(TestAdd(i[0], i[1], i[2], 'test_add'))# 执行用例并生成报告
# 方法二:引入HTMLTestRunnerNew模块生成Html格式报告with open('TestResult.html','wb+') as f:runner = HTMLTestRunnerNew.HTMLTestRunner(f, title='zy-TestReport', description='20180929', tester='zy')runner.run(suite)
3.2 excel读取
import openpyxlclass DoExcel:# 读取测试数据def do_excel(self):wb = openpyxl.load_workbook('zy001.xlsx')sheet = wb['table1']# 读取列表头header = []for i in range(1, 4):n = sheet.cell(1, i).valueheader.append(n)# 读取值data = []for i in range(2,4):dict = {}for j in range(1,4):dict[header[j-1]] = sheet.cell(i, j).valuedata.append(dict)return data# 回写测试结果def write_back(self):wb = openpyxl.load_workbook('zy001.xlsx')sheet = wb['table1']sheet.cell(4, 1).value = 12wb.save('zy001.xlsx')if __name__ == '__main__':test_data=DoExcel().do_excel()r = DoExcel().write_back()print(test_data)

4. 整体代码

## code
class Sub:def sub(self, a, b):return a - b## test_case
import unittest
from zy.code import Sub
from zy.do_excel import DoExcelclass TestSub(unittest.TestCase):def setUp(self):self.t = Sub()self.wb = DoExcel()def __init__(self, a, b, expected, title, case_id, methodName):super(TestSub, self).__init__(methodName)    ## 超继承self.a = aself.b = bself.expected = expectedself.title = titleself.case_id = case_id  ## 使用case_id避免重复def tearDown(self):passdef test_sub(self):print('用例标题:{}'.format(self.title))res = self.t.sub(self.a, self.b)try:self.assertEqual(res, self.expected)test_result = 'PASS'except AssertionError as e:test_result = 'FAIL'raise efinally:self.wb.write_back(self.case_id+1, res, test_result)## suite
import unittest
from zy.test_case import TestSub
from zy.do_excel import DoExcel
import HTMLTestRunnerNewtest_data = DoExcel().read_data()suite = unittest.TestSuite()
for item in test_data:suite.addTest(TestSub(item['param_a'], item['param_b'], item['ExpectedResult'], item['title'], item['case_id'], 'test_sub'))with open('TestResult.html', 'wb+') as file:runner = HTMLTestRunnerNew.HTMLTestRunner(file, title='减法测试', description='第二轮整体回归测试减法方法的正确性', tester='华杰-zy')runner.run(suite)
## do_excel
import openpyxlclass DoExcel:def read_data(self):wb = openpyxl.load_workbook('test_data.xlsx')sheet = wb['model1']header = []for column in range(1, 6):header.append(sheet.cell(1, column).value)test_data = []for row_id  in range(2, 10):row_data = {}for column_id in range(1, 6):row_data[header[column_id-1]] = sheet.cell(row_id, column_id).valuetest_data.append(row_data)return test_datadef write_back(self, row_id, ActualResult, TestResult):wb = openpyxl.load_workbook('test_data.xlsx')sheet = wb['model1']sheet.cell(row_id, 6).value = ActualResultsheet.cell(row_id, 7).value = TestResultwb.save('test_data.xlsx')if __name__ == '__main__':test_data = DoExcel().read_data()print(test_data)

5. 测试报告

5.1 报告样式

在这里插入图片描述

5.2 测试报告库文件-HTMLTestRunnerNew.py

下载链接: https://pan.baidu.com/s/1rZ1BFWraqgUKszKzBFpQnw 密码: 9eqt

http://www.lbrq.cn/news/2640763.html

相关文章:

  • 网站图片一般多大尺寸外贸软件排行榜
  • 阅读分享网站模板怎样免费建立自己的网站
  • 信阳做网站汉狮网络石家庄做网站推广排名的公司
  • 合肥网站建设设计枸橼酸西地那非片是什么
  • 淘宝联盟网站建设源码谷歌seo推广
  • 做网站收费 优帮云合肥网站建设优化
  • 网站建设进度公司搭建网站
  • 运营网站费用企业培训心得
  • 建设银行网站怎么短信转账软文发布软件
  • 兰州做网站哪家专业好用的搜索引擎
  • 网站建设商家宁波seo费用
  • 土木毕业设计代做网站优化营商环境发言材料
  • dede网站主页打不开网站服务器失去响应
  • 足球梦网站建设的基本思路东莞seo推广机构帖子
  • 什么可以用手机做网站上海seo顾问推推蛙
  • 互联网保险的典型案例电商seo是什么意思
  • html网站建设实例教程企业网站托管
  • 柳州在哪里做网站潍坊网站建设优化
  • 长春做网站哪家公司好网络营销技巧
  • 天猫做网站广州宣布5条优化措施
  • 做网站的私活排名怎么优化快
  • 武汉政府网站建设企业网站的推广方式和手段有哪些
  • 本地南京网站建设小红书seo排名帝搜软件
  • 广东网站建设公司报价昆明网络推广公司排名
  • 有限责任公司和股份有限公司成都百度推广和seo优化
  • 易企秀可以做网站吗杭州网站优化咨询
  • 酒仙网的网站推广方式免费b站推广入口2023
  • 营销网站建站公司站内关键词排名优化软件
  • 天水网站制作网络营销课程报告
  • 苏州手机网站建设东莞疫情最新通告
  • @CacheConfig​​当前类中所有缓存方法详解
  • 开源软件与文化:从嬉皮士精神到数字时代的协同创新
  • 计算机网络:固定网络位长度子网划分flsm和可变长子网掩码划分vlsm的区别
  • 消息队列的优缺点
  • 【数字图像处理系列笔记】Ch03:图像的变换
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”