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

粮食门户网站建设方案没有做等保的网站不能上线对吗

粮食门户网站建设方案,没有做等保的网站不能上线对吗,网站建设的维护工作有哪些,宜春建设局网站第十六章 测试基础 在编译型语言中#xff0c;需要不断重复编辑、编译、运行的循环。 在Python中#xff0c;不存在编译阶段#xff0c;只有编辑和运行阶段。测试就是运行程序。 先测试再编码 极限编程先锋引入了“测试一点点#xff0c;再编写一点点代码”的理念。 换而…第十六章 测试基础 在编译型语言中需要不断重复编辑、编译、运行的循环。 在Python中不存在编译阶段只有编辑和运行阶段。测试就是运行程序。 先测试再编码 极限编程先锋引入了“测试一点点再编写一点点代码”的理念。 换而言之测试在先编码在后。这也称为测试驱动的编程。 准确的需求说明 要阐明程序的目标可编写需求说明也就是描述程序必须满足何种需求的文档或便条。 测试程序就是需求说明可帮助确保程序开发过程紧扣这些需求。 假设你要编写一个模块其中只包含一个根据矩形的宽度和高度计算面积的函数。动手编写代码前编写一个单元测试其中包含一些你知道答案的例子。 文件area.py内容如下 def rect_area(height,width):return height*height #很显然不对同目录下的test.py内容如下 from area import rect_area height 3 width 4 correct_answer 12 answer rect_area(height,width) if answer correct_answer:print(Test passed) else:print(Test failed) 很显然输出结果为Test failed 接下来你可能检查代码看看问题出在什么地方并将返回的表达式替换为height * width。做好应对变化的准备 自动化测试不仅可在你编写程序时提供极大的帮助还有助于在你修改代码时避免累积错误这在程序规模很大时尤其重要。 代码覆盖率 覆盖率coverage是一个重要的测试概念。运行测试时很可能达不到运行所有代码的理想状态。实际上最理想的情况是使用各种可能的输入检查每种可能的程序状态但这根本不可能做到。优秀测试套件的目标之一是确保较高的覆盖率为此可使用覆盖率工具它们测量测试期间实际运行的代码所占的比例。 Python自带的程序trace.py。 要确保较高的测试覆盖率方法之一是秉承测试驱动开发的理念。只要能确保先编写测试再编写函数就能肯定每个函数都是经过测试的。 测试四部曲 1确定需要实现的新功能。可将其记录下来再为之编写一个测试。 2编写实现功能的框架代码让程序能够运行不存在语法错误之类的问题但测试依然无法通过。 3 编写让测试刚好能够通过的代码。 4改进重构代码以全面而准确地实现所需的功能同时确保测试依然能够成功。 测试工具 doctest 文件my_math.py def square(x):return x * xif name __main__:import doctest, my_mathdoctest.testmod(my_math)对模块doctest中的函数testmod进行测试 python my_math.py 先显然并没有什么显示输出 函数doctest.testmod读取模块中的所有文档字符串查找看起来像是从交互式解释器中摘取的示例再检查这些示例是否反映了实际情况。 为获得更多的输出可在运行脚本时指定开关-vverbose意为详尽。 python my_math.py -v 输入如下 Running my_math.__doc__ 0 of 0 examples failed in my_math.__doc__ Running my_math.square.__doc__ Trying: square(2) Expecting: 4 Ok Trying: square(3) Expecting: 9 ok 0 of 2 examples failed in my_math.square.__doc__ 1 items had no tests: test 1 items passed all tests: 2 tests in my_math.square 2 tests in 2 items. 2 passed and 0 failed. Test passed.假设要使用Python幂运算符而不是乘法运算符将x * x替换为x ** 2再运行脚本对代码进行测试。 输出如下 ***************************************************************** Failure in example: square(3) from line #5 of my_math.square Expected: 9 Got: 27 ***************************************************************** 1 items had failures: 1 of 2 in my_math.square ***Test Failed*** 1 failures.unittest doctest使用起来很容易但unittest基于流行的Java测试框架JUnit更灵活、更强大。 一个使用框架unittest的简单测试 import unittest, my_math class ProductTestCase(unittest.TestCase):def test_integers(self):for x in range(-10, 10):for y in range(-10, 10):p my_math.product(x, y)self.assertEqual(p, x * y, Integer multiplication failed)def test_floats(self):for x in range(-10, 10):for y in range(-10, 10):x x / 10y y / 10p my_math.product(x, y)self.assertEqual(p, x * y, Float multiplication failed)if __name__ __main__: unittest.main()运行这个测试脚本将引发异常指出模块my_math不存在。 模块unittest区分错误和失败。错误指的是引发了异常而失败是调用failUnless等方法的结果。 文件my_math.py def product(x,y):pass#框架代码没什么意思。运行前面的测试将出现两条FAIL消息输出如下 FF FAIL: test_floats (__main__.ProductTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File test_my_math.py, line 17, in testFloats self.assertEqual(p, x * y, Float multiplication failed) AssertionError: Float multiplication failed FAIL: test_integers (__main__.ProductTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File test_my_math.py, line 9, in testIntegers self.assertEqual(p, x * y, Integer multiplication failed) AssertionError: Integer multiplication failed ---------------------------------------------------------------------- Ran 2 tests in 0.001s FAILED (failures2)开头两个字符两个F表示两次失败。 接下来需要让代码管用。修改文件my_math.py def product(x,y):return x * y再次运行前面的测试输出如下 .. ---------------------------------------------------------------------- Ran 2 tests in 0.015s OK开头的两个句点表示测试。 再次修改函数product即修改文件my_math.py def product(x, y):if x 7 and y 9:return An insidious bug has surfaced!else:return x * y再次运行前面的测试脚本将有一个测试失败。输出如下 .F FAIL: test_integers (__main__.ProductTestCase) ---------------------------------------------------------------------- Traceback (most recent call last): File test_my_math.py, line 9, in testIntegers self.assertEqual(p, x * y, Integer multiplication failed) AssertionError: Integer multiplication failed ---------------------------------------------------------------------- Ran 2 tests in 0.005s FAILED (failures1)超越单元测试 两个工具源代码检查和性能分析。 源代码检查是一种发现代码中常见错误或问题的方式有点像静态类型语言中编译器的作用但做的事情要多得多。 性能分析指的是搞清楚程序的运行速度到底有多快。 使用PyChecker 和 PyLint 检查源代码 PyCheckerpychecker.sf.net用于检查Python源代码的唯一工具能够找出诸如给函数提供的参数不对等错误。 标准库中还有tabnanny但没那么强大只检查缩进是否正确。 之后出现了PyLintpylint.org它支持PyChecker提供的大部分功能还有很多其他的功能如变量名是否符合指定的命名约定、是否遵守了自己的编码标准等。 使用Distutils来安装可使用如下标准命令。 python setup.py install PyLint也可使用pip来安装。 使用PyChecker来检查文件可运行这个脚本并将文件名作为参数 pychecker file1.py file2.py ... 使用PyLint检查文件时需要将模块或包名作为参数pylint module PyChecker和PyLint都可作为模块分别是pychecker.checker和pylint.lint导入 导入pychecker.checker时它会检查后续代码包括导入的模块并将警告打印到标准输出。 模块pylint.lint包含一个文档中没有介绍的函数Run这个函数是供脚本pylint本身使用的。它也将警告打印出来而不是以某种方式将其返回。 使用模块subprocess调用外部检查器 import unittest, my_math from subprocess import Popen, PIPEclass ProductTestCase(unittest.TestCase):def test_with_PyChecker(self):cmd pychecker, -Q, my_math.__file__.rstrip(c)pychecker Popen(cmd, stdoutPIPE, stderrPIPE)self.assertEqual(pychecker.stdout.read(), )def test_with_PyLint(self):cmd pylint, -rn, my_mathpylint Popen(cmd, stdoutPIPE, stderrPIPE)self.assertEqual(pylint.stdout.read(), )if __name__ __main__: unittest.main()对于pychecker开关-Qquiet意为静默 对于pylint开关-rn其中n表示no以关闭报告这意味着将只显示警告和错误。 命令pylint直接将模块名作为参数 让pychecker正确地运行需要获取文件名。使用了模块my_math的属性__file__并使用rstrip将文件名末尾可能包含的c删掉因为模块可能存储在.pyc文件中 模块my_math文件my_math.py __revision__ 0.1 def product(factor1, factor2):The product of two numbersreturn factor1 * factor2性能分析 在编程中不成熟的优化是万恶之源。 如果程序的速度达不到你的要求必须优化就必须首先对其进行性能分析。 标准库包含一个卓越的性能分析模块profile还有一个速度更快C语言版本名为cProfile。 这个性能分析模块使用起来很简单只需调用其方法run并提供一个字符串参数。 这里照样使用了以前的文件my_math.py import cProfile from my_math import product cProfile.run(product(1, 2))这将输出如下信息各个函数和方法被调用多少次以及执行它们花费了多长时间。如果通过第二个参数向run提供一个文件名如’my_math.profile’分析结果将保存到这个文件中。然后就可使用模块pstats来研究分析结果了。 import pstats p pstats.Stats(my_math.profile)小结 概念描述测试驱动编程大致而言测试驱动编程意味着先测试再编码。有了测试就能信心满满地修改代码这让开发和维护工作更加灵活。模块doctest和unittest需要在Python中进行单元测试时这些工具必不可少。模块doctest设计用于检查文档字符串中的示例但也可轻松地使用它来设计测试套件。为让测试套件更灵活、结构化程度更高框架unittest很有帮助。PyChecker和PyLint这两个工具查看源代码并指出潜在和实际的问题。它们检查代码的方方面面——从变量名太短到永远不会执行的代码段。只需编写少量的代码就可将它们加入测试套件从而确保所有修改和重构都遵循了你采用的编码标准。性能分析如果很在乎速度并想对程序进行优化仅当绝对必要时才这样做应首先进行性能分析使用模块profile或cProfile来找出代码中的瓶颈。 本章介绍的新函数 函数描述doctest.testmod(module)检查文档字符串中的示例还接受很多其他的参数unittest.main()运行当前模块中的单元测试profile.run(stmt[,filename])执行语句并对其进行性能分析可将分析结果保存到参数filename指定的文件中
http://www.pierceye.com/news/613495/

相关文章:

  • 简单个人网站wordpress插件查询
  • 上海做网站搜索一下马来西亚的网站建设的竞争对手的分析
  • 建站优化易下拉系统163邮箱登录注册
  • c 做网站电子商务平台中搜索词拆解包括
  • 腾讯云10g数字盘做网站够么四川省建设人才网
  • 批量 网站标题中海园林建设有限公司网站
  • 鲜花网站数据库建设免费律师咨询
  • 团队网站建设哪家便宜制作公司网站流程
  • 青龙桥网站建设企业网页是什么
  • 上海网站建设备案号怎么恢复法律咨询网站开发
  • 烟台做网站价格动力网站建设
  • 北戴河网站建设墨刀制作网页教程
  • 成都网站设计开发做得好微信商城怎么开发
  • 江西省城乡建设培训网-官方网站上海建设集团有限公司
  • 凡科网站设计模板grimhelm wordpress
  • 自己做的网站不备案行吗建筑工程集团有限公司
  • 网站初期 权重怎么做彩票类网站开发
  • 南通网站定制公司服务器网站建设维护合同
  • 亳州做商标网站的公司免费的网站模板
  • 西南城乡建设部网站首页python3做网站教程
  • 网站首页设计欣赏个人电影网站建设
  • 导航网站建设怎么给网站图片加alt
  • 备案成功后怎么建设网站宠物喂养网页设计模板以及代码
  • 东莞哪家网站建设比较好wordpress更改语言设置
  • 如何找做网站的客户wordpress适合视频网站吗
  • 网站建设的业务流程图拔萝卜视频播放在线观看免费
  • 建个网站要多少钱高安网站制作
  • dw设计模板百度ocpc如何优化
  • 苏宁网站优化与推广html教程网站
  • 怎么做网站网页免费高清屏幕录像