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

揭阳城乡建设局网站巴中手机网站建设

揭阳城乡建设局网站,巴中手机网站建设,塘沽做网站,免费培训课程以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、什么是单元测试#xff1f; 按照阶段来分#xff0c;一般就是单元测试#xff0c;集成测试#xff0c;系统测试#xff0c;验收测试。单元测试是对单个模块、单个类或者单个函数进行测试。 将访…以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、什么是单元测试   按照阶段来分一般就是单元测试集成测试系统测试验收测试。单元测试是对单个模块、单个类或者单个函数进行测试。 将访问接口的过程封装在函数里面; 接口测试就变成了单元测试 单元测试就是通过传参对某个模块、某个类、某个函数进行结果输出后验证的测试。 2、为什么要做单元测试   1.单元测试之后才是集成测试单个的功能模块测试通过之后才能把单个功能模块集成起来做集成测试为了从底层发现bug减少合成后出现的问题。 2.越早发现bug越好否则问题累计到后期如果做错了就要推倒重来对于时间和人力成本来说非常耗费精力。 对于我们测试来说:单元测试是为了执行测试用例。 3、怎么做单元测试   Python里有两个单元测试类 1.UnittestPython自带 2.Pytest下载安装 前者多用于接口自动化项目用后者多用于WEB自动化项目、APP自动化项目。 二、unittest模块说明 1、unittest简介   unittest是Python自带的单元测试框具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件可以用来作自动化测试框架的用例组织执行框架。 unittest框架的特性 提供用例组织与执行当测试用例只有几条的时候可以不考虑用例的组织但是当测试用例数量较多时此时就需要考虑用例的规范与组织问题。unittest单元测试框架就是用来解决这个问题的。 提供丰富的断言方法既然是测试就有一个预期结果和实际结果的比较问题。比较就是通过断言来实现unittest单元测试框架提供了丰富的断言方法通过捕获返回值并且与预期值进行比较从而得出测试通过与否。 提供丰富的日志每一个失败用例我们都希望知道失败的原因所有用例执行结束我们有希望知道整体执行情况比如总体执行时间失败用例数成功用例数。unittest单元测试框架为我们提供了这些数据。 2、unittest组成 unittest单元测试中最核心的四个部分是TestCase测试用例,TestSuite测试套件,TestRunner测试运行器,TestFixture测试环境数据准备和清理。 1.TestCase测试用例:一个TestCase的实例就是一个测试用例。什么是测试用例呢就是一个完整的测试流程。包括测试前准备环境的搭建(setUp)、实现测试过程的代码(run)以及测试后环境的还原(tearDown)。单元测试(Unittest)的本质也就在这里一个测试用例就是一个完整的测试单元通过运行这个测试单元可以对某一个功能进行验证。   2.TestSuite测试套件一个功能的验证往往需要多个测试用例可以把多个测试用例集合在一起执行这就产生了测试套件TestSuite的概念。TestSuite用来组装单个测试用例。可以通过addTest加载TestCase到TestSuite中从而返回一个TestSuite实例。而且TestSuite也可以嵌套TestSuite。 3.TestLoader测试用例加载器用来加载TestCase到TestSuite中的其中loadTestsFrom__()方法用于寻找TestCase并创建它们的实例然后添加到TestSuite中返回TestSuite实例 4.TextTestRunner执行测试用例用来执行测试用例其中run(test)会执行TestSuite/TestCase中的run(result)方法并将测试结果保存到TextTestResult实例中包括运行了多少测试用例成功多少失败多少等信息 5.Test Fixture测试环境数据准备和清理一个测试用例的初始化准备及环境还原主要是setUp() 和 tearDown()方法比如说在测试用例中需要访问数据库那么可以在setUp()中建立数据库连接以及进行一些初始化在tearDown()中清除在数据库中产生的数据然后关闭连接。注意tearDown的过程很重要要为以后的TestCase留下一个干净的环境。 3、unittest核心工作原理 unittest的静态类图 大体流程编写TestCase由TestLoader加载TestCase到TestSuite然后由TextTestRunner来运行TestSuite最后将运行的结果保存在TextTestResult中。 三、unittest单元测试 1、实现思路   1.导入unittest模块、 被测文件或者其中的类 2.创建一个测试类并继承unittest.TestCase方法 3.重写setUp和tearDown方法(如果有初始化条件和结束条件)。若setup()成功运行无论测试方法是否成功都会运行tearDown () 4.定义测试函数函数名以test_开头以识别测试用例 5.调用unittest.main()方法运行测试用例 6.用例执行后需要判断用例是Pass还是Fail可以用unittest.TestCase模块的:断言 断言就是比对预期结果。如果不加断言没有结果对比需要手动去检查运行的结果是否符合预期。 2、使用介绍   要想使用unittest单元测试框架必须得先导入import unittest 查看unittest源码 import unittest print(help(unittest)) 从打印结果中提取出unittest简易的例子 import unittest class IntegerArithmeticTestCase(unittest.TestCase):def testAdd(self): # test method names begin with testself.assertEqual((1 2), 3)self.assertEqual(0 1, 1)def testMultiply(self):self.assertEqual((0 * 10), 0)self.assertEqual((5 * 8), 40) if __name__ __main__:unittest.main() 四、unittest实例 1、TestCase(测试用例)   看了官方代码后我们自己写个例子熟悉下并总结出规律 import unittest class TestDemo(unittest.TestCase):# test_sub用例def test_sub(self):self.assertEqual(2-1,1)# test_add用例def test_add(self):self.assertEqual(21,3) if __name__ __main__:# unittest.main()是运行主函数unittest.main(verbosity2) 运行结果为 test_add (__main__.TestDemo) ... ok test_sub (__main__.TestDemo) ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.000s OK 接下来我们来总结一些规律 1.使用unittest前需导入unittest框架。 2.TestDemo这个类必须继承unittest.TestCaseTestCase类所有测试用例类继承的基类。 3.类内的方法必须以test开头比如test_add。 4.断言assertEqual用来断言预期结果和实际结果是否一致。当然unittest还包含很多其他断言方法后面统一介绍。 5.用例执行顺序。在代码中test_sub方法写在test_add前但实际test_add比test_sub先运行。为什么呢unittest执行测试用例默认是根据ASCII码的顺序加载测试用例数字与字母的顺序为0-9A-Za-z。 6.verbosity是一个选项,表示测试结果的信息复杂度有0、1、2 三个值。verbosity0 : 你只能获得测试用例数总的结果verbosity1 (默认模式): 在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”verbosity2 (详细模式):测试结果会显示每个测试用例的所有相关的信息。 如下在测试用例中写入断言 import unittest #测试MathMethod类 class TestMathMethod(unittest.TestCase):#编写测试用例def test_add_two_positive(self): #测试两个正数相加resMathMethod(1,1).add()print(11的结果是,res)self.assertEqual(2,res,两个正数相加出错) #断言def test_add_two_zero(self): #测试两个0相加res MathMethod(0, 0).add()print(00的结果是, res)self.assertEqual(0, res, 两个0相加出错) #断言def test_add_two_negative(self): #测试两个负数相加res MathMethod(-1, -1).add()print(-1(-1)的结果是, res)self.assertEqual(-2, res, 两个负数相加出错) #断言 if __name__ __main__:unittest.main() 测试用例里面的setUp函数与tearDown函数的使用: class TestMathMethod(unittest.TestCase): def setUp(self):print(开始准备执行测试用例)def tearDown(self):print(结束)#编写测试用例 def test_add_two_positive(self): #测试两个正数相加resMathMethod(1,1).add()print(11的结果是,res) setUp函数初始化环境执行每条用例之前都要执行setUp函数下面的代码每次都要执行; tearDown函数清洗环境执行每条用例之后都要执行tearDown函数下面的代码每次都要执行; setUp()、tearDown()是TestCase里的方法写在测试类中就是方法的重写。 执行顺序是setUp-testA-tearDown-setUp-testBtearDown 2、TestSuit(测试集) 当测试用例全部写完但是只想执行其中部分可以使用TestSuit()来收集测试用例。 import unittest from xxx import xxx #测试用例的类 suiteunittest.TestSuit() suite.addTest(测试用例的类(用例名称1)) #用例名称用字符串的形式传入 suite.addTest(测试用例的类(用例名称2)) suite.addTest(测试用例的类(用例名称3)) ..... 3、TestLoader(加载测试用例)   方式一通过测试类来加载用例loadTestsFromTestCase 一次性加载测试用例类名1下的所有用例。 import unittestfrom xxx import xxx #测试用例的类suiteunittest.TestSuit()loaderunittest.TestLoader()suite.addTest(loader.loadTestsFromTestCase(测试用例类名1)) #测试用例类名直接传入 方式二通过测试类所在的模块加载用例loadTestsFromModule 一次性加载测试用例模块名下的所有用例。 import unittest from xxx import xxx #测试用例模块 suiteunittest.TestSuit() loaderunittest.TestLoader() suite.addTest(loader.loadTestsFromTestCase(测试用例模块名)) #测试用例模块名直接传入4、生成测试报告   方式一使用unittest自带的TextTestRunner生成测试报告文本格式不推荐使用。 TextTestRunner是一个以文本形式展示测试结果的测试运行程序类 stream 输出报告的路径默认输出控制台 verbosity 控制输出报告的详细程度从0-2越来越详细 方式二使用第三方模块HTMLTestRunnerNew(生成HTML格式的测试报告推荐使用)。 file文件 verbosity详细程度 title标题 description描述 tester作者 with open(接口测试报告.html,wb) as file:runner HTMLTestRunnerNew.HTMLTestRunner(streamfile, verbosity2,title接口自动化测试报告,description接口测试V1,testerITester软件测试小栈)runner.run(suite) 方式三使用unittest.defaultTestLoader.discover() 模糊匹配。 import unittest import HTMLTestRunnerNewall_testcasesunittest.defaultTestLoader.discover(contants.testcases_dir, patterntest_*.py,top_level_dirNone) #利用上下文管理器自动关闭资源 with open(contants.reports_html,wb) as file: #选择绝对路径把文件打开写进内容 (报告的文件名直接写在路径里面)runnerHTMLTestRunnerNew.HTMLTestRunner(streamfile,title接口自动化测试报告,description接口测试V1,testerITester软件测试小栈)runner.run(all_testcases) 总结本文主要介绍单元测试unittest模块特性、大致流程、源码及实战例子。
http://www.hkea.cn/news/14487629/

相关文章:

  • 做网站用什么语言山西seo谷歌关键词优化工具
  • 自己制作网站房产网站建设机构
  • 自己创建网站403磁力王
  • 网站维护运营优化公司超轻粘土做动漫网站
  • 涿州网站建设公司有哪些个人网站如何做淘宝客
  • 网站建设与管理试题国外wordpress主题破解版
  • 自己可以做一个网站吗Wordpress福利资源模板
  • php 公司网站源码怎么停止网站
  • it公司做网站用什么软件重庆市证书查询官网
  • 广州专业的网站建设公司深圳ui设计公司
  • 网站建设上传与发布流程个人主题网站设计
  • 网站开发好学不淄博个人承接网站制作
  • 视频网站建设技术方案云南微网站搭建
  • 站长统计是什么意思微信小程序赚钱
  • ps 做ui比较好的网站有哪些贵港北京网站建设
  • 购物网站建设价格陕西建设厅继续教育网站
  • 网站优缺点做毕业设计的参考文献网站
  • 网站无法导入照片郑州网站建设选智巢
  • 成都电商网站门窗东莞网站建设技术支持
  • 个人网站做排名温州做网站建设
  • da面板做两个网站电商网站建设那家好
  • 做网站页面设计报价dw做旅游网站模板下载
  • 福田网站建设龙岗网站建设罗湖网站建设福田网站建设百度搜索引擎录入网站
  • 在中国建设银行的网站上可以转账吗网站服务器制作
  • 手机网站设计背景图片教程网网站源码php
  • 网站建设总结报告专门做外国的网站吗
  • 做传感器的网站郴州市北湖建设局网站
  • 厦门专业做网站的公司网站不同颜色
  • 顺德网站制作案例咨询做设计.不抠图网站
  • 巩义网站建设价格wooyun wordpress